私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
割り当て解除されたインスタンス アドレスは、データ ソースと同じです。
データ ソースが「固定」されていない理由はありますか?
シミュレーターとゾンビを使用すると、参照が でリリースされていることがわかります。viewDidLoad
これは、そのメソッドで宣言したため、当然のことであり、範囲外になるはずですが、呼び出すsetDatasource
とrefctが増加すると思います。まあ、どうやらそうではありません。
この動作を変更する方法はありますか?
注: ivar を作成してデータ ソースを保存すればすべて機能しますが、クラスが乱雑になっているように感じます。これは都市での生活ですか?