我遇到以下类型属性的问题:
id<ProtocolName> variableName;
.....
.....
@property (nonatomic, retain) id<ProtocolName> variableName;
我可以正常访问和使用它们,但是当我尝试调用
时[variableName release];
我收到编译器警告:
'-release' not found in protocol(s)
我是否需要在界面中定义一个release方法,或者如何释放为变量保留的内存?
谢谢!
答案 0 :(得分:3)
release
在NSObject协议中,因此您可以将其声明为id<ProtocolName, NSObject>
以在类型系统中工作或将其强制转换为普通id
以阻止其类被类型检查。
答案 1 :(得分:3)
让你的协议采用NSObject。
@protocol ProtocolName <NSObject>
...
答案 2 :(得分:1)
您始终可以将NSObject
添加到协议列表中。