Я только что попытался скомпилировать приложение для iPhone под OS 3.0, и я получил ошибку компиляции при использовании быстрого перечисления.
Я пытаюсь пройти через NSArray, содержащий классы cComment:
for (cComment* newComment in comments.comments)
И я получаю эту ошибку
ошибка: тип средства доступа не соответствует типу свойства 'comments'.
Это работает безупречно при компиляции с ОС 2.2.1.
Я понимаю ошибку, перечисление не является строго типизированным, но, насколько я знаю, дженерики / шаблоны не поддерживаются в target-c. Так что в настоящее время я могу видеть только один способ:
for (id commentObject in comments.comments)
{
cComment *newComment = (cComment *)commentObject;
}
Кто-нибудь может придумать другой путь? Почему это изменилось? Будем благодарны за любые замечания к документации Apple об этом изменении.
EDIT
Следуя предложению Grouchal, я попробовал это:
NSArray * allComments = comments.comments
и я получил ту же ошибку, так что, кажется, это не о перечислении в конце концов
вот код из заголовочного файла:
NSMutableArray * комментарии;
@ свойство (только чтение, неатомное) NSArray * comments;
и свойство синтезируется в файле реализации.
Изменение свойства на NSMutableArray, кажется, решает проблему, но я не вижу никакой причины, почему это должно иметь место. Любые идеи.
Спасибо.