Ram*_*ami 14 pointers objective-c ios5 automatic-ref-counting
我正在尝试将指针传递给指向某个方法的指针,但显然ARC在如何操作方面存在一些问题.这里有两种方法:
+ (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];
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
自动引用计数问题:将非本地对象的地址传递给__autoreleasing参数以进行回写
在出现以下命令的行上:
[self SHL_initPersonPropertyNamesWithArray:&propertyNames] : NULL;
Run Code Online (Sandbox Code Playgroud)
Kaz*_*oto 27
此案例需要__strong存储限定符.
+ (void)SHL_initPersonPropertyNamesWithArray:(NSArray * __strong *)theArray
Run Code Online (Sandbox Code Playgroud)
但是,此代码不遵循基本内存管理规则.
您拥有自己创建的任何对象
使用名称以"alloc","new","copy"或"mutableCopy"开头的方法(例如,alloc,newObject或mutableCopy)创建对象.
你为什么要这样做?