Не может установить границы даже с макросом NS_BUILD_32_LIKE_64
Мой проект компилируется и работает нормально в режиме отладки, но когда я переключаюсь на компиляцию выпуска x86_64, я получаю ошибки компилятора при попытках setBounds с использованием NSRect. (Ошибки читаются как "несовместимый тип для аргумента 1 setBounds".)
Есть много постов, в которых я предлагаю добавить определение макроса NS_BUILD_32_LIKE_64 над импортом Cocoa (Foundation), так что язык "if NS_BUILD_32_LIKE_64" в NSGeometry.h будет истинным, и будут использоваться необходимые определения типов. Поэтому я добавил определение макроса в h-файл класса-нарушителя:
#define NS_BUILD_32_LIKE_64 1
#import <Cocoa/Cocoa.h>
И я все еще получаю те же ошибки компиляции.
Я также пытался явно конвертировать из NSRect в CGRect, чтобы вместо этого.,,
// rectIncomingSource is an NSRect
calayer.bounds = rectIncomingSource;
,,, Я написал это:
calayer.bounds = CGRectMake(rectIncomingSource.origin.x, rectIncomingSource.origin.y, rectIncomingSource.size.width, rectIncomingSource.size.height);
Те же ошибки.
И почему установление границ будет единственной проблемой? Согласно документам Apple, NSInteger и NSUInteger являются основной проблемой преобразования, и я использую их повсеместно, но компилятор не жалуется на них. Так с чего бы это задыхаться?
Я, вероятно, здесь упускаю что-то действительно простое - за что я прошу прощения у волшебников. Любая помощь для слепых?
1 ответ
Информационное окно цели дало мне ключ, чтобы понять это:
Я помещал определение NS_BUILD_32_LIKE_64 в файл h конкретного класса. Он должен быть в заголовочном файле префикса, с расширением pch, который обычно находится в "Других источниках" проекта.
#ifdef __OBJC__
#define NS_BUILD_32_LIKE_64 1 // this line added
#import <Cocoa/Cocoa.h>
#endif
Ну да, я полагаю, это было очевидно. Но, возможно, какой-то другой новичок препроцессора сочтет это разъяснение полезным, поэтому я не буду удалять вопрос.
И я до сих пор не понимаю, почему установление границ должно было быть единственной проблемой. Может быть, что-то делать с основной анимацией?