Я был очень озадачен некоторыми неожиданными ошибками компиляции в моем коде в последнее время. Я выполнил поиск и устранение неисправностей, и у меня получился тестовый код:
1 float performSelectorResult, messageResult;
2 SEL selector = @selector(smallContentCellMargin);
3
4 NSLog (@"selector %s result %f", selector, [defaults performSelector:selector]);
5 NSLog (@"message result is %f", defaults.smallContentCellMargin);
6
7 performSelectorResult = [defaults performSelector:selector];
8 messageResult = defaults.smallContentCellMargin;
Если я запускаю код как есть, я получаю ошибку компиляции в строке 7: «несовместимые типы в присваивании». Тем не менее, если я закомментирую строку 7, код будет собран и запущен; результаты в NSLog:
2009-07-21 18:31:44.823 ICE[24347:20b] selector smallContentCellMargin result 0.000000
2009-07-21 18:31:44.830 ICE[24347:20b] message result is 7.000000
Я использовал очень похожий код для получения UIFont, но никогда не использовал float. Есть что-то, чего я не знаю, или это ошибка в Objective-C? Я очень смущен.