通过公共方法访问私有接口属性

时间:2013-11-13 13:48:00

标签: ios objective-c properties protected

我想问你一些关于我在做什么的意见。我知道它有效,但我不确定做我正在做的事情是否合适。

我有一个超类构建,需要公开两个NSString,名称和描述。没有人应该能够修改它们的子类之间的变量。

为了得到这个结果,我在基类上创建了两个公共方法:

@interface Building : NSObject 

- (NSString *)name;
- (NSString *)description;
@end

然后在每个子类上,我正在创建一个具有名称和描述属性的私有接口,让魔法发生。

@interface Barrack()
@property (nonatomic, strong) NSString *name;
@property (nonatomic, strong) NSString *description;
@end

@implementation Barrack
@synthesize name, description;
...
@end

你们对此有什么想法?这是获得这种结果的正确方法,任何人对这个话题都有更好的想法吗? 谢谢你的意见。

最佳,

恩里科

1 个答案:

答案 0 :(得分:3)

在接口中声明readonly属性,在实现类扩展中读写。无需@synthesize。这是将类扩展添加到Objective-C的主要原因之一。

在Building.h中

@interface Building : NSObject 
@property (nonatomic, strong, readonly) NSString *name;
@property (nonatomic, strong, readonly) NSString *description;
@end

在Barrack.m

@interface Barrack ()
@property (nonatomic, strong, readwrite) NSString *name;
@property (nonatomic, strong, readwrite) NSString *description;
@end

@implementation Barrack
...
@end