0

假设我有这个属性:

@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),我以为桥保留演员确实强制保留对象,如何解决这个问题?

4

2 回答 2

0

您可以尝试使用 'id' 类型而不是 'void' 类型。

“id”也是抽象的。

于 2012-12-06T03:10:35.533 回答
0

你得到 nil (或随机垃圾)的原因是你分配并用 10 个元素填充了你的数组,然后你尝试访问第 40 个元素。

于 2012-12-06T13:09:14.663 回答