2

我刚开始使用 obj-c 并创建了 2 个文件,一个 .h 和一个 .m 文件。.h 文件是..

#import <Foundation/Foundation.h>

@interface CardUnit : NSObject
{

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

.m 文件是

#import "CardUnit.h"

@implementation CardUnit

@synthesize gold  = @"gold";
@synthesize name = _name;

@end

但这给了我一个错误

@synthesize gold  = @"gold";

说“预期;综合后”

为什么我不能将其设置为字符串?

4

5 回答 5

2

@synthesize不用于给变量赋值,而是为变量定义基本 getter 和 setter 的简写。这

@synthesize var = _var

语法用于说,“我希望你使用实例变量_var作为属性的内部变量var”。

如果要为属性分配默认字符串,请将其放入您的init方法中:

-(id)initWithName:(NSString*)name
{
  self = [super init];
  if(self)
  {
    self.gold = @"gold";
    self.name = name
  }
  return self;
}

或者您可以在 getter 中设置默认值(根据@Mario 的评论如下):

-(NSString*)gold 
{
  _gold ? return _gold : return @"gold";
}
于 2012-07-08T15:55:24.640 回答
2

synthesize错了。它不是用于分配值,而是用于生成默认的 setter/getter 方法,以防您不提供它们。您可以使用property = ivar来指定应将哪个 ivar 用于属性,但常量值不是 ivar。所以你不能以这种方式分配字符串值。有关详细信息,请查看Obj-C 编程语言(属性实现指令)

于 2012-07-08T15:30:06.903 回答
0

@synthesize属性生成 getter 和 setter,但编译器负责生成它们。

我认为阅读有关 iOS 开发的好教程是一个好主意,也许可以从Apple Developer 连接网站上的立即开始开发 iOS 应用程序开始。

于 2012-07-08T15:32:29.470 回答
0

您不能在 @synthesize 声明中分配值。

@synthesize 是为变量设置 getter 和 setter 的声明。它不是用于分配值。

您应该稍后使用一种将值设置为“黄金”变量的方法。

于 2012-07-08T15:27:15.977 回答
0

您不应该在综合中为变量设置值。它们仅用于合成访问器方法。

于 2012-07-08T15:27:17.397 回答