rit*_*hik 0 iphone xcode cocoa cocoa-touch objective-c
我在许多使用委托代码的类中看到过使用此关键字而不是保留.
我们使用assign而不是retain.
我可以使用赋予myclass ivar.
如果我这样做那么它的含义是什么?
小智 6
这些关键字的含义与属性实现的内存管理有关:
retain:对象将为其属性保留新的值集,并将释放旧值copy:对象将获取新值的副本,并将释放旧值assign:对象不会对其属性值进行任何内存管理.请参阅Objective-C语言文档中的"setter语义".
在自动引用计数方案中,使用以下内存管理关键字:
strong:该对象保持对其属性的强(即拥有)引用weak:该对象保持对其属性的归零弱引用您应该分配(=保留计数没有变化)委托,因为您要避免"保留循环"(想不出更好的单词)
拿一个UITableView和一个UIViewController.
将UITableView添加到viewController时,保留它.然后,您将一个委托和一个数据源(也是一个委托)分配给您的UITableView.通常这是你的viewController.
如果tableview将保留数据源(你的viewController),那么会有一个"保留循环"
viewontroller保留tableview.
tableview保留了viewcontroller
viewcontrollers dealloc(你发布tableview的地方)永远不会被调用,因为tableview永远不会释放你的viewcontroller.反过来说.
因此,这既不会被取消分配.这就是为什么UITableView只分配数据源和委托.你应该在课堂上做同样的事情.
| 归档时间: |
|
| 查看次数: |
4010 次 |
| 最近记录: |