Вы правы, вы можете сделать «git clone», есть также Heroku специальные указания для локального редактирования.
Я подозреваю, что это проблема того, как typedef взаимодействует с методом кодирования.
Я считаю, что typedef остается чистым ключевым словом C и на самом деле работает только с «типами» Objective-C обычно потому, что они реализованы как структуры.
В результате, когда вы вводите NSNumber в NSNumberBool, он отлично работает для вызовов методов (и свойств точечного синтаксиса), но (при условии, что моя теория верна), кодирование разрывов не может сказать, что NSNumberBool и NSNumber относятся к одному типу.
Мне будет интересно узнать, что скажет тот, кто лучше знает .
После компиляции вашего примера и выдачи на нем class-dump , похоже, typedef превращается в
struct NSNumber {
Class _field1;
};
@interface Properties : NSObject
{
NSNumber *prop1;
struct NSNumber *prop2;
}
. Изменение typedef на это, похоже, работает нормально, хотя может быть, не совсем то, что вам нужно.
#define NSNumberBool NSNumber
Как и в ответе nall, я также пробовал дамп класса. Я нашел интересный, хотя и уродливый обходной путь. Следующий код:
typedef NSNumber* NSNumberBoolPtr;
@interface Test : NSObject {
NSNumber *real;
NSNumberBoolPtr poser;
}
class-dumps to:
@interface Test : NSObject
{
NSNumber *real;
NSNumber *poser;
}
@end
Опять же, это не совсем то, что вы хотите, но вы получите проверку времени компилятора на отсутствие смешивания NSNumbers и NSNumberBools (что, как я предполагаю, является причиной typedef в первом место).