Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/105.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.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
为了在iOS中获得最佳性能,在哪里放置数百个数组声明?_Ios_Objective C_Viewwillappear - Fatal编程技术网

为了在iOS中获得最佳性能,在哪里放置数百个数组声明?

为了在iOS中获得最佳性能,在哪里放置数百个数组声明?,ios,objective-c,viewwillappear,Ios,Objective C,Viewwillappear,我需要为我的应用程序提供一个二维查找表。我希望尽可能简单地执行此操作,因此我只制作了一系列数组,然后在需要时调用适当的数组和数组中的位置。但是,这需要大约500个阵列。。。以下是一段代码片段: NSArray *key_1 = [[NSArray alloc] initWithObjects:@"1",@"0.5038",@"0.8054",@"4.51",nil]; NSArray *key_2 = [[NSArray alloc] initWithObjects:@"1",@"0.486

我需要为我的应用程序提供一个二维查找表。我希望尽可能简单地执行此操作,因此我只制作了一系列数组,然后在需要时调用适当的数组和数组中的位置。但是,这需要大约500个阵列。。。以下是一段代码片段:

 NSArray *key_1 = [[NSArray alloc] initWithObjects:@"1",@"0.5038",@"0.8054",@"4.51",nil];
 NSArray *key_2 = [[NSArray alloc] initWithObjects:@"1",@"0.4869",@"0.8009",@"4.7",nil];
 NSArray *key_3 = [[NSArray alloc] initWithObjects:@"1",@"0.4708",@"0.7967",@"4.9",nil];
 NSArray *key_4 = [[NSArray alloc] initWithObjects:@"1",@"0.4554",@"0.7926",@"5.09",nil];
 NSArray *key_5 = [[NSArray alloc] initWithObjects:@"1",@"0.4407",@"0.7889",@"5.27",nil];
 NSArray *key_6 = [[NSArray alloc] initWithObjects:@"1",@"0.426",@"0.7853",@"5.46",nil];
 NSArray *key_7 = [[NSArray alloc] initWithObjects:@"1",@"0.4133",@"0.7819",@"5.65",nil];
然而,我有两个关切。首先,如果这500个数组声明导致应用程序暂时挂起,我应该将此代码放在哪里,以便它在第一次启动时仍在应用程序的启动屏幕上执行?会出现在
视图中吗

第二(这可能是一个新问题),如果我将这些数组声明放在我的FirstViewController.m中的
viewWillAppear
或其他方法中,我如何使它们可以被我的SecondViewController.m中的方法访问


谢谢

所以你有两个选择

第一:您可以在不同的线程(而不是主线程)上加载这些数组。您可以使用GCD创建一个新线程,并将一个数组作为块传递给这些线程。通过这样做,您可以解决您的第一个问题“暂时挂起”


第二:正如Mrunal提到的“尝试使用plist文件进行此操作。以字典格式(键值)写入数据。并使用特定的键仅获取所需的数据。”


我喜欢选择第二个选项,但如果您有动态数组,请使用第一个选项

尝试为此使用plist文件。以字典格式(键值)写入数据。并使用特定密钥仅获取所需的数据。希望这有帮助:这些浮点值是否包装在NSString中?这看起来像是一个好的老式普通c数组的工作。在把东西放到第二个线程之前,我会分析任务实际花费的时间。实例化500个数组,每个数组有4个NSStrings文本(!),可能需要不到一眨眼的时间。