【问题标题】:What is the difference between a strong and weak button in Objective c? [duplicate]Objective c中的强按钮和弱按钮有什么区别? [复制]
【发布时间】:2015-01-21 18:06:02
【问题描述】:

当声明一个按钮时,总是有两个选项作为按钮的属性:强和弱。它们之间有什么区别?另外,它是非原子的吗?例如:

@property (weak, nonatomic) IBOutlet UIButton *MyButton;

【问题讨论】:

标签: objective-c button memory-management nonatomic


【解决方案1】:

这一切都来自http://clickflickboom.com/strong-vs-weak/...

在定义属性时,您可以在(强)和(弱)之间进行选择。在这篇文章中,我将解释两者之间的区别。

@property (strong) NSString *myString;

这是指针的默认状态,但为了清楚起见,我仍然喜欢明确声明 strong。只要分配它的类仍然存在,强指针就会被保留。

@property (weak) NSString *myString;

弱引用意味着指针没有所有者,因此一旦不再需要它就会被释放(也就是说,没有其他东西指向它)。

最常见的是,您会为 IBOutlets 使用弱,例如 UITextFIeld、UILabels 和 UIButton 对象。这是一个例子:

在这种情况下,我正在为我的控制器视图中的按钮 (theButton) 创建一个 IBOutlet。 theButton 对象属于我的视图,而不是我的控制器,因此在这种情况下,弱属性比强属性更有意义。事实上,作为一般规则,IBOutlets 应始终设置为弱。

【讨论】:

    【解决方案2】:

    请阅读:

    Should IBOutlets be strong or weak under ARC?

    从实际的角度来看,在 iOS 和 OS X 中的 outlet 应该被定义为声明的属性。出口通常应该是弱的,除了从文件所有者到 nib 文件中的顶级对象(或者,在 iOS 中,故事板场景)应该是强的。因此,您创建的 Outlets 通常默认情况下很弱,因为:

    1. 您创建的 Outlets,例如视图控制器视图的子视图或窗口控制器的窗口,是对象之间的任意引用,并不暗示所有权。

    2. 强大的出口通常由框架类指定(例如,UIViewController 的视图出口,或 NSWindowController 的窗口出口)。

      @property (weak) IBOutlet MyView *viewContainerSubview;
      @property (strong) IBOutlet MyOtherClass *topLevelObject;
      

    【讨论】:

      猜你喜欢
      • 2015-10-21
      • 2012-06-16
      • 2012-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多