我有以下代码与以下xib:
@property (nonatomic, retain) IBOutlet UITableViewCell *cellLoadMore;
当我尝试NSLog cellLoadMore时,它返回null,但是,当我尝试NSLog视图时,它有值。 cellLoadMore的问题可能是什么,返回null?
以下是我的代码:
- (void)viewDidLoad{
[super viewDidLoad];
NSLog(@"cell load more %@", cellLoadMore_);
NSLog(@"view %@", self.view);
}
控制台打印:
cell load more (null)
view <UITableView: 0x1284200; frame = (0 20; 320 460); clipsToBounds = YES; autoresize = W+H; layer = <CALayer: 0xa393b0>; contentOffset: {0, 0}>
注意:我的类是UITableView的子类。
答案 0 :(得分:1)
我认为这就是正在发生的事情。您正在创建一个属性和一个实例变量,但您没有正确地合成该属性。默认情况下,在Xcode 4.4+上,该属性将合成为_cellLoadMore
而不是cellLoadMore_
。在旧版本中,如果仅使用@synthesize cellLoadMore
,则变量将为cellLoadMore
。所以基本上,如果你没有一行显示@synthesize cellLoadMore = cellLoadMore_
,那么你有两个不同的变量。
答案 1 :(得分:0)
在加载单元格之前,您可能正在“记录”。第一次真正使用时,将加载该单元格(google用于“延迟加载”)。如果您访问单元格的视图,它真的使用,因此真正加载。您可以在此之后记录视图和单元格,它不应再为null。
答案 2 :(得分:0)
我有时遇到过这个问题,并设法通过将我的控制器从UITableViewController的子类更改为使用UITableview委托的UIViewController来解决它。 这很烦人。