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秒),那么系统会杀死你的应用程序,所以它会崩溃。现在更清楚了。如果没有人提供更好的答案,我认为这是被接受的…谢谢。