【问题标题】:Error in UIApplicationMain when targeting iOS 6 in Xcode project template在 Xcode 项目模板中定位 iOS 6 时 UIApplicationMain 出错
【发布时间】:2013-11-21 13:43:22
【问题描述】:

我是 Xcode 开发的新手,如果这是一个简单的修复,我很抱歉。

重现问题的步骤是

  • 在Xcode中基于MasterDetail模板新建项目
  • 运行这个项目就OK了
  • 在部署目标中将“7.0”更改为“6.0” 弹出菜单
  • 运行这个项目会报错:

    * 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序, 原因:'-[XYZMasterViewController setPreferredContentSize:]:无法识别 选择器发送到实例 0x1d08fd10'

我怀疑问题是由于与 iOS 6 和 7 之间的 main.m 相关或在其中的某些语法或配置更改所致 -

@autoreleasepool {
     return UIApplicationMain(argc, argv, nil, NSStringFromClass([XYZAppDelegate class]));
}

提前致谢

【问题讨论】:

    标签: ios objective-c xcode


    【解决方案1】:

    问题是,setPreferredContentSizeis only available in IOS 7.0。您可以在代码中搜索 preferredContentSize,记住可能使用点符号调用 setPreferredContentSize

    当你找到setPreferredContentSize 你应该这样做:

        if ([controller respondsToSelector:@selector(setPreferredContentSize:)])
         {
             // iOS 7
             controller.preferredContentSize = ...;
         }
         else
         {
             // iOS < 7
             controller.contentSizeForViewInPopover = ...;
         }
    

    【讨论】:

    • 谢谢@Guilherme。我在awakeFromNib 中注释掉了self.preferredContentSize = CGSizeMake(320.0, 600.0);,但该项目仍然无法在运行 iOS 6 的 iPad 上运行
    • 你怎么知道这是 iOS 7 唯一的方法?我在文档中找不到它developer.apple.com/library/ios/releasenotes/General/…
    • 彼得,你可以在developer.apple.com/LIBRARY/IOS/documentation/UIKit/Reference/…查看。当你注释掉这行时,你仍然得到同样的错误?
    • 是的,我仍然遇到同样的错误。我应该对故事板进行任何更改吗?
    • 你确定没有其他地方使用preferredContentSize吗?您可以添加异常断点(单击调试器选项卡底部的 + 按钮)。他会停在发生异常的那一行,或者如果是外部库则停在汇编代码中
    猜你喜欢
    • 2014-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-30
    • 2014-11-30
    • 1970-01-01
    相关资源
    最近更新 更多