2

ARCを使用するときの強弱について読んでいます。これで、プロパティとは対照的に、少しよく理解できたと思います。

しかし、メソッドで __weak と __strong を使用できることを読みました。しかし、これを完全に理解できるかどうかはわかりません。私がそれを使用する方法は次のとおりです。

- (void)someMethod{
   __weak NSString *text = [self.textField text];
   etc...
}

上記の例では、それ以外の場合は標準のストロングになり、それへのストロング ポインターを持つ必要がないため、weak を使用します (私はそう思います)。テキストフィールド自体がそれを保持するからですか?

私の質問は、この概念を理解していますか?デフォルトの __strong の代わりに __weak を使用する利点さえありますか?

4

3 に答える 3

1

特別なコンテキストでのみ使用する必要があります。そのような通常の方法では、あなたはただ使うことができます NSString *text

このポインターは強力ですが、何も使用されていない場合はメソッドの最後で破棄されるため、問題にはなりません。

于 2013-10-22T13:58:59.413 に答える
0

弱いと宣言すると、オブジェクトにアクセスしようとしたときにテキストが nil になる可能性があります。ここで「弱い」とは次のことを意味します。「テキスト」を参照する「強い」オブジェクトがない場合、「someMethod」の実行が終了すると「テキスト」は削除されます。

于 2013-10-22T13:57:07.727 に答える