ios - 缓存池创建cell有问题
PHPz
PHPz 2017-04-17 14:40:39
[iOS讨论组]

首先这个问题并不是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的使用那里的代码,这里的代码是一样的,调用也是一样的,我认为也没什么问题,但是就是不执行后面的,完全不知道怎么回事。

PHPz
PHPz

学习是最好的投资!

全部回复(3)
PHP中文网

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

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

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

天蓬老师

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

大家讲道理

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号