Objective c 无法为协议对象提供strong或retain属性

Objective c 无法为协议对象提供strong或retain属性,objective-c,ios5,Objective C,Ios5,我有下面一行代码 @property (nonatomic, retain) id<MessageItemProtocol> *message; 在这里,我得到一个错误:具有“retain”或strong属性的属性必须是对象类型 我知道我得到了一个错误,因为这是一个协议。那么,它的属性类型应该是什么呢 试试看 @property (nonatomic, retain) id<MessageItemProtocol> message; 或 试一试 或 id已经是指针,因

我有下面一行代码

@property (nonatomic, retain) id<MessageItemProtocol> *message;
在这里,我得到一个错误:具有“retain”或strong属性的属性必须是对象类型

我知道我得到了一个错误,因为这是一个协议。那么,它的属性类型应该是什么呢

试试看

@property (nonatomic, retain) id<MessageItemProtocol> message;

试一试

id已经是指针,因此不需要*

id已经是指针,因此不需要*


尝试了第一个有效的方法,尽管这里描述的两种方法有什么区别ID是指向任何类型对象的指针。NSObject*是指向NSObject类型的对象或子类的指针,除了少数例外,几乎每个Cocoa类都有。尝试了第一个,它起作用了,尽管这里描述的两种方式有什么区别ID是指向任何类型的对象的指针。NSObject*是指向NSObject类型的对象或子类的指针,几乎每个Cocoa类都有,除了少数例外。
@property (nonatomic, retain) NSObject<MessageItemProtocol> *message;
@property (nonatomic, retain) id<MessageItemProtocol> message;