7

可以这样创建奥特莱斯

@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 strongweak但在第一个示例中它们是什么?strong, weak,nonatomicatomic.

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

4

3 回答 3

7

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

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

于 2013-05-15T12:57:12.583 回答
5

在 ARC 下,变量默认为 __strong,因此:

IBOutlet UIView *viewSearchBar;

是相同的

IBOutlet __strong UIView *viewSearchBar;

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

于 2013-05-15T12:59:14.200 回答
3

一般的经验法则,任何带有 an 的东西都IBOutlet应该被声明为弱。

看看IBOutlet 和其他的弱或强

于 2013-05-15T12:57:54.620 回答