gpt4 book ai didi

objective-c - 弱链接我自己的 Objective-C 类

转载 作者:太空狗 更新时间:2023-10-30 03:42:12 24 4
gpt4 key购买 nike

是否可以弱链接我自己的 objective-c 类?

我已经看到我可以弱链接函数或变量......

extern int MyFunction() __attribute__((weak_import));
extern int MyVariable __attribute__((weak_import));

我想要这样的东西......

if ([MyUploadManager class]) {
self.uploadButton.hidden = NO;
}

...即使项目中不包含 UploadManager.m 也能够编译。

最佳答案

弱链接一个类,例如MyUploadManager 在您自己的可执行文件中:

  1. 为了让链接器满意,将此添加到项目中的Other Linker Flags:

    -Wl,-U,_OBJC_CLASS_$_MyUploadManager

    这允许类符号是未定义的,即使它没有内置到您的可执行文件中。它将被考虑用于动态查找,实际上与动态库符号相同。

  2. 为了让运行时愉快,将此添加到您的类 header :

    __attribute__((weak_import)) @interface MyUploadManager

    当动态链接器运行时,它会将类符号替换为 nil 而不会崩溃。

现在您可以在没有链接器或运行时错误的情况下运行它:

if ([MyUploadManager class]) {
self.uploadButton.hidden = NO;
}

注意:从 Xcode 7 开始,-U 链接器选项与 BitCode 冲突,因此您可能无法在未来的项目中使用此技术。

关于objective-c - 弱链接我自己的 Objective-C 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23943540/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com