私はJavaのバックグラウンドから来て、Objective Cを学んでいます。文字列配列と配列を変更するメンバー関数を持つクラスを作成しようとしています。私のコードは次のようになりました:
@implementation TAWChapter
@synthesize mSubject;
@synthesize mItems;
- (id) init{
self.mItems = [[NSMutableArray alloc] init];
return self;
}
- (void) setSubject:(NSString *)subject{
self.mSubject = subject;
}
- (void) addItem:(NSString *)item{
[self.mItems addObject:@"asdf"];
}
@end
うまくいきませんでした。私は"[__NSArrayI addObject:]: unrecognized selector sent to instance "
と を手に入れました"NSInvalidArgumentException"
。インターネットで検索した後、コンストラクターの単一行を次のように変更しました。
self.mItems = [self.mItems init];
うまくいきましたが、なぜですか?Java 開発者の観点からは、最初のものは 2 番目のものよりも理にかなっています。そして、最初の行と同じ別の行がありますが、機能しています(コンストラクターではありません)。誰かが私にこれを説明してもらえますか?