IBOutlets强弱

Rah*_*diq 7 properties objective-c iboutlet ios

可以像这样创建出口

@interface SearchViewController : UIViewController<UISearchBarDelegate> {    
    IBOutlet UIView *viewSearchBar;
    IBOutlet UIScrollView *scrollVieww;
    IBOutlet UILabel *lblName;
}
Run Code Online (Sandbox Code Playgroud)

也喜欢这个

@interface SearchViewController : UIViewController<UISearchBarDelegate> {

}

@property(nonatomic, weak) IBOutlet UIScrollView *scrollVieww;
@property(nonatomic, weak) IBOutlet UIView *viewSearchBar;
@property(nonatomic, weak) IBOutlet UILabel *lblName;

@end
Run Code Online (Sandbox Code Playgroud)

我知道nonatomic/ atomic strong/ weak在ARC,但在第一个例子中它们是什么?strong,weak,nonatomicatomic.

请解释或链接我的一些细节.

Dru*_*erB 7

默认情况下,ARC下的实例变量很强.它们既不是原子也不是非原子,因为它们只是实例变量而不是存取方法.原子/非原子标志与多线程有关.它们指定访问器方法是否应该是原子的.当访问器是原子的时,执行不能更改为访问器方法中间的其他线程.当它是非原子的时,没有这样的限制.

注意: IBOutlet是一个什么都没有的typedef.它只是Interface Builder的标志,没有与内存相关的功能.

  • +1顺便说一句,(我知道你已经知道了这一点,但为了未来读者的利益),我希望读者不要将你的评论解释为建议让它成为"原子"确保线程安全.它没有.请参阅[属性默认为原子](http://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/EncapsulatingData/EncapsulatingData.html#//apple_ref/doc/uid/TP40011210-CH5-SW37 )在_Programming with Objective-C_ guide. (2认同)

Mik*_*ard 5

默认情况下,变量是__strong在ARC下:

IBOutlet UIView *viewSearchBar;

是相同的

IBOutlet __strong UIView *viewSearchBar;

关于在ARC下处理IBOutlets的推荐方法,请参阅: 答案

  • 实际上,建议IBOutlets通常很弱.请参阅我在答案中添加的链接问题. (3认同)