Mar*_*eau 53
赋值用于原始值,如BOOL,NSInteger或double.对于对象,使用保留或复制,具体取决于您是要保留对原始对象的引用还是复制它.
唯一常见的例外是弱引用,您希望保留指向对象的指针,但由于引用周期而无法保留它.一个示例是委托模式,其中对象(例如表视图)保持指向其委托的指针.由于委托对象保留了表视图,因此让表视图保留委托将意味着不会释放任何一个.在这种情况下使用弱引用.在这种情况下,您将在创建属性时使用assign.
我认为,在处理对象时,您几乎总是使用保留而不是分配,而在处理原始类型、结构等时,您将使用分配(因为您不能保留非对象)。那是因为您希望具有属性的对象决定何时完成该对象,而不是其他东西。Apple 的内存管理指南指出:
\n\n\n\n\n有时您不希望处理接收到的对象;例如,您可能需要将对象缓存在实例变量中。在这种情况下,只有您知道何时不再需要该对象,因此您需要有能力确保该对象在您仍在使用时不会被丢弃。您可以使用保留消息来执行此操作,该消息保留挂起的自动释放的效果(或抢占稍后的释放或自动释放消息)。通过保留一个对象,您可以确保在使用完它之前它不会被释放。
\n
有关使用复制与保留的讨论,请参阅此问题。
\n| 归档时间: | 
 | 
| 查看次数: | 18218 次 | 
| 最近记录: |