【问题标题】:When to use @property? [duplicate]何时使用@property? [复制]
【发布时间】:2023-04-05 12:27:01
【问题描述】:

可能重复:
Why should I use @properties?
When to use properties in objective C?

我已经用 Objective-c 编程一年多了,我一直觉得使用 @property 和 @synthesize 是一种惯例。但它们真正服务的目的是什么?它们是否仅用于在类之间进行交流?因此,例如,如果我仅在声明它的类的范围内使用 NSMutableDictionary,那么省略是可以的。 ?

另一个问题:

如果我设置 NSMutableDictionary 的属性,它会被保留,对吗?所以,在我的课堂上,我不必调用 alloc() 和 init(),对吗? 使用属性的规则是什么?

【问题讨论】:

标签: iphone objective-c ipad properties


【解决方案1】:

但它们真正服务的目的是什么?

对 iVar 的访问控制以及表示和基础数据之间的抽象。

它们是否仅用于在类之间进行通信?

不,它们适用于当您想要控制对 iVar 的访问而不是直接访问它们时,或者当您将来可以更改底层数据结构但希望保留当前表示时。

因此,例如,如果我仅在声明它的类的范围内使用 NSMutableDictionary,那么省略是否可以?

这取决于。您想控制对 iVar 的访问吗?您的代码是否可以更改以便获取字典而不是直接 iVar。通常,答案是肯定的。

如果我设置 NSMutableDictionary 的属性,它会被保留,对吗?

取决于你如何声明属性。

所以,在我的课堂上我不必调用 alloc() 和 init(),对吗?

你这里的措辞很草率。我想你是在问你是否还需要构造一个属性的实例。是的,您需要以某种方式构造属性的实例。有很多方法可以做到这一点。

注意:谈论方法的惯例是使用它们的签名。你可以使用 -alloc 来代替 alloc()。

属性的使用规则是什么?

这你需要阅读doc

【讨论】:

    【解决方案2】:

    与其他语言一样,当我们想要将变量设为全局变量或公共变量时,我们会使用 public 访问修饰符。在目标 c 中,当我们想要访问另一个类中的另一个类变量时,我们使用 @property 和 @synthesize 它们。基本上@synthesize 是编译器为该变量创建setter 和getter 方法的方式。您可以手动创建它们,但不能使用 @synthesize。 通过创建该类的对象,您可以访问其他类中的属性变量。 通过使用保留,您可以清除发生的内存并且在该容器类不被处置或释放之前不存在。

    【讨论】:

      【解决方案3】:

      属性只是让您的生活更轻松。

      现在在内存管理、代码风格和节省时间方面尽可能多地使用属性。

      @propertys 是做什么的?
      他们可以创建 getter 和 setter 方法(取决于给定的参数)。

      通常您在头文件中声明实例变量(如在 c++ 中)。
      现在你只需让它成为,而不是为实例变量声明你想要的属性。

      属性可以获取多个参数。
      对于普通的objective-c对象,你需要一个指针(*)你会写。
      @property (nonatomic,retain,...)

      当您 @synthesize 它时,它会创建一个 getter 和一个 setter。
      setter 会自动执行诸如释放旧对象、保留变量并保留新对象等操作。
      因此,您不必手动执行此操作(通常情况下应该如此)。这很重要。
      你也可以给它参数(只读,读写)来决定是否设置一个setter。
      您甚至可以在头文件中以只读方式声明 @property,并在实现文件中使用扩展名(没有名称的类别)覆盖它。

      要深入了解这一点,请阅读非常有效的苹果开发者手册。 希望有点帮助。

      这只是冰山一角,但它几乎可以满足您的一切需求。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-03-21
        • 2010-10-09
        • 2011-08-02
        • 1970-01-01
        • 2020-04-29
        • 2016-03-17
        • 2016-06-26
        • 2023-03-16
        相关资源
        最近更新 更多