Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/110.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
Objective c 应用程序在设备上不顺畅?_Objective C_Ios_Xcode_Ipad_Memory Management - Fatal编程技术网

Objective c 应用程序在设备上不顺畅?

Objective c 应用程序在设备上不顺畅?,objective-c,ios,xcode,ipad,memory-management,Objective C,Ios,Xcode,Ipad,Memory Management,我制作了一个管理应用程序,在表格中显示分配的数据,如果我调试应用程序或只是在模拟器上运行应用程序,应用程序运行非常平稳,一点也不滞后,但当我在iPad上运行/调试/发布应用程序时,它会自己,它会滞后,并在1/2秒后响应用户交互……这是为什么?我根本没有内存泄漏,我完美地分配和释放了我使用的对象(至少我认为是这样) 我就是这样做的 if([tablearrayTENNANTSID retainCount] != 1){tablearrayTENNANTSID = [[NSMutableArray

我制作了一个管理应用程序,在表格中显示分配的数据,如果我调试应用程序或只是在模拟器上运行应用程序,应用程序运行非常平稳,一点也不滞后,但当我在iPad上运行/调试/发布应用程序时,它会自己,它会滞后,并在1/2秒后响应用户交互……这是为什么?我根本没有内存泄漏,我完美地分配和释放了我使用的对象(至少我认为是这样)

我就是这样做的

if([tablearrayTENNANTSID retainCount] != 1){tablearrayTENNANTSID = [[NSMutableArray alloc]init]; }
    else {[tablearrayTENNANTSID removeAllObjects];}
所以。。基本上,数组retainCount不能高于1,因为这是它被分配的唯一位置,当我想在数组中放入新数据时,我会移除数组中的所有对象,并将从JSON数组的


已经谢谢你了

永远不要使用
重新计数
作为参考!
retainCount
仅用于实习生管理对象。将其与零进行比较。如果此时
retainCount
为2,则内存泄漏。。。 这样做:

if(tablearrayTENNANTSID == nil){
    tablearrayTENNANTSID = [[NSMutableArray alloc]init]; 
}
else {
    [tablearrayTENNANTSID removeAllObjects];
}
dealoc
(假设
tablerarraytennantsid
是iVar)中,将其释放


Sandro Meier

永远不要使用
重新计数
作为参考!
retainCount
仅用于实习生管理对象。将其与零进行比较。如果此时
retainCount
为2,则内存泄漏。。。 这样做:

if(tablearrayTENNANTSID == nil){
    tablearrayTENNANTSID = [[NSMutableArray alloc]init]; 
}
else {
    [tablearrayTENNANTSID removeAllObjects];
}
dealoc
(假设
tablerarraytennantsid
是iVar)中,将其释放

桑德罗·迈耶

我制作了一个管理应用程序,在表格中显示分配的数据,如果我调试应用程序或只是在模拟器上运行应用程序,应用程序运行非常平稳,一点也不滞后,但当我在iPad上运行/调试/发布应用程序时,它会自己,它会滞后,并在1/2秒后响应用户交互……这是为什么

模拟器不模拟硬件。模拟器模拟操作系统

您的应用程序在模拟器中的执行速度将提高数倍。一个显著的区别是处理器速度和逻辑核数

当然,模拟器和实际设备之间还有其他硬件和软件差异(例如,模拟器不模拟浮点指令的相对成本——英特尔CPU比arm设备CPU快得多)。模拟器上也会有更多内存(通常)。所有这些差异加起来,使您在模拟器上体验到更快的执行时间

我根本没有内存泄漏,我完美地分配和释放了我使用的对象(至少我认为是这样)

您可以通过使用仪器运行应用程序来确认这一点

至于你的应用程序速度慢的原因:你可以在设备上分析(发布版本)你的应用程序,以确定它在哪里花费时间。如果归结到cpu时间,而您的目标是ipad,请记住您有两个内核可供利用

我制作了一个管理应用程序,在表格中显示分配的数据,如果我调试应用程序或只是在模拟器上运行应用程序,应用程序运行非常平稳,一点也不滞后,但当我在iPad上运行/调试/发布应用程序时,它会自己,它会滞后,并在1/2秒后响应用户交互……这是为什么

模拟器不模拟硬件。模拟器模拟操作系统

您的应用程序在模拟器中的执行速度将提高数倍。一个显著的区别是处理器速度和逻辑核数

当然,模拟器和实际设备之间还有其他硬件和软件差异(例如,模拟器不模拟浮点指令的相对成本——英特尔CPU比arm设备CPU快得多)。模拟器上也会有更多内存(通常)。所有这些差异加起来,使您在模拟器上体验到更快的执行时间

我根本没有内存泄漏,我完美地分配和释放了我使用的对象(至少我认为是这样)

您可以通过使用仪器运行应用程序来确认这一点


至于你的应用程序速度慢的原因:你可以在设备上分析(发布版本)你的应用程序,以确定它在哪里花费时间。如果归结到cpu时间,而您的目标是ipad,请记住,您有2个内核可供使用。

我用仪器进行了测试,完全没有泄漏:),但thnx提供了信息@不客气。在评测时,还要评测设备上的执行情况,以获得准确的评测,因为执行情况可能会有所不同。我使用仪器进行了测试,没有任何泄漏:),但thnx提供了信息@不客气。评测时,还要评测设备上的执行情况,以获得准确的评测,因为执行情况可能会有所不同。嗯,我不知道我不应该使用retainCount作为引用,ty代表该提示:),那么我将使用nil作为引用。嗯,我不知道我不应该使用retainCount作为引用,ty代表该提示:),那么我将使用nil作为引用。您不仅不应该使用retainCount--甚至不应该用于调试--您还应该知道它永远不会返回0。您不仅不应该使用retainCount--甚至不应该用于调试--您还应该知道它永远不会返回0。