【问题标题】:warning when using BOOL variable in objective-c在objective-c中使用B​​OOL变量时发出警告
【发布时间】: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'?

标签: iphone objective-c ios boolean


【解决方案1】:

警告是正确的;您已将变量声明为 BOOL *(指向 BOOL 的指针),这几乎肯定不是您想要的。从声明中删除*

【讨论】:

    【解决方案2】:

    removeActivityIndicator 是一个字符 指针,并且您为其分配了一个字符,因此:

    1. 改成BOOL removeActivityIndicator;
    2. 取消引用它:*(self.removeActivityIndicator) = YES;

    【讨论】:

    • 我不确定您所说的“字符指针”是什么意思。它只是一个指针。
    • 我的意思是指向一个字符的指针,它指向什么类型的变量很重要。
    • 其实一个BOOL就是一个有符号字符,也就是char
    【解决方案3】:

    您已经创建了一个指向BOOL 的指针,它是一个原始类型。去掉remoteActivityIndicator前面多余的*

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-02
      • 2011-12-09
      • 1970-01-01
      相关资源
      最近更新 更多