我只是在Mac应用程序商店上构建我的Cocoa应用程序,但这是我用'构建和存档'的最佳时间。现在,对于我的所有cgrectmake
,它给了我一个构建错误说:
error: incompatible type for argument 1 of 'setFrame:'
始终受影响的代码是:
image.frame = cgrectmake(x, y, width, height);
此剂量发生在正常调试中。到底是怎么回事?
顺便说一句,如果有所不同,我正在使用XCode 4
答案 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
。
定义该宏还有其他后果,特别是关于NSInteger
和NSUInteger
的定义。在上传到App Store之前进行其他测试。