我想问你一些关于我在做什么的意见。我知道它有效,但我不确定做我正在做的事情是否合适。
我有一个超类构建,需要公开两个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
你们对此有什么想法?这是获得这种结果的正确方法,任何人对这个话题都有更好的想法吗? 谢谢你的意见。
最佳,
恩里科
答案 0 :(得分:3)
在接口中声明readonly属性,在实现类扩展中读写。无需@synthesize
。这是将类扩展添加到Objective-C的主要原因之一。
@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