2012-07-08 57 views
0

我剛剛用obj-c開始創建2個文件,一個.h和一個.m文件。 .h文件是..爲什麼我得到不安全的保留?

#import <Foundation/Foundation.h> 

@interface CardUnit : NSObject 
{ 
@private 
    NSString *_name; 
    NSString *_gold; 
} 
@property (nonatomic, assign) NSString *name; 
@property (nonatomic, assign) NSString *gold; 
@end 

與.m文件

#import "CardUnit.h" 

@implementation CardUnit 

@synthesize gold = _gold; 
@synthesize name = _name; 

@end 

但它給了我2個錯誤的@synthesize線,這是...

「現有ivar「_gold」屬性黃金與分配屬性必須__unsafe保留「和相同的名稱。

+0

檢查這個問題:http://stackoverflow.com/questions/8368157/existing-ivar-title-for-unsafe-unretained-property-title-must-be-unsafe-un – 2012-07-08 14:16:51

回答

1

從錯誤我看你使用ARC,自動引用計數。

基本上,你可以擺脫所有的@synthesize語句,甚至私人聲明的伊娃的名字和黃金是沒有必要的。

所有你需要的是CardUnit.h是這樣的:

@interface CardUnit : NSObject 

    @property (assign) NSString *name; 
    @property (assign) NSString *gold; 

@end 

Xcode的編譯器將完成剩下的工作。

又見this reply on SO

+1

請注意,穩定版本的Xcode(4.3)仍然需要'@ synthesize'。另外,OP在這些屬性聲明中使用'assign'有點奇怪;他們應該可能是「複製」或「強大」。 – 2012-07-08 16:40:24

+0

對於'copy'屬性+1 – 2012-07-08 19:18:56

相關問題