在一个属性中存储任意数量的不同类

Jim*_*ery 1 properties class objective-c

我有一组不同类的实例(准确地说是9个),它们都具有相同的方法和属性,但每个都执行特定的任务.

我希望能够在任何时候在这些不同的对象之间切换.有时可能只使用少数几个对象,有时候当它们都被使用时,有时候只使用一个.

理想情况下,我想要一个可以指向任何这些对象的实例的单个属性.我尝试过这样的事情:

@property (nonatomic, strong) id * currentObj;
...
currentObj=[[ClassType3 alloc] init];
Run Code Online (Sandbox Code Playgroud)

(ClassType3仅仅是9个不同的类别中的一个,在本例中它们从去ClassType1ClassType9)

但这不起作用,我得到这两个警告:

Property with 'retain (or strong)' attribute must be of object type.
Pointer to non-const type 'id' with no explicit ownership.
Run Code Online (Sandbox Code Playgroud)

我的问题是,可以实现这样的事情,还是我需要创建每个类的实例以防万一需要使用它?

Mar*_*n R 9

加布里埃尔已经给出了正确答案.但是,如果所有类具有相同的方法和属性,则应考虑使用

两种情况下的优点是编译器可以在分配或使用属性时执行更多/更好的错误检查.


Gab*_*lla 7

id 已经是一个指针.

更改

@property (nonatomic, strong) id * currentObj;
Run Code Online (Sandbox Code Playgroud)

@property (nonatomic, strong) id currentObj;
Run Code Online (Sandbox Code Playgroud)

此外,请使用大写的名称.