假设我有这个属性:
@property (nonatomic, readwrite) void*** array;
使用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),我以为保留了强制保留对象的桥,如何绕过这个?
答案 0 :(得分:0)
您可以尝试使用'id'类型而不是'void'类型。
'id'也是抽象的。
答案 1 :(得分:0)
你得到nil(或随机垃圾)的原因是因为你用10个元素分配和填充你的数组,然后你尝试访问第40个元素。