Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Xcode:swift Int和Objective-C Int之间的不同行为_Ios_Objective C_Swift_Iphone_Xcode11.4 - Fatal编程技术网

Ios Xcode:swift Int和Objective-C Int之间的不同行为

Ios Xcode:swift Int和Objective-C Int之间的不同行为,ios,objective-c,swift,iphone,xcode11.4,Ios,Objective C,Swift,Iphone,Xcode11.4,我正在尝试将Swift函数转换为Objective-C。这是函数的签名 斯威夫特: func hammingWeight(_ n: Int) -> Int 目标-C -(int) hammingWeight:(int) number 我正在将此值传递给函数/方法: 00000000000000000000000000001011 对于Swift,如果我打印n的值,它会打印: p n (Int) $R2 = 1011 p number (int) $0 = 521 如果是Objec

我正在尝试将
Swift
函数转换为
Objective-C
。这是函数的签名

斯威夫特:

func hammingWeight(_ n: Int) -> Int
目标-C

-(int) hammingWeight:(int) number
我正在将此值传递给函数/方法:

00000000000000000000000000001011
对于Swift,如果我打印n的值,它会打印:

p n
(Int) $R2 = 1011
p number
(int) $0 = 521
如果是Objective-C打印:

p n
(Int) $R2 = 1011
p number
(int) $0 = 521
我的问题是为什么Objective-C改变了我传球的价值。这对我来说毫无意义。你们中有谁知道为什么会发生这种情况,或者是否有办法解决这个问题

我会非常感谢你的帮助

这是完整的Objective-C实施:

@interface DoSomething : NSObject
@end

@implementation DoSomething

-(int) hammingWeight:(int) number {
    NSLog(@"number %d", number);
}

@end

int main(int argc, char *argv[]) {
    @autoreleasepool {
        DoSomething *doIt = [DoSomething new];
        [doIt hammingWeight:00000000000000000000000000001011];
    }
}
不同之处在于,在(目标-)c中,由于前缀为
0
,您给定的数字被解释为八进制,而在Swift中,它被解释为十进制

对于Swift前缀
0o
中的八进制整数文本


中有关八进制整数文字的信息 中的八进制整数信息


oct中的1011是521 dec,因此请确保您没有将其作为oct编号传递给objc函数。@Hossamsher如果我已将其添加到完整的objective-c实现中,则您将其作为oct发送。。尝试将0xB作为十六进制发送,即
1011
作为二进制发送,或将
11
作为十进制发送。如果您想将其作为oct发送,则
1011
二进制文件为
013
oct