PDF 课件和源代码下载地址:
作者回复: 是的,UICollectionView的dequeueReusableCellWithReuseIdentifier 比UITableView的更加方便,UITableView中这个方法是不会创建新的cell的,但是通过UICollectionView中对该方法的Discussion我们可以看到,使用这个方法,当有可用的cell时返回可用的cell,如果没有可用的则会根据之前我们设置的class自动创建一个新的返回。
作者回复: 有可能,跟着代码自动补全容易写成UICollectionViewLayout
作者回复: 我这边新建立了个工程,照着15分50秒的代码重写了一遍,没发现问题。方便上传下你的代码么,我帮看一下。另外我再粘贴一遍我写的你也可以看看哪里不同。@interface ViewController ()<UICollectionViewDelegate, UICollectionViewDataSource> @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc] init]; UICollectionView *collectionView = [[UICollectionView alloc] initWithFrame:self.view.bounds collectionViewLayout:flowLayout]; collectionView.delegate = self; collectionView.dataSource = self; [collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"UICollectionViewCell"]; [self.view addSubview:collectionView]; } #pragma mark - - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{ return 20; } - (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{ UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"UICollectionViewCell" forIndexPath:indexPath]; cell.backgroundColor = [UIColor redColor]; return cell; }
作者回复: 没太理解具体的问题,但是对于懒加载,从UI实现上基本可以算作是代码习惯的范畴。个人感觉对于明确的UI布局,其实懒加载和直接加载区别不是很大,对于那些可变的View,我们使用懒加载可以避免不必要的开销,当然一个View的开销也不会太大,一般不使用懒加载也是在可接受的范围。而对于一些较大和较为复杂的类,我们可以使用懒加载来优化不必要的内存开销。所以对于这节课直观上没有太理解您的问题,是否可以具体的描述下~
作者回复: 是的 section只有一个的话,那么section一只是0. 而row和item本质上其实是一样的。那么为什么有两个呢,在视频中也简单介绍了,row是针对tableview的,到了collectionView,每一行可以有多个item布局,所以使用row不是特别到合适,所以整体到函数名都切换到了item
作者回复: 能上传下代码么? 我帮看下
作者回复: 我clone了代码,是在MZVideoCollectionViewController中么?我这边运行是没问题的,没有报错,同时点击视频tab也是可以的,看了下代码的逻辑应该也没有错误。clean下项目试试呢?
作者回复: 理论上是自己随便填,他的目的是为了在tableView内部进行cell重用的时候,区别不同的cell Class,让同种id的cell才能进行复用,达到最大的效率。当然作为key,不管针对什么样的业务逻辑考虑,还是都有一些习惯的,比如合理的命名,以及一些语言层面的优化等。