Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 音频流、NSTimer和解析JSON场景_Iphone_Objective C_Ios_Json_Parsing - Fatal编程技术网

Iphone 音频流、NSTimer和解析JSON场景

Iphone 音频流、NSTimer和解析JSON场景,iphone,objective-c,ios,json,parsing,Iphone,Objective C,Ios,Json,Parsing,考虑以下场景 播放音频流的应用程序。然后是“正在播放”视图,其中包含艺术家和歌曲标题、当前歌曲的专辑艺术以及制作人的姓名,以及小说明和图片。所有这些都来自一个JSON文件 为了知道JSON文件何时确实被更改,有一个额外的.crc文件,其中包含上次更改的JSON的时间戳/代码。当.crc的内容发生变化时,是时候更新JSON了 因此,我每10秒触发一次NSTimer,并打开一个NSURLConnection,最终返回.crc文件的数据。在ConnectionDiFinish上,我检查代码是否与前一个

考虑以下场景

播放音频流的应用程序。然后是“正在播放”视图,其中包含艺术家和歌曲标题、当前歌曲的专辑艺术以及制作人的姓名,以及小说明和图片。所有这些都来自一个JSON文件

为了知道JSON文件何时确实被更改,有一个额外的.crc文件,其中包含上次更改的JSON的时间戳/代码。当.crc的内容发生变化时,是时候更新JSON了

因此,我每10秒触发一次NSTimer,并打开一个NSURLConnection,最终返回.crc文件的数据。在ConnectionDiFinish上,我检查代码是否与前一个代码有所更改,如果条件为true,则加载JSON并最终解析其数据

我这里的问题是,对于应用程序来说,这个带有NSURLConnection的10秒计时器是否太长了?请记住,音频流一直在播放。当然,当应用程序进入后台时,计时器停止。然后当应用程序进入前台时,我强制加载JSON以更新视图并再次启动计时器

另外,正在播放的视图从根视图控制器分配给self.nowplayingview ivar(仅创建一次),self.nowplayingview被推送到堆栈中。这样,当JSON发生变化时,我可以从根视图更新Now Playing视图

你认为我每次都应该创建并推现在播放的视图吗


提前感谢。

为什么不使用新信息修改现有的“正在播放”视图?我也同意,这可能应该在后台线程中完成(如Richard Ross所述),或者确保调用是异步完成的,这样就不会导致应用程序/接口变得迟钝和无响应。

我认为使用NSThread比使用NSTimer更好,因此,更新JSON的代码仍然在后台执行。@RichardJ.RossIII-谢谢,我将尝试NSThread并查看它的运行情况。对.crc和JSON文件的调用都是异步的。我将尝试更改为NSThread而不是NSTimer,以了解它的运行情况。谢谢