【发布时间】:2013-03-23 13:43:49
【问题描述】:
我有很多方法重复这个简单的样板:
- (id)myObject {
if(!_myObject) {
self.myObject = [_myObject.class new];
}
return _myObject;
}
所以我想用一个简单的宏来替换它:
#define default_init(instance) \
if(!instance) instance = [instance.class new]; \
return instance;
所以我只需要打电话:
- (id)myObject {
default_init(_myObject);
}
上面的代码目前可以编译,但问题是宏直接设置了实例变量的值。相反,我想调用 self.instance = value;
所以不是
if(!instance) instance = [instance.class new];
我想要类似的东西;
if(!instance) self.instance = [instance.class new];
但显然当前的代码不允许这样做。我怎样才能完成这样的事情?
【问题讨论】:
标签: objective-c macros