Obj-C,一切的属性

Sam*_*Sam 4 properties objective-c getter-setter

我已经开始在一家新公司工作,而我的团队负责人告诉我要遵守的一条指导原则是很少使用保留/发布,而是依赖于内存管理的属性.我可以看到保持代码清晰并减少错误空间的吸引力,但打开这样的界面让我感到不舒服.一般来说,建筑非常好,但我总是迂腐地把课程关闭到外面的世界.

在Objective-c中使用这样的属性是一种公认​​的设计方法吗?任何人都可以向我提供我的新团队可能已采用此策略的链接或线索吗?

Tom*_*mmy 10

无需向全世界公开属性.在您的实现.m文件中,您可以添加一个类别来声明"私有"属性.例如

#import "Class.h"

@interface Class ()
@property (nonatomic, strong) NSDate *privateProperty
@end

@implementation Class

@synthesize privateProperty;

...
@end
Run Code Online (Sandbox Code Playgroud)

Objective-C中的任何内容都不是严格意义上的私有,所以我认为这是一个很好的做法 - 它隐藏了几乎所有的保留/发布内容而不需要兼容ARC的运行时,并且副作用是不要求你在标题中提到你的实例变量(虽然还有其他方法可以实现).

作为一个历史记录,我认为这是将实例变量移出标题的第一种方式 - 这只是iOS和64位Intel 10.6+上的'新'运行时允许的 - 这可能是您团队的次要原因已经解决了.除非他们明确告诉你让你的课程透明化,否则他们实际上可能完全同意你的感觉(以及公认的面向对象原则),实现应该是不透明的.