ios布尔var声明

时间:2012-02-03 19:56:48

标签: iphone objective-c ios xcode cocoa-touch

我用布尔输入var声明了一个函数。我没有错。但是,当从另一个控制器调用它时,会出现通知:“与指针转换不兼容的整数将'BOOL'发送到BOOL类型的参数”。我究竟做错了什么?感谢。

- (void)composeBar: (BOOL *)savePars

来自其他观点:

AppDelegate *localFunction = [[UIApplication sharedApplication] delegate];

[localFunction composeBar:YES];

2 个答案:

答案 0 :(得分:9)

BOOL*不是布尔值。它是一个指向布尔值的指针。只需使用

- (void)composeBar:(BOOL)savePars

你可能会感到困惑,因为所有的Obj-C对象都是用*声明的,但那是因为它们实际上是指针。但是,BOOL不是对象,它实际上只是char,其中包含01。就像使用int代替int*(或更多惯用代码,NSInteger)一样,您使用BOOL代替BOOL*。< / p>

答案 1 :(得分:4)

这是因为您将该函数声明为将指针指向boolean ,而不是布尔值。这就是宣言的样子:

- (void)composeBar: (BOOL)savePars

*伴随着 ID类型(即您通过@interface/@implementation定义的那些)。常规C类型,枚举,结构等在声明中不需要*,除非您确实想要传递指针。