gpt4 book ai didi

ios - 声明字段/变量的位置之间的差异

转载 作者:行者123 更新时间:2023-11-29 04:07:51 25 4
gpt4 key购买 nike

简单的问题,因为我是 IOS 新手。

声明变量/字段等的位置有什么区别

选项1(头文件)

@interface ViewController : UIViewController {
UIView *testView;
}

选项2(头文件)

@interface ViewController : UIViewController
@property UIView *testView;

选项3(实现文件)

@implementation ViewController {
UIView *testView;
}
@end

最佳答案

没有真正的区别,因为它们都实现相同的结果。但详细信息如下:

选项 1 与选项 2:

声明 iVar 是多余的,因为属性会为您创建它。属性的主要工作是自动创建访问器方法(setX 和 getX),并且可以进一步定义如何访问这些方法(以原子方式或非原子方式)或如何将值存储在内存中(像任何 ivar 一样简单地分配?强还是弱?)。我的建议是您忘记选项 1 并始终坚持选项 2,例如

@property (nonatomic, strong) UIView *yourView;

--

选项 2 与选项 3

(让我们跳过选项 3 是另一个 iVar 的事实,假设您在这里声明了一个 @property,因为这更有趣)

除了以下事实之外没有区别:如果您在实现文件 (.m) 中声明该属性,则包含您 header 的其他人将看不到它,即它是“私有(private)的”。 (有时称为“私有(private)接口(interface)”)。事实上,它并不是真正私有(private)的,因为人们仍然可以调用选择器(obj-c 的动态性质)。尽管如此,隐藏您的实现并仅公开头文件中真正必要的内容是一个很好的做法。

因此,对于内部内容使用选项 3,对于外部内容使用选项 2

关于ios - 声明字段/变量的位置之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14904720/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com