如何理解BOOL *

时间:2014-05-29 06:51:32

标签: ios

就像在这个NSArray实例方法enumerateObjectsUsingBlock:^(id x, NSUInteger index, BOOL *stop),中一样,我知道BOOL是一个基本类型,我们怎样才能将它声明为指针类型?为什么不BOOL停在这里?

4 个答案:

答案 0 :(得分:1)

您可以在NSValue中包装其他非对象类型(例如指针或结构)。

假设你真的是指BOOL *(指针):

NSValue *boolValue = [NSValue value:pointerToBool withObjCType:@encode(BOOL*)];
BOOL *b = [boolValue pointerValue];

答案 1 :(得分:0)

因为您将stop定义为BOOL指针,而不是BOOL本身。

它允许您执行C和Obj-C中的传递引用仿真:

void changeMe (BOOL *pointerToBool) {
    *pointerToBool = ! (*pointerToBool);  // Dereference the address
                                          // to get at variable.
}
:
BOOL myBool = YES;
changeMe (&myBool);   // Pass its address.

答案 2 :(得分:0)

BOOL *是BOOL var的指针。如果在函数参数中使用它(指针),则可以根据需要更改此指针的值。在参数中使用指针作为void函数,但您可以在参数

中返回一个或多个值

答案 3 :(得分:0)

它将帮助您知道BOOL是一个签名字符,因此可以将其视为一个字符。它在objc.h中声明:http://www.opensource.apple.com/source/objc4/objc4-371.1/runtime/objc.h

宣言:

typedef signed char     BOOL; 

#define YES             (BOOL)1
#define NO              (BOOL)0

BOOL *与char *几乎相同,我相信你更习惯于看到最后一个。