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