就像在这个NSArray
实例方法enumerateObjectsUsingBlock:^(id x, NSUInteger index, BOOL *stop),
中一样,我知道BOOL
是一个基本类型,我们怎样才能将它声明为指针类型?为什么不BOOL
停在这里?
答案 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 *几乎相同,我相信你更习惯于看到最后一个。