Это все еще Objective-C 2.0; Компилятор, возможно, немного обновлен, учитывая, что этот тип типа изменяет ошибку. Это в значительной степени должно быть ошибкой. По крайней мере, это должно предупредить вас, что вы, скорее всего, не имеете в виду то, что написали. Затем вы можете разыграть вещи, чтобы они вас не предупреждали, чего нельзя сделать с помощью оператора @synthesize
.
Я просто вставил твой код и оператор синтеза в свой контроллер и не получил никаких ошибок или предупреждений об этом. Он построен хорошо. Теперь я установил базовый SDK на «Simulator 3.0», а сборку на «Simulator 3.0 Debug». Этот проект начался в 2.2.1 SDK, и я только вчера установил 3.0 SDK; Xcode - версия 3.1.3.
Обновление : О, я вижу, что на самом деле попытка установить свойство - это то место, где вы получаете указанную вами ошибку.
self.myArray = [NSArray arrayWithObject:@"foo"];
Очевидно, что вы не можете @synthesize
такое поведение и должны написать свои собственные методы доступа.
- (NSArray*)myArray {
return [NSArray arrayWithArray:myArray];
}
- (void)setMyArray:(NSArray*) pMyArray {
myArray = [NSMutableArray arrayWithArray:pMyArray];
}
Заполнение этих методов доступа не привело к исчезновению сообщения, поэтому мне пришлось изменить доступ на:
[self setMyArray:[NSArray arrayWithObject:@"foo"]];
Использование приведенного выше синтаксиса без пользовательских средств доступа также не помогло.
PS Ого, кого-то еще раздражает, что вы не можете ни копировать пузырьки сообщений, ни текст в окне результатов сборки?