Я исхожу из фона 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 первый имеет больше смысла, чем второй. И у меня есть другая строка, такая же, как и первая, но она работает (не в конструкторе). Может кто-нибудь объяснить это мне, пожалуйста?