Summary(摘要)
视频锁定
{$ currentTime | date:'mm:ss' $}
{$ timeLeft | date:'mm:ss' $}
下面列出了所有与retain/release
有关的方法:
方法 | 描述 |
---|---|
-retain | 将对象的reference count 增加1 |
-release | 将对象的reference count 减少1 |
-autorelease | 在未来的某个时间段,将对象的reference count 减少1 |
+alloc and +allocWithZone | 为对象分配内存空间,并将对象的reference count设为1 |
-copy, -mutableCopy, | 复制一个对象,并将新的对象的reference count设为1 |
copyWithZone: | |
-mutableCopyWithZone: | |
-init及以init开头的方法 | 初始化对象的实例变量,对象的reference count没影响 |
-new及以new开头的方法 | 为对象分配内存空间并初始化,将reference count设1 |
-dealloc | 直接回收对象(不考虑reference count是多少) |
下面列出了一些约定俗成的习惯,你需要记住它们:
- 在一个代码块中,如果
alloc
或者retain
或者copy
过一个对象,粗略地将,这个代码块就有义务去release
或者autorelease
这个对象,这是最好的平衡retain/release的方式。- 如果你接收了一个对象,这个对象应该在接收到其他消息或者
autorelease
时间到之前保持有效。所以你通常期望这个对象应该在这个方法里依然有效,甚至你可以将这个对象当作这个方法的返回值来返回的时候,这个对象依然有效。- 如果你想长期使用一个接收来的对象,你需要手动
retain
它。
Retain counts
(引用计数)只是一个参考,具体原因暂不详述。
在线练习
{$ activeFileHint $}