iOS检查是否可以保留对象

时间:2012-08-08 12:08:19

标签: iphone objective-c ios

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

someProperty = [idParameter retain];

由于

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:2)

从NSObject继承的每个对象都有一个respondsToSelector:方法。 (Documentation

因此,你可以写:

if ([idParameter respondsToSelector:@selector(retain)])
    someProperty = [idParameter retain];