在objective-c中使用BOOL变量时发出警告
Posted
技术标签:
【中文标题】在objective-c中使用BOOL变量时发出警告【英文标题】:warning when using BOOL variable in objective-c 【发布时间】:2012-01-10 01:20:14 【问题描述】:我正在尝试将我的 BOOL 变量初始化为 YES,但它给了我这个警告.. 不太确定该怎么做.. 它似乎仍然工作正常,但只是想知道如何才能摆脱警告。
我已经像这样初始化标题中的变量
//.h
BOOL *removeActivityIndicator;
//..
@property (nonatomic, assign) BOOL *removeActivityIndicator;
然后我尝试像这样将其设置为 YES(这也是我收到警告的地方)
self.removeActivityIndicator = YES;
警告说:
不兼容的整数到指针转换传递'BOOL'(又名 'signed char') 到 'BOOL *' 类型的参数(又名'signed char *')
【问题讨论】:
现在您有了答案,您是否看到警告正在告诉您到底出了什么问题?它期待一个 'BOOL *' 而你传递的是一个 'BOOL'? 【参考方案1】:警告是正确的;您已将变量声明为 BOOL *
(指向 BOOL 的指针),这几乎肯定不是您想要的。从声明中删除*
。
【讨论】:
【参考方案2】:removeActivityIndicator
是一个字符 指针,并且您为其分配了一个字符,因此:
-
改成
BOOL removeActivityIndicator;
取消引用它:*(self.removeActivityIndicator) = YES;
【讨论】:
我不确定您所说的“字符指针”是什么意思。它只是一个指针。 我的意思是指向一个字符的指针,它指向什么类型的变量很重要。 其实一个BOOL就是一个有符号字符,也就是char
【参考方案3】:
您已经创建了一个指向BOOL
的指针,它是一个原始类型。去掉remoteActivityIndicator
前面多余的*
。
【讨论】:
以上是关于在objective-c中使用BOOL变量时发出警告的主要内容,如果未能解决你的问题,请参考以下文章
Objective-C中的const ,extern,static