Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.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
Multithreading 多线程搜索设计_Multithreading_Cocoa - Fatal编程技术网

Multithreading 多线程搜索设计

Multithreading 多线程搜索设计,multithreading,cocoa,Multithreading,Cocoa,亲爱的社区。我想了解一些小任务,它们可以帮助我提高应用程序的性能。 我有一个字典数组,在单例区域中有对象、字典和键 代码 国家 具体的 我必须从该数组中接收国家/地区和特定值。 我的应用程序的第一个版本是使用谓词,但后来我通过这种方式发现了很多内存泄漏和性能问题。应用程序速度太慢,不能很快清空内存堆栈,达到1G左右并崩溃 我的第二个版本稍微复杂一点。我在单例区域的数组中填充了每个代码和函数的对象,如下所示 -(void)codeIsSame:(NSArray *)codeForCheck; {

亲爱的社区。我想了解一些小任务,它们可以帮助我提高应用程序的性能。 我有一个字典数组,在单例区域中有对象、字典和键 代码 国家 具体的

我必须从该数组中接收国家/地区和特定值。 我的应用程序的第一个版本是使用谓词,但后来我通过这种方式发现了很多内存泄漏和性能问题。应用程序速度太慢,不能很快清空内存堆栈,达到1G左右并崩溃

我的第二个版本稍微复杂一点。我在单例区域的数组中填充了每个代码和函数的对象,如下所示

-(void)codeIsSame:(NSArray *)codeForCheck;
{
//@synchronized(self) {
NSString *code = [codeForCheck objectAtIndex:0];

if ([_code isEqualToString:code]) 
{
    code = nil;
    NSUInteger queneNumberInt = [[codeForCheck objectAtIndex:1] intValue];
    NSLog(@"We match code:%@ country:%@ specific:%@ quene:%lu",_code, _country,_specific, queneNumberInt);
    [[ProjectArrays sharedProjectArrays].arrayDictionaryesForCountryCodesResult insertObject:_result atIndex:queneNumberInt];
}

code = nil;
//}
return;
}
接收必要问题的方式是:

SEL selector = @selector(codeIsSame:);
[[ProjectArrays sharedProjectArrays].myCountrySpecificCodeListWithClass makeObjectsPerformSelector:selector withObject:codePlusQueueNumber];
这个版本工作得更好,没有内存泄漏,速度很快,但调试起来太难了。有时我收到空结果,我尝试同步线程作业,但它仍然不能稳定工作。这种方式的主要问题是,出于奇怪的原因,有时我的单例数组中没有结果。我试着调试它,为不同的线程使用数组索引,结果发现类并没有找到答案

核心数据不允许我复制主MOC,对于多线程设计,我不能使用它(锁定和解锁不是一个好主意,这就是在代码的锁定/解锁部分产生太多错误的方式)

也许任何人都可以建议,在这种情况下,我可以做得更好吗?我需要一个最佳的方法来做出决定,这将工作稳定,将易于编码和理解它


我目前的解决方案是使用NSDictionary,其中是一个键是一个代码,在该代码下我有一个国家/特定的字典。工作也很好,但不要决定一个主要任务-如果需要从太多线程多次访问同一数据,则使用核心数据。

Wow-我认为这个主题比能够书面解释它更大。。.但是…让我们抱最好的希望:)。。我建议读一本设计模式的书,但我知道这并不能回答你的问题……是的:)我无论如何都在通过实验的方式找到解决方案,但可能是大师试图分享他们的知识:)核心数据不能与多线程一起工作,以防使用自动排列阵列控制器。这是一个重要的部分,我现在有,这是改变我的设计应用程序。