为什么我得到不安全保留?

时间:2012-07-08 14:05:23

标签: objective-c

我刚刚开始使用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

但它在@synthesize行上给了我2个错误,这是......

“具有assign属性的属性黄金的现有ivar”_gold“必须保留__unsafe”并且名称相同。

1 个答案:

答案 0 :(得分:1)

从错误中我看到您正在使用ARC,自动引用计数。

基本上你可以摆脱所有@synthesize语句,甚至没有必要使用ivar名称和黄金的私人声明。

你需要的只是CardUnit.h:

@interface CardUnit : NSObject

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

@end

Xcode编译器将负责其余部分。

另见this reply on SO