我目前正在阅读在Xcode中使用arc之前编写的书中的教程。我有完全相同的问题,如此处所述:
'Existing ivar 'delegate' for unsafe_unretained property 'delegate' must be __unsafe_unretained
这个问题已得到解答,但尚未明确说明原因。
本书中的代码声明我使用此代码声明成员变量:
the.h File
___________
#import <Cocoa/Cocoa.h>
@interface TestProgramDelegate : NSObject <NSApplicationDelegate> {
NSWindow *window;
NSTextField *message;
}
@property (assign) IBOutlet NSWindow *window;
@property (assign) IBOutlet NSTextField *message;
@property (assign) IBOutlet NSTextField *inputText;
@end
the.m file
__________
#import "the.h" //File
@implementation theHFileAppDelegate
@synthesize window
@synthesize message
@synthesize inputText
当我在.m文件中合成变量时,收到以下错误消息: 具有assign属性的属性“window”的现有ivar“window”必须为__unsafe_unretaied。
但是当我删除成员变量的声明时,如书中所述,一切正常,我没有收到错误。
the.h File
___________
#import <Cocoa/Cocoa.h>
@interface TestProgramDelegate : NSObject <NSApplicationDelegate> {
NSWindow *window;
NSTextField *message;
}
@property (assign) IBOutlet NSWindow *window;
@property (assign) IBOutlet NSTextField *message;
@property (assign) IBOutlet NSTextField *inputText;
@end
the.m file
__________
#import "the.h" //File
@implementation theHFileAppDelegate
@synthesize window
@synthesize message
@synthesize inputText
我的程序有效,但我想了解为什么会导致麻烦。非常感谢。