XCode 'Build for Archive' ОГРОМНЫЕ ошибки в CGRectMake - PullRequest
0 голосов
/ 12 марта 2011

Я просто собираю свое приложение Cocoa для распространения в магазине приложений Mac, но в этот раз я впервые использовал «сборку и архивирование». Теперь, для всех моих cgrectmake, это дает мне ошибку сборки, говорящую:

error: incompatible type for argument 1 of 'setFrame:'

Код, на который всегда влияет:

image.frame = cgrectmake(x, y, width, height);

Это происходит при обычной отладке. Что здесь происходит?

Кстати, я использую XCode 4, если это имеет значение

Ответы [ 2 ]

3 голосов
/ 12 марта 2011

Предполагая, что вы создаете для Mac App Store (как вы говорите), вы используете NSImageView. Ваша проблема в том, что NSImageView использует NSRect для установки кадра, который может быть создан с помощью NSMakeRect(CGFloat x, CGFloat y, CGFloat w, CGFloat h)

0 голосов
/ 13 марта 2011

Убедитесь, что вы правильно написали CGRectMake.Objective-C чувствителен к регистру, поэтому cgrectmake - это другое и неправильное имя функции.

Кроме того, если вы собираете 32-разрядную версию (как я полагаю, это будет для сборки выпуска),типы CG не совпадают с их NS-аналогами.AppKit использует такие типы, как NSRect, который определяется как CGRect в 64-разрядной версии, но не по умолчанию в 32-разрядной.Определите NS_BUILD_32_LIKE_64 в заголовке вашего префикса, прежде чем импортировать Cocoa.h, чтобы NSRect определялось как CGRect даже на 32-разрядных архитектурах.

Определение того, что макрос имеет другие последствия, особенно в отношенииопределения NSInteger и NSUInteger.Перед загрузкой в ​​App Store проведите дополнительное тестирование.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...