1

我正在一个将成为一个块的类上创建一个属性。

它被定义为

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

我想懒惰地创建该属性,因此我想为该块创建一个吸气剂,以便在某些代码使用该属性时运行。

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

@synthesize myProperty = _myProperty;

- (NSArray *)myProperty {

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

    return _myProperty;
}

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

注意:这个块在一个单例中。

谢谢

4

2 回答 2

2
@property (nonatomic, copy) void (^ myBlock)();

- (void (^)())myBlock {
    if (!_myBlock) {
        self.myBlock = ^ () {
            NSLog(@"Do something");
        };
    }
    return _myBlock;
}
于 2012-11-29T13:41:31.897 回答
1

在小时

typedef BOOL (^MyProcessorBlock)(id param1);

@property (nonatomic, copy) MyProcessorBlock myBlockProperty

以 m 为单位(如果您使用旧的 objc pre 2.0,pre summer 2012)

@synthesize myBlockProperty = _myBlockProperty;

无论如何在m文件中

- (MyBlock)myBlockProperty {
    if(!_myBlockProperty) {
        _myBlockProperty = ^(self) { ..... };
    }
    return _myBlockProperty;
}
于 2012-11-29T13:44:00.133 回答