【问题标题】:Property types in public interface and extension公共接口和扩展中的属性类型
【发布时间】:2014-01-31 22:45:44
【问题描述】:

我有几个关于 Objective-C 属性的相关问题,但首先让我们看一段代码:

这是该类的公共接口:

@interface SomeClass : NSObject

@property(retain, readonly) ParentType* aVariable;

@end

在实现中我定义了一个类扩展:

@interface SomeClass ()

@property(retain) ChildType* aVariable;

@end

我知道我可以做这种事情来使“aVariable”在实现中读写,但我有两个问题:

  1. 在类扩展中使用属性的子类型是否可以接受?这行得通吗?
  2. 我需要在类扩展中保留retain属性吗?还是重新声明属性会清除所有这些属性?

提前致谢!

编辑:错字

【问题讨论】:

  • 您在使用 ARC 吗?如果是这样,您应该使用 strong 而不是 retain。
  • @FabienWarniez 在 ARC 下,retainstrong 的同义词。
  • 你说得对,但我只是更喜欢strong,而retain让我想起了旧的做事方式,当你实际上不得不调用“retain”时。

标签: objective-c types properties attributes


【解决方案1】:
  1. 是的,推荐。如果你想看看它是否有效,你可以试试。
  2. 它们必须匹配,因此您必须重新添加。公共声明和私有声明之间唯一可以改变的是“只读”。

【讨论】:

    猜你喜欢
    • 2012-09-03
    • 2014-01-26
    • 1970-01-01
    • 1970-01-01
    • 2015-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-07
    相关资源
    最近更新 更多