我正在使用cocos2d v1.1.0-beta2b。 我的项目不使用ARC。 它过去工作得很好,但我们刚刚尝试将项目的最小ios版本从4.3更改为5.0,我们开始编译时错误
“仅在ARC或GC模式下允许合成弱属性”
似乎是因为这个(来自cocos2d代码的一个例子)
// The delegate of the scroll layer object.
#if __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_5_0
@property (nonatomic, weak) id<CCScrollLayerDelegate> delegate;
#else
@property (nonatomic, assign) id<CCScrollLayerDelegate> delegate;
#endif
我该怎么做才能解决它?
如果从代码中删除这个,只留下一行是否安全 @property(nonatomic,assign)id delegate; ? (我假设它没关系,直到今天我们的代码仍然使用了这个,因为直到今天我们的目标是4.3而不是5)
答案 0 :(得分:2)
__ weak是一个仅限弧的功能,并且没有正式替换
通过迈克灰尝试MAZeroingWeakRef (https://github.com/mikeash/MAZeroingWeakRef)
OR
通过合理的实验室进行PLWeakCompatibility (https://github.com/plausiblelabs/PLWeakCompatibility)-
你可以回到分配和代码将编译,但因为没有自动nilling分配变量(而不是__weak变量)它会改变语义,并可能导致崩溃的道路
答案 1 :(得分:0)
在您的财产声明中使用unsafe_unretained
代替weak
,它应该以相同的方式运作。
unsafe_unretained
,因此它向后兼容