我有一个类RemoteImageLoader其中有一个方法的LoadImage:如何在Objective C中用ARC声明一个指针成员变量?
- (void) loadImage: (NSString*) url setTarget:(NSData **)target;
我用的NSData **这里是因为我需要间接返回NSData的*,就像一些典型方法:
- (BOOL)save:(NSError**)
自该方法将实际调用另一个异步方法,我必须将目标另存为成员变量,以便稍后可以访问它。但是当我定义的NSData **成员变量:
@interface RemoteImageLoader : NSObject
@property NSData** target;
@end
编译器会抱怨说,“指向非const类型‘的NSData *’没有明确的所有权”。我在谷歌上做了一些搜索,但没有找到答案。任何人都可以帮助我吗?非常感谢
和我试图取代声明
@interface RemoteImageLoader : NSObject
@property NSData * __autoreleasing * target;
@end
,但问题仍然存在
[自动引用计数:指向非常量类型'NSError *'的指针没有显式所有权]的可能的重复(http://stackoverflow.com/questions/7804435/automatic-reference-counting-pointer-to-non -const型nserror与 - 无EXPL)。相同的基本逻辑。哦,并且SO也有一个搜索栏:) – CodaFi
检查ARC转换文档。我相信你的情况类似于NSError。 –
你不需要间接返回那个'NSData'。执行间接返回的唯一原因是您还需要_direct_返回值。当方法在失败时返回成功/失败“BOOL”或对象/“nil”时,使用'NSError **'参数技术。你的方法没有使用它的任何返回值,所以你应该只返回新的'NSData';这将使每个人的生活变得更简单(你的和客户的编码)。 –