首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >属性属性

属性属性
EN

Stack Overflow用户
提问于 2012-07-20 07:35:25
回答 2查看 203关注 0票数 0

在子类化时,我倾向于为我的所有属性赋予属性(非原子,强),除了IBOutlet,当不是nib中的顶级对象时,它是(非原子,弱)。

是否有这样的习惯可能是不安全的,并造成保留循环或具有其他此类负面影响的情况?

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-20 08:19:52

是的,这个习惯可能是不安全的,因为你似乎并没有真正遵循属性给定的规则。

要做到这一点,正确的方法是考虑如何使用属性,并为其提供相应的属性。

在某些情况下,这可能会出错:

  • 委派:保留周期。
  • 内存管理:在两个类之间共享的映像可能不再使用,您必须在这两个类上将其设置为空。
  • 线程:将由多个线程访问的属性。

给你一个非常快速的指南:

如果属性主要属于类,即使类可能共享它: strong类需要该属性才能工作: strong (但不要忘记在不再需要指针时将指针设为空)如果该属性属于另一个类:弱委托:弱IBOutlets:弱

对于并发属性,您通常可以使用非原子属性,除非您知道该属性可能被多个线程使用,然后将其设置为原子属性。

这只是一个非常模糊的指南,但在ARC下对我来说工作得很好。

票数 1
EN

Stack Overflow用户

发布于 2012-07-20 07:46:17

对于NSStrings,您应该使用(非原子,复制)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11570838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档