I'm trying to pass pointer to pointer to a method, but apparently ARC has some issues with how I'm doing it. Here the two methods:
+ (NSString *)personPropertyNameForIndex:(kSHLPersonDetailsTableRowIndex)index
{
static NSArray *propertyNames = nil;
(nil == propertyNames) ?
[self SHL_initPersonPropertyNamesWithArray:&propertyNames] : NULL;
}
+ (void)SHL_initPersonPropertyNamesWithArray:(NSArray **)theArray
{
*theArray = [[NSArray alloc]
initWithObjects:@"name", @"email", @"birthdate", @"phone", nil];
}
I receive the following error:
Automatic Reference Counting Issue: Passing address of non-local object to __autoreleasing parameter for write-back
On the line which the following command appears:
[self SHL_initPersonPropertyNamesWithArray:&propertyNames] : NULL;
The __strong storage qualifier is needed for this case.
+ (void)SHL_initPersonPropertyNamesWithArray:(NSArray * __strong *)theArray
However, this code doesn't follow the Basic Memory Management Rules.
You own any object you create
You create an object using a method whose name begins with “alloc”, “new”, “copy”, or “mutableCopy” (for example, alloc, newObject, or mutableCopy).
For what reason do you want to do this?
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With