Disons que j'ai cette propriété:force ARC de conserver une référence d'objet par un pointeur vide
@property (nonatomic, readwrite) void*** array;
et initialiser le tableau avec des objets 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;
}
Je trouve que les objets ne sont pas vraiment retenus:
Custom* c=[Custom new];
NSLog(@"%@",(__bridge NSString*)c.array[40][40]);
Ceci imprime (nul), je pensais que le pont retenu moulé a forcé à retenir l'objet, comment contourner cela?
Je suis confus. Pourquoi ne pas simplement le taper correctement? – Chuck
Pourquoi voudriez-vous un pointeur comme ça? Pourquoi ne pas utiliser NSArray, vous semblez contenir NSObjects de toute façon? En outre, il est probablement l'impression de nulle ou d'autres déchets parce que vous n'avez pas 40 éléments à l'intérieur. –
Indiqué c'était le problème. Je n'ai pas utilisé id juste pour tester comment "forcer ARC à conserver des objets". –