Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/40.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 大问题_Iphone_Objective C_Cocoa Touch - Fatal编程技术网

Iphone 大问题

Iphone 大问题,iphone,objective-c,cocoa-touch,Iphone,Objective C,Cocoa Touch,我有一个非常大的属性列表文件(大约2MB大),我需要在我的应用程序中使用其中的数据。但是,由于nsdictionary的大小,将所有数据存储在某种nsdictionary中是不正常的。我的意思是这样的: NSString *path = [[NSBundle mainBundle] pathForResource:@"file" ofType:@"plist"]; someDictionary = [[NSDictionary alloc] initWithContentsOfFile:path

我有一个非常大的属性列表文件(大约2MB大),我需要在我的应用程序中使用其中的数据。但是,由于nsdictionary的大小,将所有数据存储在某种nsdictionary中是不正常的。我的意思是这样的:

NSString *path = [[NSBundle mainBundle] pathForResource:@"file" ofType:@"plist"];
someDictionary = [[NSDictionary alloc] initWithContentsOfFile:path];

您建议从该plist获取数据或使用什么来代替plist文件。

在您分析应用程序之前,我不会对此进行优化。使用2MB的内存听起来很多,但有些游戏只为声音和图像加载了2MB内存的倍数。如果你的应用程序都是关于2MB的数据,那么我认为把它加载到内存并使用它是完全好的

如果另一方面加载太慢,那么您可能需要考虑使用<代码> NKEKEDIGOVER 和<代码> NKEKEDE UNCORVER < /COD>加载您的数据。它们比加载plist更快,若可以将数据分成逻辑部分,则可以有选择地加载数据块


当然,另一种选择是使用SQLite或核心数据。这些是数据“表”的理想选择。两者都可以处理大文件。

您应该尝试以某种方式拆分plist。如果不在内存中加载,可能没有真正的方法来读取这么大的plist。此外,您可以尝试使用一种二进制格式来序列化plist,这可能比纯文本更节省空间。