外からは読み込み専用で内からは読み書き可能なプロパティ

まぁ、表題の通りなんですけど、たまにこういう内と外でスコープが異なるプロパティ必要ですよね。

C#とかだとアクセサにスコープを設定できるので簡単なんですけど、objective-cだとどうするのか?
色々調べたんですけど、超簡単に出来る事が分かりました。

要約すると
・interfaceではプロパティをreadonlyで宣言しておく
・implementationではプロパティを同じ名前、型でreadwriteで宣言する
そんだけです。

ヘッダファイルにはこんな感じに書いて


@interface Hoge : NSObject
{
}

@property (nonatomic,readonly) NSString* accountName;

@end

ソースファイルには上のプロパティを無名カテゴリで再宣言します

@interface Hoge ()

@property (nonatomic,readwrite,retain) NSString* accountName;

@end

@implementation Hoge

-(void)dealloc
{    
    [_accountName release];
    
    [super dealloc];
}

@end


こんな事出来るんですねぇ
objective-c、、自由過ぎる(笑)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です