myDict
プロパティの値を取得するメソッドを定義していdict
ます。しかし、コンパイラがそのプロパティを合成するとき、dict
getter メソッドが自動的に合成されるため、メソッドは必要ありませんmyDict
。あなたはそれを取り除くことができます。
一般的には、次のようにします。
#import <Foundation/Foundation.h>
@interface Client : NSObject
@property (nonatomic, strong) NSMutableDictionary *dict;
@end
行に中括弧やセミコロンがないことに注意してください@interface
。
そして、プロパティ (または、技術的には、合成されたインスタンス変数) を初期化する方法に関する質問への回答として、クラスのinit
メソッドでそれを行います。
@implementation Client
- (id)init
{
self = [super init];
if (self) {
_dict = [[NSMutableDictionary alloc] init];
}
return self;
}
@end
明示的に宣言されたインスタンス変数は必要ないことに注意してください。コンパイラが (先頭にアンダースコアを付けて) 合成するためです。また、「ゲッター」メソッドも作成する必要はありません。コンパイラーがそれを合成するからです。
ARC を使用していた場合 (そうであることを願っています)、上で行ったように、それassign
をに置き換えますstrong
。ただし、ARC を使用していない場合はそのままにしておきますが、メソッドretain
を記述する必要があります (ただし、ARC を使用している場合はこれを記述しないでください)。dealloc
- (void)dealloc
{
[_dict release];
[super dealloc];
}
その後、このクラスを次のように使用できます。
Client *client = [[Client alloc] init];
[client.dict addObject:@"One"];
// you can access it this way
NSLog(@"client.dict = %@", client.dict);
// or this way
NSLog(@"[client dict] = %@", [client dict]);