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

hで

typedef BOOL (^MyProcessorBlock)(id param1);

@property (nonatomic, copy) MyProcessorBlock myBlockProperty

m単位(古いobjc pre 2.0、2012年夏以前を使用する場合)

@synthesize myBlockProperty = _myBlockProperty;

いずれにせよmファイル

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