2

obj-cから始めたばかりで、.hファイルと.mファイルの2つのファイルを作成しました。.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間違っていました。値を割り当てるためではなく、指定しない場合にデフォルトのセッター/ゲッターメソッドを生成するためのものです。プロパティに使用するivarを指定するために使用できますproperty = ivarが、定数値はivarではありません。したがって、この方法で文字列値を割り当てることはできません。詳細については、 Obj-Cプログラミング言語(プロパティ実装ディレクティブ)を確認してください。

于 2012-07-08T15:30:06.903 に答える
2

@synthesize変数に値を与えるために使用されるのではなく、変数の基本的なゲッターとセッターを定義するための省略形です。The

@synthesize var = _var

_var構文は、「インスタンス変数をプロパティの内部変数として使用してほしい」という意味で使用されますvar

initプロパティにデフォルトの文字列を割り当てる場合は、それをメソッドに配置します。

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

または、ゲッターでデフォルト値を設定できます(以下の@Marioのコメントによる):

-(NSString*)gold 
{
  _gold ? return _gold : return @"gold";
}
于 2012-07-08T15:55:24.640 に答える
0

@synthesize宣言で値を割り当てることはできません。

@synthesizeは、変数のゲッターとセッターを設定する宣言です。値を割り当てるためのものではありません。

後で、値を「ゴールド」変数に設定するメソッドで実行する必要があります。

于 2012-07-08T15:27:15.977 に答える
0

合成時に変数に値を設定することは想定されていません。これらは、アクセサメソッドを合成するためだけのものです。

于 2012-07-08T15:27:17.397 に答える
0

はプロパティの@synthesizeゲッターとセッターを生成しますが、コンパイラーがそれらの生成を処理します。

iOS開発に関する優れたチュートリアルを読むのは良い考えだと思います。おそらく、AppleDeveloper接続Webサイトで今日からiOSアプリの開発を開始することから始めてください。

于 2012-07-08T15:32:29.470 に答える