gpt4 book ai didi

iPhone 模拟器 : build errors when using synthesized instance variables

转载 作者:太空狗 更新时间:2023-10-30 03:20:19 25 4
gpt4 key购买 nike

Cocoa/Objective-C 有两个运行时:遗留运行时和“现代”运行时(Apple 这么调用它)。

根据 Apple's documentation , “Mac OS X v10.5 及更高版本上的 iPhone 应用程序和 64 位程序使用现代版本的运行时”。

到目前为止一切顺利。

现在,“现代”运行时支持称为“合成实例变量”的功能,这意味着您不必为每个声明的属性定义一个实例变量。实例变量将自动添加。引自 iPhone Reference Library : "对于现代运行时,实例变量是根据需要合成的。如果同名的实例变量已经存在,则使用它。"

如果您在 iPhone 应用程序中使用此功能,它会在 iPhone(物理)设备上构建并运行良好,但是当您将目标更改为“iPhone 模拟器”时,您会遇到构建错误:

合成属性“x”的名称必须与兼容的 ivar 相同,或者必须显式命名一个 ivar

这是怎么回事? iPhone模拟器不是真正的iPhone模拟器吗?这是否意味着模拟器使用与物理 iPhone 不同的运行时?

如何在 iPhone 模拟器上使用此功能?

编辑:

针对 iPhone 模拟器时无法编译的代码是:

@interface MyClass : NSObject {
}

@property NSString *prop1;

@end

根据文档,这应该可以在“现代”运行时正常工作,而且确实可以在 iPhone 设备上正常工作,但是当将目标更改为 iPhone 模拟器时它不会编译。

最佳答案

当前 SDK (3.0) 中的 iPhone 模拟器使用主机的运行时,不支持 32 位模式下的合成 ivar。在模拟器修复之前,你必须@synthesize你的ivars。 (最好向 Apple 提交错误以请求此增强功能。)

关于iPhone 模拟器 : build errors when using synthesized instance variables,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1155267/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com