【问题标题】:Correct Way to Declare IBOutlets in Header File under ARC?在ARC下的头文件中声明IBOutlets的正确方法?
【发布时间】:2012-07-24 14:32:02
【问题描述】:

在 ARC 之前,我会在标题中声明 IBOulets,如下所示:

- (IBOutlet) UIButton * aButton

@property (nonatomic, retain) IBOutlet UIButton * aButton;

然后在.m文件中

@synthesize aButton;

在 arc 下执行上述操作的等效正确方法是什么?我可以声明吗:

@property (weak)IBOutlet UIButton * aButton ?

谢谢。

【问题讨论】:

  • 这里有更好的答案stackoverflow.com/questions/7678469/…
  • 文档说您应该使用strong 指针作为网点,但如果您使用weakunsafe_unretained 指针作为UIView 内的静态网点,这会被@987654330 捕获@指针也一样,以后不会有问题了。
  • 你曾经这样声明IBOutlet的...?

标签: iphone objective-c automatic-ref-counting iboutlet


【解决方案1】:
@property (strong)IBOutlet UIButton *aButton

【讨论】:

    【解决方案2】:

    在某些情况下,您可能希望改变强/弱属性。看看:Should IBOutlets be strong or weak under ARC?

    【讨论】:

    • 是的,谢谢 - 我读到了,但不确定“链接到文件所有者的顶级对象”是什么意思
    • mattjgalloway 的评论总结了这个概念:“它意味着 NIB 中位于根级别的对象,即假设您在其中实例化了另一个视图,它不是主视图的直接子视图,然后它需要有强有力的参考。”当您在 Interface Builder 中查看 NIB 的对象时,它们中的大多数都嵌套在主视图下方。这些可以是弱引用。如果您在根级别有任何其他视图,则需要对这些视图进行强引用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-21
    • 2018-05-14
    • 2018-08-28
    • 1970-01-01
    相关资源
    最近更新 更多