【发布时间】:2020-11-13 18:38:25
【问题描述】:
我正在尝试将Swift 函数转换为Objective-C。这是函数的签名
斯威夫特:
func hammingWeight(_ n: Int) -> Int
目标-C
-(int) hammingWeight:(int) number
我将此值传递给函数/方法:
00000000000000000000000000001011
在 Swift 的情况下,如果我打印 n 的值,它会打印:
p n
(Int) $R2 = 1011
在 Objective-C 的情况下打印这个:
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];
}
}
【问题讨论】:
-
1011 in oct 是 521 dec 所以确保你没有将它作为 oct 数传递给 objc 函数。
-
@HossamSherif 我已经添加了完整的objective-c实现
-
是的,您将其作为 oct 发送 .. 尝试将 0xB 作为十六进制发送,将
1011作为二进制发送,或者将11作为十进制发送。如果你想把它作为 oct 发送,1011二进制是013oct
标签: ios objective-c swift iphone xcode11.4