【问题标题】:NSHost "currentHost" not recognizedNSHost“currentHost”无法识别
【发布时间】:2023-03-14 19:54:01
【问题描述】:

我想使用此代码来了解我的 ip,但我收到了 2 个我现在无法修复的警告。我还发现了这篇文章:Accessing IP Address with NSHost

但我只是想了解为什么这段代码不起作用,如果有人有答案吗?

这是我的代码:

      -(NSString*)getAddress {
            NSString *iphone_ip = [NSString initWithString:@"127.0.0.1"];
            NSHost* myhost =[NSHost currentHost];
            if (myhost)
            {
                NSString *ad = [myhost address];
                if (ad)
                    strcpy(iphone_ip,[ad cStringUsingEncoding: NSISOLatin1StringEncoding]);
            }
            return [NSString stringWithFormat:@"%s",iphone_ip]; 
        }

第一个警告开启:

NSHost* myhost =[NSHost currentHost]

,表示当前主机未被识别。 第二个在

NSString *ad = [我的主机地址];

" 初始化 'struct NSData " 的不兼容 obj-c 类型,预期为 'struct NString" "

我可以想象,当第一个警告解决后,第二个警告可能会消失......

感谢您的帮助

保罗

【问题讨论】:

  • 当你有一个不需要修改的静态字符串时,不要使用任何 NSString 方法,只需存储字符串! NSString *iphone_ip = @"127.0.0.1"; 和 next 永远不会调用以 init 开头的方法而不先调用 alloc,我相信编译器也会对此发出警告,因为它不是类方法。
  • @Joe,谢谢,是的,这是有道理的,我写得太快了

标签: iphone objective-c nshost


【解决方案1】:

从这里的文档中可以看出,它记录在 OS X 库下。

NSHost

它实际上是 iPhone 上的私有 API。您应该仍然可以使用它,但您会收到编译器警告。

如果你需要找出你的 IPAddress,你可以使用 NSURLRequest 和 NSURLConnection 使用这个 URL:WhatIsMyIP API

该页面专门供程序员使用。他们要求您每 300 秒 ping 一次不超过一次。您可以在这里找到常见问题解答:FAQ

【讨论】:

  • 连同编译器警告一起,当您将其提交到 App Store 时,您会从 Apple 获得引导。
  • @thomashw 谢谢,问题是,我从appsamuck.com 拿了这个例子,似乎他们的很多代码都有几个“折旧”的方法,或者只是一个不起作用的代码。你知道我可以做些什么来让 ip 工作吗?
  • @Paul 添加到我的答案中。让我知道这是否有帮助。
  • @thomashw 谢谢,为什么是 nsURLConnection?我知道 NSURL 和 NSURLRequest 加载一个 url,但不知道 nsURLConnection。感谢您的链接
  • NSURLConnection 允许你加载 URL 请求。它允许您通过实现委托方法从服务器获取响应。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-10-11
  • 1970-01-01
  • 1970-01-01
  • 2018-06-18
  • 2013-04-19
  • 2019-01-28
  • 2017-08-10
相关资源
最近更新 更多