加载特定于设备的 iPad/iPhone UIViewController nib 失败,带有 .mm 文件

Posted

技术标签:

【中文标题】加载特定于设备的 iPad/iPhone UIViewController nib 失败,带有 .mm 文件【英文标题】:Loading device-specific iPad/iPhone UIViewController nib fails with .mm files 【发布时间】:2012-12-13 17:42:34 【问题描述】:

编辑:我在下面写“类”的地方,我的意思是“类的实际类名”,而不是字面意义上的“类”!

对于通用应用程序中的 UIViewController,我们使用:

[[class alloc] initWithNibName:nil bundle:nil];

[[class alloc] init]; // same thing

文件:

    class~ipad.xib 类~iphone.xib

Apple 根据 Apple 文档正确加载特定于设备的 NIB。

但如果 UIViewController 有一个“.mm”扩展名,它每次都会失败。似乎只发生在 Obj-C++ 视图控制器上(更改文件扩展名“修复”它)。

【问题讨论】:

【参考方案1】:

啊,自我回答,找到了一个可行的解决方法:

代替:

initWithNibName:nil bundle:nil

使用:

initWithNibName:@"class" bundle:nil // where "class" == your classname, no extension

无论 Apple 的代码中基于文件名读取 NIB 文件的错误是什么......这似乎都修复了它

【讨论】:

以上是关于加载特定于设备的 iPad/iPhone UIViewController nib 失败,带有 .mm 文件的主要内容,如果未能解决你的问题,请参考以下文章

管理两个特定于设备的应用程序

录制视频时出现 RuntimeException [特定于设备]

css 特定于设备的CSS媒体查询集合

css 特定于设备的CSS媒体查询集合

在 Xcode 8.2 中设置特定于设备的字体

流星加载脚本,特定于页面的 CSS