我正在调试从Internet获取主数据的应用程序中看到的一些不一致的行为。我在模拟器中没有看到问题,只是在设备上,所以我想在模拟器中重现网络和连接环境。

在模拟器中是否有禁用网络的方法?

(我正在远程连接到Mac上编写代码,目前没有其他选择,所以不能禁用操作系统网络)。


当前回答

使用一个简单的法拉第笼来阻止或限制外部射频信号电平。

你可以用铝箔纸自己制作。如果您想要阻塞数据服务,那么开口应该小于数据服务的波长。

800兆赫有一个37厘米(14”)的波长 1900兆赫有一个16厘米(6”)的波长。

这在实际设备上比在模拟器上工作得更好,因为Mac在法拉第笼内很难工作;-)

其他回答

您可以使用ohhttpstub和存根网络请求特定的url失败。

有两种方法禁用iOS模拟器的互联网连接:

拔掉网络连接 关闭Wi-Fi

这是最简单的方法。

只要在Mac OS x上关掉你的Wi-Fi就行了。

是的。在Xcode中,你可以打开“打开开发人员工具→更多开发人员工具”菜单,下载“额外的Xcode工具”,其中有网络链接调节器。

使用此工具,您可以模拟不同的网络场景(例如100%丢失、3G、高延迟DNS等),还可以创建自己的自定义场景。

一个可能是疯狂的想法或补丁:

只需切换网络可达性标志

这是我用来在运行时通过触发“模拟器内存警告”切换我的标志的代码,它是完全安全的。只要确保代码应该只处于调试模式

- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application
{
#ifdef DEBUG
    isInternetAvailable = !isInternetAvailable;
#endif
}