为 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/UniversalTasks.app/UniversalTasks 预计在: /System/Library/Frameworks/UIKit.framework/UIKit 在 /var/mobile/Applications/9E0CE75F-D2A9-4132-AE56-1780928BCF21/UniversalTasks.app/UniversalTasks"
我必须做的任何人都可以帮助我
【问题讨论】:
【参考方案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 合二为一吗?