未找到符号:_OBJC_CLASS_$_UIPopoverController
我的通用应用程序遇到问题。 我已将 Base SDK 设置为 iPhone 3.2,并将目标设置为 3.1。
我已将使用 UIPopoverController 的文件移至其自己的文件中,并且在 iPhone 上加载应用程序时不应加载它们。 不过,当我构建应用程序并在设备上进行调试时,我会收到以下错误:
dyld:未找到符号: _OBJC_CLASS_$_UIPopoverController 引用自: /var/mobile/Applications/B3B90643-92DC-4E5C-8B2F-83A42D6D57E0/citybikes.app/citybikes 预计在: /系统/库/框架/UIKit.framework/UIKit 在 /var/mobile/Applications/B3B90643-92DC-4E5C-8B2F-83A42D6D57E0/citybikes.app/citybikes
我真的希望有人可以帮助我。
此致, 保罗·皮伦
I am having problems with my universal app.
I have set the Base SDK to iPhone 3.2 and set the target to 3.1.
I have moved the files that are using the UIPopoverController to their own files and they shouldn't be loaded when loading the app on the iPhone.
Still, when I build my app I get the following error when I build and debug to my device:
dyld: Symbol not found:
_OBJC_CLASS_$_UIPopoverController Referenced from:
/var/mobile/Applications/B3B90643-92DC-4E5C-8B2F-83A42D6D57E0/citybikes.app/citybikes
Expected in:
/System/Library/Frameworks/UIKit.framework/UIKit
in
/var/mobile/Applications/B3B90643-92DC-4E5C-8B2F-83A42D6D57E0/citybikes.app/citybikes
I really hope someone can help me.
Best regards,
Paul Peelen
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
即使它们没有在运行时加载,这些文件仍然会在链接中进行处理。因此,符号
_OBJC_CLASS_$_UIPopoverController
会作为需要动态链接的符号之一添加到您的应用中。有 2 种解决方法,
[UIPopoverController alloc]
)替换为NSClassFromString(@"UIPopoverController")
,或Even if they're not loaded in runtime, those files are still processed in linking. The symbol
_OBJC_CLASS_$_UIPopoverController
is therefore added into your app as one of those requiring dynamic linking.There are 2 workarounds,
[UIPopoverController alloc]
) withNSClassFromString(@"UIPopoverController")
, or我强烈建议您不要弱链接 UIKit。正如 KennyTM 和我在评论中提到的,这可能会隐藏未来的链接器问题并导致崩溃。我也不愿意告诉链接器 UIKit 是可选的,而实际上它显然不是。大黑客。
相反,使用 NSClassFromString 间接初始化并调用 UIPopoverController:
如果仍然存在链接器错误,则可能需要使用 NSSelectorFromString 调用 UIPopoverController 的消息:
为了可移植性,我建议编写一个代理对象来处理这些实现细节。
I strongly recommend you not weakly link UIKit. As KennyTM and I mentioned in our comments, this may hide future linker issues and result in crashes. I'm also simply not comfortable with telling the linker that UIKit is optional when it plainly isn't. Big hack.
Instead, initialize and call UIPopoverController indirectly using NSClassFromString:
If you still have linker errors, you may need to call UIPopoverController's messages using NSSelectorFromString:
For portability, I recommend writing a proxy object to handle these implementation details.