- (void)setupWebView:(UIWebView**)aWebView {
それはひどいです。voidを返すメソッドは絶対に使用しないでください。ただし、次の場合を除いて、参照によって引数を設定します。
•複数の引数が設定されています
•メソッドのプレフィックスはget
そのメソッドは、作成されたインスタンスを直接返す必要があります。そして、これはそれを悪化させるだけです-完全に間違っています:
if (*aWebView) {
[*aWebView release];
}
*aWebView = webview;
カプセル化を破ります。呼び出し元がiVarスロットへの参照を渡した場合はどうなりますか。これで、呼び出し先が呼び出し元のメモリを管理するようになりました。これは、恐ろしい慣習であり、クラッシュする可能性が非常に高くなります(たとえば、同時実行性に直面した場合)。
aWebView
がNULLの場合はクラッシュします。特に、割り当てでクラッシュします。
aWebView
がiVarスロットを参照している場合、可能なプロパティの使用をバイパスします(カプセル化を解除する別の方法)。