1

我目前正在关注一本在 Xcode 中使用 arc 之前编写的书中的教程。我有与这里所说的完全相同的问题:

unsafe_unretained 属性 'delegate' 的现有 ivar 'delegate' 必须是 __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 文件中合成变量时,我收到以下错误消息:具有分配属性的属性 '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

我的程序有效,但我想了解为什么这会导致麻烦。非常感谢。

4

0 回答 0