我收到了这个烦人的警告
Apple Mach-O 链接器警告 合并暂定定义 _searchFlag 时对齐丢失
我已经像这样在 constant.h 文件中声明了搜索标志
BOOL 搜索标志
从过去的两天开始,我一直在解决这个问题,我已经尝试了谷歌的所有可能的解决方案,但它们似乎都没有奏效。
我的应用程序同时支持 armv6 和 v7 架构,我已经为其添加了设置,但这个问题似乎是问题所在,它只是这个 bool 标志自 2 天以来一直在咬我的头。
请帮我解决这个问题 谢谢
我收到了这个烦人的警告
Apple Mach-O 链接器警告 合并暂定定义 _searchFlag 时对齐丢失
我已经像这样在 constant.h 文件中声明了搜索标志
BOOL 搜索标志
从过去的两天开始,我一直在解决这个问题,我已经尝试了谷歌的所有可能的解决方案,但它们似乎都没有奏效。
我的应用程序同时支持 armv6 和 v7 架构,我已经为其添加了设置,但这个问题似乎是问题所在,它只是这个 bool 标志自 2 天以来一直在咬我的头。
请帮我解决这个问题 谢谢
我的猜测是您将此头文件包含在多个源文件中。如粘贴在这里,这将导致多个符号称为_searchFlag
,每个包含一个标题。
这里通常的模式,假设您试图声明一个BOOL
名为的全局变量searchFlag
,您可以从多个源文件中访问该变量,将使用关键字在标头中声明它extern
,然后仅在一个源文件中定义它。
头文件(例如称为“Foo.h”):
extern BOOL searchFlag;
一个源文件(例如“Foo.m”):
BOOL searchFlag;
许多源/头文件:
#import "Foo.h";
通过没有,extern
您在技术上在包含/导入标头的每个源文件中重新声明它。
标头中的全局变量在 ObjC 中是不好的 juju;我不会对全局变量的使用做出判断(因为它们有时确实是必要的),但我会以不同的方式声明它们。
我能想到的最简洁和最简单的方法(也是我的首选方法)是创建一个新类,将全局变量的访问器实现为类方法,并将变量本身声明为源文件中的静态变量。
myglobal.h
@interface MyGlobal : Object
{
}
+ (BOOL)searchFlag;
+ (void)setSearchFlag:(BOOL)aFlag;
@end
myglobal.m
#import "myglobal.h"
// Static variables
static BOOL _searchFlag = NO;
@implementation MyGlobal
+ (BOOL)searchFlag
{
return _searchFlag;
}
+ (void)setSearchFlag:(BOOL)aFlag
{
_searchFlag = aFlag;
}
@end
使用这种方法,访问全局变量就像[MyGlobal searchFlag]
or一样简单[MyGlobal setSearchFlag: YES]
。