これは、Objective-Cの弱化パターンで使用されます。
私の推測では、「weakSelf」という名前と自己の型 (例: MyViewController) を使用して、自己への弱参照を割り当てます。
それが正しく、あなたにとって明白に見える場合:私はこれを正しく理解したいと思っています. ありがとう。
これは、Objective-Cの弱化パターンで使用されます。
私の推測では、「weakSelf」という名前と自己の型 (例: MyViewController) を使用して、自己への弱参照を割り当てます。
それが正しく、あなたにとって明白に見える場合:私はこれを正しく理解したいと思っています. ありがとう。
私の推測では、名前
weakSelf
と自己を使用して自己への弱い参照を割り当てますtypeof
(例:MyViewController
)
はい、ほぼその通りです。の型はself
(MyViewController*
アスタリスク付きで) not になりMyViewController
ます。
単に書くのではなく、この構文を使用する背後にある考え方
MyViewController __weak *weakSelf = self;
コードのリファクタリングが容易になります。を使用typeof
すると、コードのどこにでも貼り付けることができるコード スニペットを定義することもできます。
libExtObjC を使用@weakify
し@strongify
てlibExtObjCを使用すると、ブロックの周りで時々行わなければならない「弱い強いダンス」を単純化するのに役立ちます。OPはこの記事を引用しています。
例!
__weak __typeof(self) weakSelf = self;
__weak __typeof(delegate) weakDelegate = delegate;
__weak __typeof(field) weakField = field;
__weak __typeof(viewController) weakViewController = viewController;
[viewController respondToSelector:@selector(buttonPressed:) usingBlock:^(id receiver){
__strong __typeof(weakSelf) strongSelf = weakSelf;
__strong __typeof(weakDelegate) strongDelegate = weakDelegate;
__strong __typeof(weakField) strongField = weakField;
__strong __typeof(weakViewController) strongViewController = weakViewController;
対...
@weakify(self, delegate, field, viewController);
[viewController respondToSelector:@selector(buttonPressed:) usingBlock:^(id receiver){
@strongify(self, delegate, field, viewController);
あなたの解釈は正しいです。ただ、そう書いてあると少し読みにくいと思います。の後にスペースを追加することをお勧めしますtypeof(self)
:
__weak typeof(self) weakSelf = self;