1

メモリサイクルの保持を避けるために、自分自身を生き残る可能性のあるブロックで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];
}

何か案が?

4

1 に答える 1