Suppose, I have C-arrays defined as follows:

int count = [dictionary count];
id __unsafe_unretained values[count];
id __unsafe_unretained keys[count];


I fill these arrays with:

[dictionary getObjects:values andKeys:keys];



Now, I would like to "reuse" these arrays through holding objects maintained by 
ARC (if possible):

for (int i = 0; i < count; ++i) {
    keys[i] = [keys[i] copy];
    values[i] = [values[i]] copy];
}
NSDictionary *other = [NSDictionary dictionaryWithObjects:values forKeys:keys 
count:count];



This won't work in ARC, since the arrays are declared __unsafe_unretained and 
this would cause the newly created object immediately be deallocated once it is 
assigned to the array's element.

What I would like to avoid is to use separate arrays (appropriately declared), 
and also avoid to disable ARC and maintain the release counts manually.

Is there a way to extend the lifetime of the created objects, or is there a way 
to "re-declare" the arrays so that ARC can maintain the references - or is 
there any other simple "trick"?


Thanks for suggestions!  ;)

Andreas 
_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to