Cocoa Objective-C クラスの変数の前にあるアンダースコアはどのように機能しますか? 質問する

Cocoa Objective-C クラスの変数の前にあるアンダースコアはどのように機能しますか? 質問する

iPhone の例をいくつか見ましたが、属性で変数の前にアンダースコア _ が使用されています。これが何を意味するのか、またはどのように機能するのか知っている人はいますか?

私が使用しているインターフェース ファイルは次のようになります。

@interface MissionCell : UITableViewCell {
    Mission *_mission;
    UILabel *_missionName;
}

@property (nonatomic, retain) UILabel *missionName;

- (Mission *)mission;

上記が正確に何をするのかはわかりませんが、ミッション名を次のように設定しようとすると、

aMission.missionName = missionName;

次のエラーが発生します:

構造体または共用体ではないもののメンバー 'missionName' を要求しています

ベストアンサー1

ivar にアンダースコア プレフィックスを使用する場合 (これは一般的な慣例に過ぎませんが、便利です)、自動生成されたアクセサー (プロパティ用) が使用する ivar を認識できるように、追加の操作を 1 つ行う必要があります。具体的には、実装ファイルではsynthesize次のようになります。

@synthesize missionName = _missionName;

より一般的には、次のようになります。

@synthesize propertyName = _ivarName;

おすすめ記事