比方說,我有這樣的特性:力ARC保留一個空指針的對象引用
@property (nonatomic, readwrite) void*** array;
和init用Objective-C對象的數組:
- (id) init
{
if(self=[super init])
{
array= malloc(10*sizeof(void**));
for(NSUInteger i=0; i<10; i++)
{
array[i]= malloc(10*sizeof(void*));
for(NSUInteger j=0; j<10; j++)
{
array[i][j]= (__bridge_retained void*) @"Hello";
}
}
}
return self;
}
後來我發現,該對象不是真的保留:
Custom* c=[Custom new];
NSLog(@"%@",(__bridge NSString*)c.array[40][40]);
這打印(null),我認爲橋樑保留鑄造力量保留對象,如何去解決這個問題?
我很困惑。爲什麼不只是輸入正確? – Chuck
你爲什麼要這樣的指針?爲什麼不使用NSArray,你似乎仍然持有NSObject?此外,它可能會打印零或其他垃圾,因爲它沒有40個元素。 –
這是問題所在。我沒有使用id來測試「強制ARC保留對象」的方式。 –