在objective-c中使用B​​OOL变量时发出警告

Posted

技术标签:

【中文标题】在objective-c中使用B​​OOL变量时发出警告【英文标题】: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中使用B​​OOL变量时发出警告的主要内容,如果未能解决你的问题,请参考以下文章

Objective-C中的const ,extern,static

objective-c static变量的使用总结

使用Python发送邮件,在自己程序出错时发邮件通知自己

在 Objective-C 中定义私有变量的最佳方法

在 Objective-C 中更改 Javascript 变量

如何从 Objective-C 代码中删除一次性使用的类变量?