0

我有一个带有 id 参数的方法。我的班级也有一个 id 作为属性。我的问题是在 init 方法中是否有一种方法可以确定是否可以保留传递的参数,以便我可以执行以下操作:

someProperty = [idParameter retain];

谢谢

4

2 回答 2

3

所有 Objective-C 对象(即任何从NSObject类继承或实现NSObject协议的对象)都实现retain. 它由NSObject类实现,并且是协议的必需方法,因此您不能拥有无法调用的 Objective-C 对象retain

在这些情况下,您唯一不能调用它的情况是您的类型变量id未指向 Objective-C 对象。这将是一个错误,不要这样做。

于 2012-08-08T12:18:47.830 回答
2

每个继承自 NSObject 的对象都有一个respondsToSelector:方法。(文档

因此,您可以编写:

if ([idParameter respondsToSelector:@selector(retain)])
    someProperty = [idParameter retain];
于 2012-08-08T12:10:20.083 回答