在实现文件中声明属性是一个好习惯,如果是,有什么用?

Son*_*oni 10 ios

以下代码,在Objective-C中是一个很好的编程实践吗?

  #import "Custom.h"

  @interface Custom () 
  @property (nonatomic, retain) UILabel *label;
  @end

  @implementation Custom
  @synthesize label;

  - (void) dealloc {
      [label release];
      [super dealloc];
  }

  @end
Run Code Online (Sandbox Code Playgroud)

Jav*_*oto 18

这背后的想法是,您在头文件中声明的所有属性对于该类之外的所有人都是可见的和可访问的.要尊重OOP的封装原则,您希望将类的某些成员的范围尽可能保密.因此,只有你的班级才会使用的所有成员都应该隐藏在"外部世界"中.这可以通过声明一个名为"extension"的特殊类型(它不能有一个名称,它声明为@interface Class()),以及该扩展中的属性(以及私有方法声明,如果你想要的话)来完成好)

至于这是一个好的做法的问题,可以在不同的开发者之间讨论.对我来说,这是因为它是一个很好的OOP实践,也因为它有助于保持头文件尽可能干净(因此让其他开发人员更容易看到你的类提供的"服务")

  • 而且,对于它的价值,在实现文件中声明要将其视为私有的属性是Apple批准的习惯用法.你会在他们的文档和示例代码中看到它,如果不是"良好实践"的证据至少是一个强有力的认可. (5认同)