iOS检查对象是否可以保留
问题描述:
我有一个ID参数的方法。我的班级里还有一个身份证。我的问题是在init方法是有办法,我可以判断传递的参数可以保留,所以我可以做这样的事情:iOS检查对象是否可以保留
someProperty = [idParameter retain];
感谢
答
从NSObject的继承每个对象都有一个respondsToSelector:
方法。 (Documentation)
因此,你可以写:
if ([idParameter respondsToSelector:@selector(retain)])
someProperty = [idParameter retain];
答
所有的Objective-C对象(即任何东西从NSObject
类继承或实现NSObject
协议)实施retain
。它由NSObject
类实现,并且它是该协议的必需方法,所以不能有一个不能调用retain
的Objective-C对象。
在这种情况下,你不能调用它的唯一时间是如果id
类型的变量没有指向Objective-C对象。这将是一个错误,不要这样做。
如果是'id',我想不出你*不能保留它的原因。 – 2012-08-08 12:09:20