我有很多方法可以重复这个简单的样板:
- (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];
但显然当前的代码不允许这样做。我怎么能完成这样的事情?