缓存池创建cell有问题

发布于 2022-09-01 07:24:46 字数 1082 浏览 39 评论 0

首先这个问题并不是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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

颜漓半夏 2022-09-08 07:24:47

连return语句都没有被执行么,这似乎不太可能的。

你是想说if语句块没有被执行么。

如果没有执行可能是因为你在Storyboard中的设置了原型cell的重用标识符为tuangou造成的。

樱花坊 2022-09-08 07:24:47

没有问题啊,队列中没有该标识的CELL,就创建个新的CELL,然后跳出~

疧_╮線 2022-09-08 07:24:47

MapView上加了annotation坐标点的时候才会回调啊,这是个回调方法,地图上加了坐标点的时候才会调用这个函数来生成相应的view。if是用来判断前一句里没有从缓存池里复用到已经生成过的Annotationview的时候才会再去初始化一个

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文