IBOutlets强弱

时间:2013-05-15 12:54:45

标签: ios objective-c properties iboutlet

可以像这样创建出口

@interface SearchViewController : UIViewController<UISearchBarDelegate> {    
    IBOutlet UIView *viewSearchBar;
    IBOutlet UIScrollView *scrollVieww;
    IBOutlet UILabel *lblName;
}

也喜欢这个

@interface SearchViewController : UIViewController<UISearchBarDelegate> {

}

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

@end

我知道ARC中的nonatomic / atomic strong / weak,但在第一个示例中,它们是什么? strongweaknonatomicatomic

请向我解释或链接一些细节。

3 个答案:

答案 0 :(得分:7)

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

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

答案 1 :(得分:5)

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

IBOutlet UIView *viewSearchBar;

相同

IBOutlet __strong UIView *viewSearchBar;

关于在ARC下处理IBOutlets的推荐方法,请参阅: the answer to this

答案 2 :(得分:3)

一般的经验法则,任何带IBOutlet的东西都应该被宣布为弱。

查看weak or strong for IBOutlet and other