Memory Management in Objective-C

基本法则: You own any object you create You create an object using a method whose name begins with “alloc”, “new”, “copy”, or “mutableCopy” (for example, alloc, newObject, or mutableCopy). 你用alloc, new, copy或者mutableCopy消息创建出来的对象,所有权归你。 You can take ownership of an object using retain A received object is normally guaranteed to remain valid within the method it was received in, and… Continue reading Memory Management in Objective-C

Objective-C Overview

在网上找到一篇文章,大致介绍了一下Objective-C的语法。用于复习很不错。简短,适合初学Objective-C的同学复习。 整篇文章谈到了以下内容: 方法调用(发消息) 访问函数(Accessor) 创建对象 基本内存管理 设计类 实现类 更多内存管理方面讨论 日志 属性 nil上消息发送 类别 其中的内存管理和日志都是针对cocoa的NSObject和NSLog。 这里面没有讲到Protocol,另外一些2.0的内容也没有。不过依旧是很不错的复习资料。

Objective-C内存管理

总结表格: 获得方式 临时变量 成员变量 通过alloc/copy/init方式获得 用完release 再dealloc中release 其他方式获得 啥都不用管,也不用release 调用retain,并在dealloc中release 这其中的原因是alloc/copy/init方式获得的对象有retainCount = 1,所以在生命周期结束时需要手动release,不管是临时变量还是成员变量。对于其他方式获得的对象,由于约定这种对象都是autorelease的。所以对于临时变量正好啥都不用做。但是成员变量啥都不做就不行了,因为出了生命周期就会autorelease了,所以额外retain一下即可。既然retain了,在成员变量所属的类的dealloc中再release。 以下是Learn Objective-C on Mac的例子: 对于临时变量: [c light=”true” toolbar=”false”] NSMutableArray *array; array = [[NSMutableArray alloc] init]; // count: 1 // use the array [array release]; // count: 0 NSMutableArray *array; [/c] —————————————————————– [c light=”true” toolbar=”false”] array = [NSMutabelArray arrayWithCapacity: 17]; // count: 1,… Continue reading Objective-C内存管理