我正在创建一个类似于块的属性。
它被定义为
@property (nonatomic, strong) void (^ myBlock)();
我想懒惰地创建该属性,所以我想在某些代码使用该属性时为该块创建一个getter。
如果属性不是块并且例如是NSArray,我会像这样设置setter:
@synthesize myProperty = _myProperty;
- (NSArray *)myProperty {
if (_myProperty) {
_myProperty = [[NSArray alloc] init];
}
return _myProperty;
}
如何对作为块的属性执行getter(延迟实例化)?
注意:此块位于单个区域内。
感谢
答案 0 :(得分:2)
@property (nonatomic, copy) void (^ myBlock)();
- (void (^)())myBlock {
if (!_myBlock) {
self.myBlock = ^ () {
NSLog(@"Do something");
};
}
return _myBlock;
}
答案 1 :(得分:1)
in h
typedef BOOL (^MyProcessorBlock)(id param1);
@property (nonatomic, copy) MyProcessorBlock myBlockProperty
in m(如果你使用旧的objc pre 2.0,2012年夏季前)
@synthesize myBlockProperty = _myBlockProperty;
无论如何都在m文件中
- (MyBlock)myBlockProperty {
if(!_myBlockProperty) {
_myBlockProperty = ^(self) { ..... };
}
return _myBlockProperty;
}