Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/41.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,便捷方式还是Alloc/Release?_Iphone_Objective C_Memory Leaks - Fatal编程技术网

iPhone,便捷方式还是Alloc/Release?

iPhone,便捷方式还是Alloc/Release?,iphone,objective-c,memory-leaks,Iphone,Objective C,Memory Leaks,在为iPhone开发时,我遇到了一个顽固的内存泄漏问题,最终我找到了NSXMLParser。然而,在寻找这一点的同时,它让我想到可能会将我的许多便利方法更改为alloc/release。这样做有什么好的理由吗?在大型应用程序中,我可以看出快速释放内存是一个更好的主意,但在小型应用程序中,这两种方法之间还有其他区别吗 NSNumber *numberToAdd = [NSNumber numberWithInt:intValue]; dostuff ... 或 加里干杯。这两种方法在内存管理方面

在为iPhone开发时,我遇到了一个顽固的内存泄漏问题,最终我找到了NSXMLParser。然而,在寻找这一点的同时,它让我想到可能会将我的许多便利方法更改为alloc/release。这样做有什么好的理由吗?在大型应用程序中,我可以看出快速释放内存是一个更好的主意,但在小型应用程序中,这两种方法之间还有其他区别吗

NSNumber *numberToAdd = [NSNumber numberWithInt:intValue];
dostuff ...


加里干杯。

这两种方法在内存管理方面没有区别。在gui应用程序中,NSAutoreleasePool在运行循环的每一次旋转中都会被创建和销毁,因此像这样的小对象很可能会在几微秒内被销毁。我唯一能看到它的重要性的时候是,如果你在一个辅助线程上,你将要创建大量的自动释放对象。但是,我们始终欢迎您创建和销毁自己的自动释放池。

这两种方法在内存管理方面没有区别。在gui应用程序中,NSAutoreleasePool在运行循环的每一次旋转中都会被创建和销毁,因此像这样的小对象很可能会在几微秒内被销毁。我唯一能看到它的重要性的时候是,如果你在一个辅助线程上,你将要创建大量的自动释放对象。但是,我们始终欢迎您创建和销毁自己的自动释放池。

[NSNumber numberWithInt:1]==[[NSNumber alloc]initWithInt:1]自动释放]

尽管numberWithInt:更方便,但执行的代码也更多。在内部,autorelease将该对象粘贴到不断增长的阵列上

如果您在循环中执行大量分配,您可能会从自己管理内存中获益。在UI操作的正常过程中,自动释放的成本可以忽略不计


地块的实际定义取决于您和剖面仪。在哪一点上,可读性更强的代码的优势会失去更快代码的优势?

[NSNumber numberWithInt:1]==[[NSNumber alloc]initWithInt:1]自动释放]

尽管numberWithInt:更方便,但执行的代码也更多。在内部,autorelease将该对象粘贴到不断增长的阵列上

如果您在循环中执行大量分配,您可能会从自己管理内存中获益。在UI操作的正常过程中,自动释放的成本可以忽略不计


地块的实际定义取决于您和剖面仪。在什么情况下,可读性更强的代码的优势会输给速度更快的代码的优势?

非常感谢Dave,这正是我所追求的。我真的只是想检查一下我是否走上了正确的道路。谢谢你,你的回答真的很有帮助:非常感谢戴夫,正是我所追求的。我真的只是想确认一下我的思路是否正确。谢谢你,你的回答真的很有帮助:
NSNumber *numberToAdd = [[NSNumber alloc] initWithInt:intValue];
doStuff ...
[numberToAdd release];