iOS   发布时间:2022-03-30  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了iPhone测试的通用iPhone/iPad应用程序调试编译错误大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我写了一个iPhone和iPad通用的应用程序,运行良好在iPad模拟器上的Xcode,但我现在想测试的iPhone功能。我似乎无法运行与这个代码的iPhone模拟器,因为它总是认为iPad?

相反,我试图运行在设备上,当它开始运行我得到以下错误

dyld: Symbol not found: _OBJC_CLASS_$_UISplitViewController
  Referenced from: /var/mobile/Applications/9770ACFA-0B88-41D4-AF56-77B66B324640/Test.app/Test
  Expected in: /System/Library/Frameworks/UIKit.framework/UIKit in /var/mobile/Applications/9770ACFA-0B88-41D4-AF56-77B66B324640/Test.app/TEST

由于应用程序是以编程方式构建的,而不是使用XIB,我已经拆分了2个设备逻辑使用main.m方法中的以下行:

if (UI_user_iNTERFACE_I@L_864_7@m() == UIUserInterfaceI@L_864_7@mPad)
{
    retVal = UIApplicationMain(argc,argv,nil,@"AppDelegate_Pad");
}
else
{
    retVal = UIApplicationMain(argc,@"AppDelegate_Phone");
}

从那时起,他们使用不同的AppDelegates,我检查了我的头,以确保UISplitView永远不会使用或通过电话逻辑导入。

如何避免这个错误,有没有更好的方式来分割通用逻辑路径在这个程序化创建的应用程序?

解决方法

这个错误被触发,因为你没有弱链接UIKit框架。在iPhone OS 3.2中的UIKit框架添加了UISplitViewController,如果你链接它正常,你的应用程序将假设这些符号存在于3.0,而他们没有。

要弱链接框架,在xcode中找到您的应用程序目标,检查它,然后转到常规选项卡。在该选项卡的底部应该是一个框架列表,一个类型列。将uIKit的类型从required更改为Weak,然后重新构建应用程序。这应该照顾运行时错误

你的条件逻辑是声音,但我倾向于共享一个应用程序委托,并做接口特定的布局进一步下来。

(更新:12/21/2011)从iOS 4.2,你不应再需要弱链接框架,以防止这样的错误。作为Marco Arment describes,如果你使用iOS 4.2或更高版本构建并且定位到iPhone OS 3.1,各个类现在弱链接,并且如果该类在当前运行的操作系统版本上不存在,它们的类方法返回nil。

大佬总结

以上是大佬教程为你收集整理的iPhone测试的通用iPhone/iPad应用程序调试编译错误全部内容,希望文章能够帮你解决iPhone测试的通用iPhone/iPad应用程序调试编译错误所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。