我尝试在插件(NSBundle)中使用 Cocoa 框架作为弱链接框架,以便我可以在多个插件中使用它。我有该框架的源代码,并且已在另一个插件中成功使用该框架,尽管不是作为弱链接框架。在这种情况下,效果很好。
它有效,但是当我在代码中配置框架的各个方面时尝试使用 extern *const 属性时,应用程序崩溃并出现以下错误:
Exception Type: EXC_BAD_ACCESS (SIGBUS)
Exception Codes: KERN_PROTECTION_FAILURE at 0x0000000000000000
框架中声明的常量示例:
Class.h
extern NSString * const AConstant;
以及实施:
Class.m
NSString *const AConstant = @"someString";
我的应用程序中导致错误的代码:
NSLog(@"%@", AConstant);
框架正在加载 - 如果我不尝试使用常量,它会按预期工作。我还可以通过手动使用常量的值来配置它,即
[framework setConfig:@"someString"]
而不是我更喜欢使用的:
[framework setConfig:AConstant]
正如上面提到的,如果有必要,我可以修改框架。
有谁对我可以做些什么来让这个框架作为weak_framework运行有任何建议吗?
我不确定您的框架问题,但您可以通过仅在头文件中声明字符串来解决您的问题,如下所示:
__unused static NSString *const AConstant = @"someString";
The __unused
关键字会停止编译器警告该常量并未被每个包含标头的文件使用。唯一的问题是你必须使用正确的[string isEqual: AConstant]
比较,指针比较不起作用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)