我有一个UIViewController
包含这个属性:
@property (weak, nonatomic) IBOutlet UITableView *customerTableView;
在 UIViewController 的viewDidLoad
方法中,我有以下内容:
- (void)viewDidLoad
{
[super viewDidLoad];
// ...
CustomerTableViewDataSource *dataSource = [[CustomerTableViewDataSource alloc]
init];
[dataSource setData:customersSource];
[customerTableView setDataSource:dataSource];
}
我在启用 NSZombies 的情况下收到此消息:
*** -[CustomerTableViewDataSource numberOfSectionsInTableView:]: message sent to
deallocated instance 0x3e07a0
释放的实例地址与数据源相同。
数据源没有“粘住”有什么原因吗?
使用模拟器和 Zombies,我看到引用正在发布viewDidLoad
,我认为这并不奇怪,因为我在该方法中声明它并且它应该超出范围,但是我认为调用setDatasource
会增加 refct。好吧,它显然没有。
有什么办法可以改变这种行为吗?
注意:如果我创建一个 ivar 并存储数据源,一切正常,但我觉得这让我的课堂变得混乱。这只是城市里的生活吗?