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