私は UITableView をテストしています:(ARCの下で)以下のコード、
- (void)viewDidLoad
{
[super viewDidLoad];
UnitTest *unitTest = [[UnitTest alloc] init];
UITableView *tableView = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStylePlain];
tableView.delegate = unitTest;
tableView.dataSource = unitTest;
[self.view addSubview:tableView];
}
Object UnitTest に tableView デリゲートを実装しました。プロジェクトを実行すると、エラーがフェッチされます:
libobjc.A.dylib`objc_msgSend:
0x30f13f68: teq.w r0, #0
0x30f13f6c: beq 0x30f13faa ; objc_msgSend + 66
0x30f13f6e: push.w {r3, r4}
0x30f13f72: ldr r4, [r0] // Thread 1: BAD_EXE_ACCESS ....
0x30f13f74: lsr.w r9, r1, #2
0x30f13f78: ldr r3, [r4, #8]
0x30f13f7a: add.w r3, r3, #8
0x30f13f7e: ldr r12, [r3, #-8]
コンソールには何もありません。
ラインを変えると
UnitTest *unitTest = [[UnitTest alloc] init];
に
UnitTest *unitTest = [UnitTest sharedUnitTest]; // i have implement this singleton
すべて正常に動作します!! どうして