成都创新互联网站制作重庆分公司

iOS优化内存,提升性能之一-创新互联

在本章,你将学到:

成都创新互联-专业网站定制、快速模板网站建设、高性价比普安网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式普安网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖普安地区。费用合理售后完善,十载实体公司更值得信赖。
  • 复习旧的手工内存管理的策略

  • 对象所有权策略

  • 基于旧的手工内存管理之上的新的自动内存管理

  • 什么是对象的拷贝以及如何使用它

  • 如何恰当的使用autorelease和release方法

  • 复习内存测量

iPhone是一个内存有限的环境。但是,很多开发者要么低估了它,要么高估了它,因此并没有利用好iPhone上的可用内存来提升性能。还有一些开发者非常担心iPhone上的内存和性能,以至于他们过度优化,这样其实对代码的可阅读性是非常有害的,也使得日后的维护变得更加困难。

为了有效利用内存来提升性能,同时使代码更容易阅读,又不让应用崩溃,你需要理解iPhone环境下的内存结构。你需要学习如何避免在内存在中过多引用对象,它能够导致内存警告和程序崩溃。你同样需要知道何时retain或release一个对象;如果在内存中的对象太少,可能会使得你的计算变得缓慢,因为你需要重新构造对象或从文件系统中加载。

简单的回顾

本部分是学习新的自动引用计数(ARC)的一个很好的过渡。有些人可能对于转到新的课程会有些迷惑。我希望本部分能够帮助你非常顺利的过渡到新的ARC机制上。

旧的对象所有权策略

如果A对象有B对象的一个强引用,那么A对象需要手动的release对象B,这是旧的概念。如果A对象alloc,copy,mutableCopy,new或retain对象B,那么A对象就有了对象B的强引用。另一方面,如果A对象没有使用这些方法,那么A对象拥有B对象的弱引用。

对于旧的内存管理机制,如果你的对象或方法有另一个对象B的强引用,你有责任release或autorelease对象B。每一个B对象的强引用都会使得它的引用计数加1。如果没有任何对象拥有B对象的强引用,换句话说,B对象的引用计算为0,B对象就会被deallocated(Listing 7.1)。

Listing 7.1. Release the Object if You Have a Strong Reference

- (void)doSomething {
    NSObject *obj = [[NSObject alloc] init];

    NSLog(@"obj: %@", obj);
    [obj release];

}

AutoRelease

autorelease方法会将对象发送到一个池中,然后声明这个对象稍后将要被release掉。使用这个方法,你不想拥有任何对象的强引用,但是你也不想它被dellocated。请查看Listing 7.2 。

Listing 7.2. Memory Issue

  • -  (NSObject *)getObj {
        NSObject *obj = [[NSObject alloc] init];

  •     return obj;

    }

  • -  (void)anotherMethod {
        NSObject *myObj = [self getObj];
        // do something
        // Should I release the object here?

  •    [myObj release];

    }

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


文章标题:iOS优化内存,提升性能之一-创新互联
文章来源:http://cxhlcq.com/article/pcjse.html

其他资讯

在线咨询

微信咨询

电话咨询

028-86922220(工作日)

18980820575(7×24)

提交需求

返回顶部