0

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

我有一个超类 Building 需要公开两个 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

你们对此有何看法?这是获得这种结果的正确方法吗,有人对此主题有更好的想法吗?感谢您的意见。

最好的,

恩里科

4

1 回答 1

3

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

在建筑.h

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

在军营.m

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

@implementation Barrack
...
@end
于 2013-11-13T13:52:16.377 回答