Getter在课堂上一块?

时间:2012-11-29 13:18:47

标签: iphone ios ipad block

我正在创建一个类似于块的属性。

它被定义为

@property (nonatomic, strong) void (^ myBlock)();

我想懒惰地创建该属性,所以我想在某些代码使用该属性时为该块创建一个getter。

如果属性不是块并且例如是NSArray,我会像这样设置setter:

@synthesize myProperty = _myProperty;

- (NSArray *)myProperty {

    if (_myProperty) {
        _myProperty = [[NSArray alloc] init];
    }

    return _myProperty;
}

如何对作为块的属性执行getter(延迟实例化)?

注意:此块位于单个区域内。

感谢

2 个答案:

答案 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;
}