gpt4 book ai didi

cocoa - 为什么我可以将 BOOL 传递给需要 NSInteger 参数的方法?

转载 作者:行者123 更新时间:2023-12-03 17:49:54 42 4
gpt4 key购买 nike

为什么我可以声明/定义这样的方法:

@interface Dog : NSObject

- (void) doStuff:(NSInteger)val;

@end

...

@implementation Dog

- (void) doStuff:(NSInteger)val {

NSLog(@"arg was valid");

}

@end

...并这样调用它:

Dog* mydog = [[Dog alloc] init];
[mydog doStuff:YES]; //=>arg was valid

我读到 BOOL 是有符号字符的 typedef。通常在 Xcode6 中,如果类型不完全匹配,我会收到各种警告,告诉我转换为正确的类型,如果我单击正确的位置,Xcode 将为我插入转换。

最佳答案

在 C 语言家族中 - (Objective-)C(++) - 各种 bool 类型(BOOLbool_Bool) 都被归类为整数类型。 (char 也是整数类型。)

在需要较大整数类型的地方使用较小整数类型是隐式转换,不需要强制转换。

将它们组合起来,您可以将 BOOL 作为 NSInteger 传递。

HTH

关于cocoa - 为什么我可以将 BOOL 传递给需要 NSInteger 参数的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30223994/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com