【问题标题】:Data Hiding and Objective-C synthesisers [duplicate]数据隐藏和 Objective-C 合成器 [重复]
【发布时间】:2013-03-25 12:06:00
【问题描述】:

如果属性需要是私有的并且语言支持自动 getter/setter 方法创建,应该如何声明它们?

是根据需要覆盖自动创建的 getter 或 setter 的唯一方法吗?

【问题讨论】:

  • 如果你需要私有唯一的方法是类扩展。
  • 我不这么认为。私有属性可以在实现文件中声明。
  • 怎么样?使用类别扩展使用类别?不是吗?

标签: objective-c


【解决方案1】:

在 .m(实现)文件的顶部:

// Private category on your class, declared at top of implementation file.
@interface MyClass ()
@property (nonatomic, copy) NSString * privateString;
@end

@implementation
... 
@end

这些“私有属性”仅在您的实现中可见。 请注意 ObjC 没有运行时访问限制的功能。如果需要,其他对象仍然可以调用您的私有 getter 和 setter(尽管这会产生编译器警告)。

【讨论】:

  • 谢谢,是的,我知道这一点。我的问题更多是在设计层面上。如果说在头文件中声明属性是不好的设计,那么通过重写的 getter/setter 方法访问这些属性的唯一方法是什么?
  • @Helium3:我不太明白。在头文件中声明(公共)属性有什么不好的设计?你到底想避免什么?
  • 我想我所问的不适用于Objective-C,会将问题标记为删除。
  • @Helium3:不妨举个例子说明你的想法?
  • @Helium3:现在你不能删除了,Ben 得票了。
猜你喜欢
  • 2013-08-18
  • 1970-01-01
  • 2012-05-25
  • 1970-01-01
  • 1970-01-01
  • 2013-07-27
  • 1970-01-01
  • 2018-03-23
  • 2010-09-17
相关资源
最近更新 更多