为 iPhone SDK 3.2 准备通用应用程序

Posted

技术标签:

【中文标题】为 iPhone SDK 3.2 准备通用应用程序【英文标题】:Preparing a Universal App for iPhone SDK 3.2 【发布时间】:2010-03-26 04:41:04 【问题描述】:

我正在开发一个通用应用程序,我在 iPad 应用程序中使用了 UISplitViewController。我遵循通用应用程序指南,即我将基本 SDK 保持为 3.2,iPhone Target OS 广告 iPhone OS 3.1.3,Tget 设备作为 iPhone/iPad。我为 UISplitViewController 和 UIPopOverController 使用了“为新符号添加运行时检查”。

Class splitVCClass = NSClassFromString(@"UISplitViewController");

if (splitVC)



   UISplitViewController* mySplitViewController = [[splitVCClass alloc] init];

   // Configure the split view controller.


我在 .m 文件中使用了这个,我也在 .h 文件中声明了 UIPopOverController

"dyld:未找到符号: _OBJC_CLASS_$_UIPopoverController 引用自: /var/mobile/Applications/9E0CE75F-D2A9-4132-AE56-1780928BCF21/UniversalTask​​s.app/UniversalTask​​s 预计在: /System/Library/Frameworks/UIKit.framework/UIKit 在 /var/mobile/Applications/9E0CE75F-D2A9-4132-AE56-1780928BCF21/UniversalTask​​s.app/UniversalTask​​s"

我必须做的任何人都可以帮助我

【问题讨论】:

【参考方案1】:

我不完全确定,但也许这会有所帮助:

Class classPopoverController = NSClassFromString(@"UIPopoverController");
if (classPopoverController)

  id popover = [[classPopoverController alloc] initWithContentViewController:imgPicker];

  [popover presentPopoverFromRect:CGRectMake(0, 0, popoverParent.frame.size.width, 80) 
    inView:popoverParent permittedArrowDirections:(1UL << 0) animated:YES];

基本上你需要将“UIPopoverController *”替换为“id”,因为这个符号在早期的SDK中没有定义。

【讨论】:

还没有测试过,但我认为这会给你一个警告,因为系统不知道 (id)popover 中有什么 + 我看到这个有很多泄漏,因为它不正确发布... 早期SDK中没有定义也没关系。变量类型是纯粹的编译时事物。所以只要它在编译时存在于 Base SDK 中,这才是最重要的【参考方案2】:

正确答案在这里:Symbol not found: _OBJC_CLASS_$_UIPopoverController

首先,您必须接受原始海报的隐含说明:将所有仅 iPad 的代码(弹出框等)移动到 iPad 子类等中。然后按照最终答案。

【讨论】:

以上是关于为 iPhone SDK 3.2 准备通用应用程序的主要内容,如果未能解决你的问题,请参考以下文章

iPhone SDK 3.2 测试版和 iPhone SDK 3.1.2

最新的 iPhone SDK 3.2 BETA 合二为一吗?

iphone sdk 3.2 到 4.0 笔尖编辑

使用标准 api 播放视频风景 Iphone sdk 3.2 4.0

XCode 3.2 未检测到 iPhone SDK 3.0

iPhone SDK 3.2 和 UIAppFonts