XCode'Build for Archive'CGRectMake中的巨大错误

时间:2011-03-12 16:16:32

标签: cocoa xcode macos xcode4

我只是在Mac应用程序商店上构建我的Cocoa应用程序,但这是我用'构建和存档'的最佳时间。现在,对于我的所有cgrectmake,它给了我一个构建错误说:

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

始终受影响的代码是:

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

此剂量发生在正常调试中。到底是怎么回事?

顺便说一句,如果有所不同,我正在使用XCode 4

2 个答案:

答案 0 :(得分:3)

假设您正在为Mac App Store构建(就像您说的那样),那么您正在使用NSImageView。您的问题是NSImageView采用NSRect来设置框架,可以使用NSMakeRect(CGFloat x, CGFloat y, CGFloat w, CGFloat h)

创建框架

答案 1 :(得分:0)

确保正确拼写CGRectMake。 Objective-C区分大小写,因此cgrectmake是一个不同且错误的函数名称。

此外,如果您正在构建32位(我假设您将用于发布版本),则CG类型与其中的NS类型不同。 AppKit使用NSRect等类型,在64位上定义为CGRect,但在32位上默认不定义。在导入Cocoa.h之前,在前缀头中定义NS_BUILD_32_LIKE_64,即使在32位体系结构上也要将NSRect定义为CGRect

定义该宏还有其他后果,特别是关于NSIntegerNSUInteger的定义。在上传到App Store之前进行其他测试。