gpt4 book ai didi

iphone - 弧: what's the difference between a member variable and property?

转载 作者:行者123 更新时间:2023-11-29 04:30:37 24 4
gpt4 key购买 nike

我有一个 NSArray 对象,在我的 UIViewController 中使用。我可以将其声明为 ivar 或属性。这两种方法都有什么优点(考虑到我使用的是 ARC)?

选项 1:

@interface MyViewController {
NSArray *_myArray;
}
@end

选项 2:

@interface MyViewController
@property (strong, nonatomic) NSArray *myArray;
@end

最佳答案

属性和 ivars 在概念上有很大不同。

属性代表代码的逻辑组件。它可能但不一定需要 ivar 支持。它可以在运行时计算 动态生成 (如 View 的-frame)等。

ivar 是一个实际分配的内存块,保存一些数据。

如果您(正确)使用属性,您将获得开箱即用的良好功能,例如 KVC/KVO 合规性。出于这个和其他原因,人们通常认为以属性的形式声明所有公共(public)接口(interface),并在内部使用 ivars 支持它们(经常使用 @synthesize >) 如果合适的话。

就我个人而言,我也更喜欢对私有(private)数据使用属性,这样既可以在以后需要时轻松公开(只需将声明移至标题!),也可以轻松提供属性的自定义实现(和 setters/mutators),而不是依赖于简单的 ivar。

自从你提到 ARC 以来,我还没有太多地使用它,但我认为只要你正确声明你的属性,它就不会有太大的区别。

关于iphone - 弧: what's the difference between a member variable and property?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11786938/

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