从xCode 5.1开始,我得到以下警告:
Implicit conversion loses integer precision: 'NSInteger' (aka 'long') to 'SInt32' (aka 'int')
在以下行:
(void) CFStreamCreatePairWithSocketToCFHost(NULL, host, port, &readStream,&writeStream);
标记为“端口”
这是声明:
+ (void)getStreamsToHostNamed:(NSString *)hostName port:(NSInteger)port inputStream:(NSInputStream **)inputStream outputStream:(NSOutputStream **)outputStream
有人可以帮我这个警告吗?
最佳答案
由于CFStreamCreatePairWithSocketToCFHost
的第三个参数的类型为SInt32
,因此您所需要做的就是更改getStreamsToHostNamed
方法的签名,如下所示:
+ (void)getStreamsToHostNamed:(NSString *)hostName
port:(SInt32)port
inputStream:(NSInputStream **)inputStream
outputStream:(NSOutputStream **)outputStream
通常,应避免在整数类型的NS包装器之间进行隐式转换,因为它们具有平台相关的实现。幸运的是,编译器会对此发出警告,因此您不必手动跟踪它们。
关于ios - 隐式转换失去整数精度Xcode 5.1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22715314/