首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >找不到符号:_OBJC_CLASS_$_UIPopoverController

找不到符号:_OBJC_CLASS_$_UIPopoverController
EN

Stack Overflow用户
提问于 2010-06-09 05:17:46
回答 2查看 11.8K关注 0票数 17

我的通用应用程序出现了问题。我已经将Base SDK设置为iPhone 3.2,并将目标设置为3.1。

我已经将使用UIPopoverController的文件移到了它们自己的文件中,在iPhone上加载应用程序时,它们不应该被加载。尽管如此,当我构建我的应用程序时,当我构建并调试我的设备时,我得到了以下错误:

在/var/mobile/Applications/B3B90643-92DC-4E5C-8B2F-83A42D6D57E0/citybikes.app/citybikes中的: /var/mobile/Applications/B3B90643-92DC-4E5C-8B2F-83A42D6D57E0/citybikes.app/citybikes中应为: /System/Library/Frameworks/UIKit.framework/UIKit中应为

dyld:找不到符号:引用自:/System/Library/Frameworks/UIKit.framework/UIKit的_OBJC_CLASS_$_UIPopoverController

我真的希望有人能帮助我。

致以最好的问候,保罗·皮伦

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-06-09 17:17:47

即使它们不是在运行时加载的,这些文件仍然在链接中处理。因此,symbol _OBJC_CLASS_$_UIPopoverController被添加到您的应用程序中,作为需要动态链接的符号之一。

有两种解决方法,

  1. 将邮件中所有出现的UIPopoverController (例如[UIPopoverController alloc])替换为NSClassFromString(@"UIPopoverController"),或
  2. Make UIKit弱链接。
票数 27
EN

Stack Overflow用户

发布于 2011-10-20 15:19:06

我强烈建议你而不是弱链接UIKit。正如KennyTM和我在我们的评论中提到的,这可能会隐藏未来的链接器问题并导致崩溃。我也不愿意告诉链接器UIKit是可选的,而实际上它不是。

相反,使用NSClassFromString间接初始化和调用UIPopoverController:

Class popover = NSClassFromString(@"UIPopoverController");
if (nil != popover)
{
    self.myPopover = [[popover alloc] initWithContentViewController:myContent];
}

如果您仍然有链接器错误,您可能需要使用NSSelectorFromString调用UIPopoverController的消息:

Class popover = NSClassFromString(@"UIPopoverController");
if (nil != popover)
{
    SEL myInit = NSSelectorFromString(@"initWithContentViewController:");
    self.myPopover = [[popover alloc] performSelector:myInit withObject:myContent];
}

为了便于移植,我建议编写一个代理对象来处理这些实现细节。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3001374

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档