what is diff. b/w @property (nonatomic,assign) and @property (nonatomic,retain)
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
Are @property(nonatomic)ivar @property(nonatomic,assign)ivar the same or different?
我在许多使用委托的类中看到过,委托使用这个关键字assign而不是retain。
我们用分配代替保留。
我可以用assign给我的班级ivar吗?
如果我喜欢的话,那它的意思是什么?
您应该分配(=retain count中没有变化)委托,因为您希望避免"retain loops"(无法想到更好的单词)
采用uiTableView和uiViewController。
当你把UITababVIEW添加到你的VIEW控制器中时,你会保留它。然后,将委托和数据源(也是委托)分配给UITababVIEW。通常这是你的VIEW控制器。
如果TabLVIEW保留数据源(VIEW Controller),将有一个"保留循环"。
ViewController保留TableView。TableView保留视图控制器
永远不会调用viewcontrollers dealloc(释放tableview的地方),因为tableview永远不会释放viewcontroller。另一方面。
因此,两者都不会被交易。这就是为什么UITableView只分配数据源和委托。你在课堂上也应该这样做。
这些关键字的含义与属性实现的内存管理相关:
retain :对象将保留其属性的新值集,并释放旧值copy :对象将复制新值,并释放旧值。assign :对象不会对其属性值进行任何内存管理。
请参见Objective-C语言文档中的"setter语义"。
在自动引用计数方案中,使用以下内存管理关键字:
strong :对象对其属性保持强(即拥有)引用。weak :对象对其属性保持零弱引用