首页 > 缓存池创建cell有问题

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


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

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

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


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


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

【热门文章】
【热门文章】