Iphone 使用NSDictionary';initWithContentsOfURL';而是可达性

Iphone 使用NSDictionary';initWithContentsOfURL';而是可达性,iphone,ios,nsdictionary,initwithcontentsofurl,Iphone,Ios,Nsdictionary,Initwithcontentsofurl,我想更好地了解NSDictionary 此函数自行管理连接故障? 从NSDictionary的initWithContentsOfURL参考: -(id)initWithContentsOfURL:(NSURL*)aURL 返回值 可能不同于的初始化字典 在aURL字典中包含接收者的原件,如果是,则为零 出现错误或资源的内容无效 字典的表示法 可以,但不指定传递的url是否有效 但是由于我确信我的plist格式良好,我可以使用所讨论的方法来查看连接是否可用,而不是使用可达性.h。当然,这只是为了

我想更好地了解
NSDictionary

此函数自行管理连接故障?
NSDictionary
initWithContentsOfURL
参考:

-(id)initWithContentsOfURL:(NSURL*)aURL

返回值

可能不同于的初始化字典 在aURL字典中包含接收者的原件,如果是,则为零 出现错误或资源的内容无效 字典的表示法

可以,但不指定传递的url是否有效

但是由于我确信我的
plist
格式良好,我可以使用所讨论的方法来查看连接是否可用,而不是使用
可达性.h
。当然,这只是为了了解数据连接是否可用,而不是了解哪种连接处于活动状态(例如WiFi等)。 我这样说是因为如果我在飞机模式下做一个简单的测试,
[dict count]始终返回0

NSURL * plist = [NSURL URLWithString: @ "http://www.example.com/example.plist"];
NSDictionary * dict = [[[NSDictionary alloc] initWithContentsOfURL:plist] autorelease];
  if ([dict count] == 0) {
      //no connection
  }

TIA.

是的,你可以做到。请记住,
[[NSDictionary alloc]initWithContentsOfURL:plist]
是一个同步阻塞调用。如果阻止主线程的时间过长,那么将得到0x8BADF00D,看门狗将终止进程。

您的意思是如果plist的大小较大,因为我看不到其他可能长时间阻止主线程的原因。如果我错了,请纠正我。如果网络连接由于某种原因而变慢,DNS解析,任何导致您的请求变慢的网络问题……当然,当您说“杀死您的进程”时,您的意思是函数返回零或应用程序崩溃?!如果主线程阻塞的时间太长(~10秒),那么系统会杀死你的应用程序,所以它会崩溃。现在更清楚了。如果没有人提供更好的答案,我认为这是被接受的…谢谢。