Не может установить границы даже с макросом NS_BUILD_32_LIKE_64 - PullRequest
0 голосов
/ 23 июня 2011

Мой проект компилируется и работает нормально в режиме отладки, но когда я переключаюсь на выпуск компиляции x86_64, я получаю ошибки компилятора при попытках setBounds с использованием NSRect.(Ошибки читаются как «несовместимый тип для аргумента 1 в setBounds».)

Есть много постов, которые я предлагаю добавить макроопределение NS_BUILD_32_LIKE_64 над импортом Cocoa (Foundation), так что «Если NS_BUILD_32_LIKE_64 ”язык в NSGeometry.h будет истинным, и будут использоваться необходимые typedefs.Поэтому я добавил определение макроса в файл 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 Ответ

1 голос
/ 23 июня 2011

Целевое информационное окно дало мне ключ к разгадке:

Я помещал определение NS_BUILD_32_LIKE_64 в файл h конкретного класса.Это должно было быть в заголовочном файле префикса, который с расширением pch обычно находится в «Других источниках» проекта.

#ifdef __OBJC__
    #define NS_BUILD_32_LIKE_64 1 // this line added
    #import <Cocoa/Cocoa.h>
#endif

Ну да, я полагаю, это было очевидно.Но, возможно, какой-то другой новичок препроцессора сочтет это разъяснение полезным, поэтому я не буду удалять вопрос.

И я до сих пор не понимаю, почему установление границ должно было быть единственной проблемой.Может быть, что-то связано с базовой анимацией?

...