缓存池创建cell有问题
首先这个问题并不是tableView的cell缓存池有问题,只是我不知道怎么描述了。看代码吧
//LsTuangouAnnotationView的实例化类方法,调用返回LsTuangouAnnotationView实例
+(instancetype) annotationViewWithMapView:(MKMapView *)mapView
{
static NSString *ID = @"tuangou";
//从缓冲池取值
LsTuangouAnnotationView *annoView = (LsTuangouAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:ID];
if (annoView == nil) {
annoView = [[LsTuangouAnnotationView alloc] initWithAnnotation:nil reuseIdentifier:ID];
NSLog(@"fanhu1");
}
NSLog(@"fanhu2");
return annoView;
}
----------------
//调用部分代码
LsTuangouAnnotationView *annoView = [LsTuangouAnnotationView annotationViewWithMapView:mapView];
annoView.annotation = annotation;
return annoView;
好吧,开始描述我的问题。上面的代码是在mapView的缓存池中取出为"tuangou"的View,正常情况是可能有值也可能没有值,所以需要判断。但是问题就在这,从if (annoView == nil)
到最后的return annoView;
都没有执行,是的,直接跳过了。但是我在缓存池取值的时候并没有返回,所以这里不知道怎么回事了。
好吧,其实这是李明杰老师的mapKit的使用那里的代码,这里的代码是一样的,调用也是一样的,我认为也没什么问题,但是就是不执行后面的,完全不知道怎么回事。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
连return语句都没有被执行么,这似乎不太可能的。
你是想说if语句块没有被执行么。
如果没有执行可能是因为你在Storyboard中的设置了原型cell的重用标识符为tuangou造成的。
没有问题啊,队列中没有该标识的CELL,就创建个新的CELL,然后跳出~
MapView上加了annotation坐标点的时候才会回调啊,这是个回调方法,地图上加了坐标点的时候才会调用这个函数来生成相应的view。if是用来判断前一句里没有从缓存池里复用到已经生成过的Annotationview的时候才会再去初始化一个