我有一个带有 id 参数的方法。我的班级也有一个 id 作为属性。我的问题是在 init 方法中是否有一种方法可以确定是否可以保留传递的参数,以便我可以执行以下操作:
someProperty = [idParameter retain];
谢谢
我有一个带有 id 参数的方法。我的班级也有一个 id 作为属性。我的问题是在 init 方法中是否有一种方法可以确定是否可以保留传递的参数,以便我可以执行以下操作:
someProperty = [idParameter retain];
谢谢
所有 Objective-C 对象(即任何从NSObject
类继承或实现NSObject
协议的对象)都实现retain
. 它由NSObject
类实现,并且是协议的必需方法,因此您不能拥有无法调用的 Objective-C 对象retain
。
在这些情况下,您唯一不能调用它的情况是您的类型变量id
未指向 Objective-C 对象。这将是一个错误,不要这样做。
每个继承自 NSObject 的对象都有一个respondsToSelector:
方法。(文档)
因此,您可以编写:
if ([idParameter respondsToSelector:@selector(retain)])
someProperty = [idParameter retain];