我在一个文件中有协议和类头:
@protocol SomethingDelegate
- (void) doSomething;
@end
@interface SomethingClass
@property (nonatomic, weak) id <SomethingDelegate> delegate;
@end
在.m文件中:
@implementation SomethingClass // in here I got error "Cannot synthesize weak property in file using manual reference counting"
@end
如果我把它改成这样:
@implementation SomethingClass
@synthesize delegate; // in here I got error "Cannot synthesize weak property in file using manual reference counting"
@end
为什么会这样?以及如何解决这个问题?如果我从weak
更改为strong
,则错误消失。但这不是代表应该如何宣布,对吧?如何正确宣布弱代表?
答案 0 :(得分:18)
您需要在项目Weak References in Manual Retain Release
下的YES
中将Apple LLVM 8.0 - Language - Objective C
设置为Build Settings
,如下面的屏幕截图所示 -
答案 1 :(得分:1)
您不必使用合成,因为Xcode 4.4和LLVM 2.0编译器会自动进行合成。 你可以删除该行
@synthesize delegate;
如果你想手动进行合成,你可以打开&#34;隐式合成属性&#34;通过将其设置为YES
在构建设置中标记并且您正在使用手动保留版本,您不能在属性中使用弱/强,您应该使用retain / assign。