摘要: 一、前言 对于大多数从C++或者JAVA转过来学习Object-C(以下简称OC)的人来说,OC这门语言看起来非常奇怪,用起来也有点麻烦。 OC没有像JAVA一样的垃圾回收机制,也就是说,OC编程需要程序员手动去管理内存。这就是为什么它烦的原因,苹果却一直推崇开发者在有限硬件资源内写出最优化的代码,使用CPU最少,占用内存最小。二、基本原理对象的创建: OC在创建对象时,不会直接返回该对象,而是返回一个指向对象的指针,因此出来基本类型以外,我们在OC中基本上都在使用指针。 ClassA *a = [[ClassA alloc] init]; 在[ClassA alloc]的时候,已经发送消息通 阅读全文
posted @ 2013-06-05 16:26 ygm900 阅读(253) 评论(0) 推荐(0)
摘要: 很多童鞋对于IOS中的内存管理处理的不好,有时候感觉自己已经掌握了,其实用起来的时候往往出现很多的内存泄露或者因为内存管理的不恰当导致程序崩溃!网上有一片很详细的内存管理文章,很多人估计嫌长,不愿意去看,我就写一个简单易懂的分享。我分四块来讲解,这篇文章比较简单,因为我不想把你们搞晕,其实总的来说就一个原则!一、IOS内存管理的机制IOS中没有垃圾回收机制(IOS5中好像已经有了,但是目前还不太实用),所以基本一切都是自己手动管理。IOS中采用引用计数的内存管理方式,啥意思呢?讲的通俗点就是说一块内存地址是否应该被释放是又retaincount来决定的,如果这块内存地址的retaincoun. 阅读全文
posted @ 2013-06-05 15:13 ygm900 阅读(1045) 评论(0) 推荐(1)
摘要: Objective-C提供了三种内存管理方式:manual retain-release(MRR,手动管理),automatic reference counting(ARC,自动引用计数),garbage collection(垃圾回收)。iOS不支持垃圾回收;ARC作为苹果新提供的技术,苹果推荐开发者使用ARC技术来管理内存;这篇笔记主要讲的是手动管理。内存管理的目的是:1.不要释放或者覆盖还在使用的内存,这会引起程序崩溃;2.释放不再使用的内存,防止内存泄露。iOS程序的内存资源是宝贵的。MRR手动管理内存也是基于引用计数的,只是需要开发者发消息给某块内存(或者说是对象)来改变这块内存的 阅读全文
posted @ 2013-06-05 15:08 ygm900 阅读(236) 评论(0) 推荐(1)
摘要: iOS开发UIViewController内存管理是本文要介绍的内容,在iOS3.0 后,UIViewController多了一个叫做 viewDidUnLoad 的方法。不少人都不清楚这个方法的具体意义,苹果的文档也就一句 ”Called when the controller’s view is released from memory” 简单的解释了下,并要求你把 IBOutlet 绑定的视图给清空,为什么呢? 先看下UIViewController从创建 view 到展示的流程的几个函数 -initWithNibName:bundle: 这两个方法都是初始化一个 vc,但请注意... 阅读全文
posted @ 2013-06-05 15:04 ygm900 阅读(196) 评论(0) 推荐(0)
摘要: 1. 内总管理原则(引用计数) IOS的对象都继承于NSObject, 该对象有一个方法:retainCount ,内存引用计数。 引用计数在很多技术都用到: window下的COM组件,多线程的信号量,读写锁,思想都一样。 (一般情况下: 后面会讨论例外情况) alloc 对象分配后引用计数为1 retain 对象的引用计数+1 copy copy 一个对象变成新的对象(新内存地址) 引用计数为1 原来对象计数不变 release 对象引用计数-1 如果为0释放内存 autorelease 对象引用计数-1 如果为0不马上释放,最近一个个pool时释... 阅读全文
posted @ 2013-06-05 15:00 ygm900 阅读(215) 评论(0) 推荐(0)
摘要: 转:http://www.raywenderlich.com/zh-hans/30863/ios应用崩溃日志揭秘2 阅读全文
posted @ 2013-06-05 11:49 ygm900 阅读(183) 评论(0) 推荐(0)
摘要: ARC是什么ARC是iOS 5推出的新功能,全称叫 ARC(Automatic Reference Counting)。简单地说,就是代码中自动加入了retain/release,原先需要手动添加的用来处理内存管理的引用计数的代码可以自动地由编译器完成了。该机制在 iOS 5/ Mac OS X 10.7 开始导入,利用 Xcode4.2 可以使用该机制。简单地理解ARC,就是通过指定的语法,让编译器(LLVM3.0)在编译代码时,自动生成实例的引用计数管理部分代码。有一点,ARC并不是GC,它只是一种代码静态分析(Static Analyzer)工具。那么在xCode中经常需要导入一些外来的 阅读全文
posted @ 2013-06-05 00:59 ygm900 阅读(1903) 评论(0) 推荐(0)
摘要: 参考:Finding iPhone Memory Leaks: A “Leaks” Tool Tutorial http://www.189works.com/article-104512-1.html 上面文章的翻译http://blog.csdn.net/cloudhsu/article/details/5754818 [IPhone]如何使用Leak检查内存泄漏 阅读全文
posted @ 2013-06-05 00:29 ygm900 阅读(220) 评论(0) 推荐(0)