メモリサイクルの保持を避けるために、自分自身を生き残る可能性のあるブロックでweakSelfを使用する必要があるという事実を認識しています。お気に入り:
__weak id weakSelf = self;
self.block = ^{
[weakSelf something];
}
しかし、私は一般的な方法を見つけようとしています。次のようなマクロを使用できます。
#define Weakify(o) __weak __typeof__((__typeof__(o))o)
#define WeakifySelf(o) Weakify(self) o = self;
WeakifySelf(weakSelf)
self.block = ^{
[weakSelf something];
}
これは簡単ですが、viewControllerでivarを使用できないのはなぜだろうか。
@interface YDViewController : UIViewController
{
__weak id _weakSelf;
}
そして、この iVar を使用します
self.block = ^{
[_weakSelf something];
}
何か案が?