Liz*_*zza 6 iphone uiwebview uiscrollview uiscrollviewdelegate ios5
在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;
}
}
Run Code Online (Sandbox Code Playgroud)
现在,我知道这不是正确的方法,但当时(据我所知),这是唯一的方法.iOS 5改变了这一点,所以我试图以iOS 5的方式做到这一点:
UIScrollView * s = webView.scrollView;
Olddelegate = s.delegate;
s.delegate = self;
Run Code Online (Sandbox Code Playgroud)
但无论哪种方式我尝试这样做,我的OldDelegate对象的值是0x0.保留这个委托值非常重要,但尽可能地尝试,我只是得到0x0.
有任何想法吗?
我没有使用ARC ......
是的,如果您使用 arc,它可能会在未保留的 Olddelegate 上进行垃圾收集,您可以将文件标记为不使用 -fno-objc-arc 并像以前一样自行处理保留和释放。或者,您可以按照此处所述实施强引用来帮助您保留变量。https://developer.apple.com/library/ios/#releasenotes/ObjectiveC/RN-TransitioningToARC/Introduction/Introduction.html