UIScrollVIEw *timeline = [[UIScrollVIEw alloc] initWithFrame:CGRectMake(0,20,320,34)];[self addSubvIEw:timeline];[timeline release];
最终我应该使用一个策略,其中一切都是自动释放的,并且使用保留/释放应该是特定情况的规则的例外?或者我应该通常使用retain / release,autorelease是从[Nsstring stringWithEtc …]等便利方法返回的对象的异常.
解决方法 有两项费用:(假设你有一个选项来避免自动释放的对象.)你有效地不必要地延长了对象的生命周期.这可能意味着您的内存占用将不必要地增长.在受限制的平台上,这可能意味着如果应用程序超出限制,则终止应用程序.即使您没有超出限制,也可能导致您的系统开始交换,这是非常低效的.
>查找当前自动释放池的额外开销,向其添加自动释放的对象,然后在结束时释放对象(额外的方法调用).这可能不是一个很大的开销,但它可以相加.
任何平台上的最佳做法是尽量避免自动释放,如果可以的话.
回答问题:
ultimately should I use a strategy where everything is autoreleased and using retain/release should be the exception to the rule for specific cases?
恰恰相反.
Or should I generally be using retain/release with autorelease being the exception for returned objects from convenIEnce methods like [Nsstring stringWithEtc…] ?
您应该始终使用retain / release,如果可以 – 在Nsstring的情况下,通常不需要使用stringWithEtc方法,因为存在initWithEtc等效项.
参见this question.
总结以上是内存溢出为你收集整理的objective-c – 在Cocoa中使用autorelease的成本是多少?全部内容,希望文章能够帮你解决objective-c – 在Cocoa中使用autorelease的成本是多少?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)