2012-02-18 9 views
6

私はこのようなのUIWebViewのUIScrollViewのデリゲートにアクセスすることができたiOS5を前に:今UIWebViewのUIScrollViewデリゲートプロパティをもう保存できないのはなぜですか?

for (id subview in webView1.subviews){ 
    if ([[subview class] isSubclassOfClass: [UIScrollView class]]) { 
     UIScrollView * s = (UIScrollView*)subview; 
     OldDelegate = s.delegate;//OldDelegate is type id 
        s.delegate = self; 
    } 
} 

、私はそれを行うには正しい方法ではないのですが、知っている(私の知る限り理解されるような)時点でそれはでしたそれを行うための唯一の方法。 iOSの5のことを変更されているので、私はそれをiOSの5の方法を行うにしようとしています:

UIScrollView * s = webView.scrollView; 
Olddelegate = s.delegate; 
s.delegate = self; 

しかし、私はそれをしようといずれかの方法を、私OldDelegateオブジェクトの値は0x0です。私がこのデリゲート値を保持することは本当に重要ですが、私が試みるようにしようとすると、私はただ0x0を得ています。

アイデア?

私はARCを使用していないよ

...

+0

ちょうど質問ですが、それをやっていたアプリを提出することになりましたか?私はAppleによって禁止されていると思った。私はそれがアプリを拒否されるかどうかわからないが、私は同様のことをしたい。 –

+0

ええ、それは承認されましたが、今は更新の時期です。私はそれが問題になっているように働くことができません... – Lizza

+0

なぜあなたはあなたの代議員を保持する必要がありますか?これは、ビュー階層を構築する方法に大きな問題があるという証拠です。デリゲートは意味を持たないので、常に弱いと宣言する必要があります。 – Sam

答えて

0

はい、あなたがそのあなたの非保持Olddelegateにガベージコレクションを行うことをアーク、その可能性を使用している場合、あなたは-fno-でアークを使用しないようにファイルをマークしますかobjc-arcを使用して、以前と同じように自分自身で保持と解放を処理します。変数を保持するのに役立つように、ここで説明したように強い参照を実装することもできます。 https://developer.apple.com/library/ios/#releasenotes/ObjectiveC/RN-TransitioningToARC/Introduction/Introduction.html

+0

回答ありがとうございますが、私はARCを使用していません。 – Lizza

+0

Olddelegateはプロパティですか? @property(非原子、保持)NSObject * Olddelegate; –

+0

はいそれはプロパティです – Lizza

1

のプロパティUIWebViewは、UIScrollViewのサブクラスです。 _UIWebViewScrollViewと呼ばれるこのプライベートクラスは、delegateプロパティを使用しません。常にゼロです。おそらく、あなたはリファクタリングを行い、実際のスクロールビューの代理人を得ることができるかもしれませんが、私はほぼ100%確信しています。

関連する問題