我用布尔输入var声明了一个函数。我没有错。但是,当从另一个控制器调用它时,会出现通知:“与指针转换不兼容的整数将'BOOL'发送到BOOL类型的参数”。我究竟做错了什么?感谢。
- (void)composeBar: (BOOL *)savePars
来自其他观点:
AppDelegate *localFunction = [[UIApplication sharedApplication] delegate];
[localFunction composeBar:YES];
答案 0 :(得分:9)
BOOL*
不是布尔值。它是一个指向布尔值的指针。只需使用
- (void)composeBar:(BOOL)savePars
你可能会感到困惑,因为所有的Obj-C对象都是用*
声明的,但那是因为它们实际上是指针。但是,BOOL
不是对象,它实际上只是char
,其中包含0
或1
。就像使用int
代替int*
(或更多惯用代码,NSInteger
)一样,您使用BOOL
代替BOOL*
。< / p>
答案 1 :(得分:4)
这是因为您将该函数声明为将指针指向boolean ,而不是布尔值。这就是宣言的样子:
- (void)composeBar: (BOOL)savePars
*
伴随着 ID类型(即您通过@interface/@implementation
定义的那些)。常规C类型,枚举,结构等在声明中不需要*
,除非您确实想要传递指针。