私は私のインターフェイスファイルに読み取り専用プロパティisFinished
を持っている:割り当て
typedef void (^MyFinishedBlock)(BOOL success, NSError *e);
@interface TMSyncBase : NSObject {
BOOL isFinished_;
}
@property (nonatomic, readonly) BOOL isFinished;
と私は作成せず、後のある時点でブロックにYES
にそれを設定したいですA self
にサイクルを保持:
- (void)doSomethingWithFinishedBlock:(MyFinishedBlock)theFinishedBlock {
__weak MyClass *weakSelf = self;
MyFinishedBlock finishedBlockWrapper = ^(BOOL success, NSError *e) {
[weakSelf willChangeValueForKey:@"isFinished"];
weakSelf -> isFinished_ = YES;
[weakSelf didChangeValueForKey:@"isFinished"];
theFinishedBlock(success, e);
};
self.finishedBlock = finishedBlockWrapper; // finishedBlock is a class ext. property
}
私は、これはそれを行うための正しい方法であることをわかりませんよ。このコードが漏洩するか、中断するか、それとも問題ありませんか?おそらく私は見落とした方が簡単でしょうか?
ちょうどちなみに、あなたは '__weak typeof演算(自己)* weakSelf =自己を使用することができます;' –
は涼しく、それは便利です! – manmal
一般的な宣言である '__weak typeof(self)weakSelf = self;に対する小さな修正' typeof(self)はすでにポインタです。 – allprog