2009-02-09 2 views
0

Я изучаю цель-c, работая через книгу Аарона Хиллегасса «Программирование какао для Mac OS X - Третье издание». Я работаю в Xcode, чтобы разработать некоторые примеры кода, и продолжать получать предупреждение компилятора в последней строке этого метода:Предупреждение о компиляторе «назначение с определенного объекта-типа c»

- (void) setEntryDate:(NSCalendarDate *) date { 
    [date retain]; 
    [entryDate release]; 
    entryDate = date; 
} 

Предупреждение написано «предупреждение: назначение из особого типа Objective-C». Что вызывает это предупреждение? Как я могу предотвратить его повторение?

Это не влияет на выполнение программы, но я не понимаю, в чем проблема, или даже если есть действительно проблема (может это просто быть параноидальным компилятором?).

+0

Где декларация entryDate? Вам не хватает части здесь ... –

+0

entryDate объявляется в заголовке файл –

+0

Вопрос действительно спрашивал: «Что такое объявление entryDate?» – mouviciel

ответ

2

NSCalendar и NSCalendarDate действительно разные типы. Вы должны решить, какой из них вы хотите, чтобы entryDate был (возможно, NSCalendarDate, судя по значению «дата»).

+0

Получил. Почему компилятор предупреждает меня об этом? Имеет ли он только моральные возражения против полиморфизма? –

+0

Это точка объявления статического типа - сказать , «Я ожидаю этот тип здесь, поэтому предупредите меня, если у меня есть что-то еще». – Chuck

+1

Лучше спросить, почему вы хотите иметь NSCalendar и NSCalendarDate в той же роли. Они имеют разные цели и разные методы. конечно, как ошибка, поэтому проверка типа компиляции может быть полезна. Вы делали это по какой-то причине? – Chuck

Смежные вопросы