Ios 为什么UIWebViewDelegate是赋值的而不是弱的?
通常,整个UIKit/Foundation框架中的所有代理都很弱,UIWebView除外Ios 为什么UIWebViewDelegate是赋值的而不是弱的?,ios,objective-c,uiwebview,automatic-ref-counting,Ios,Objective C,Uiwebview,Automatic Ref Counting,通常,整个UIKit/Foundation框架中的所有代理都很弱,UIWebView除外 @property(非原子,赋值)iddelegate; 我很感兴趣,因为在我的应用程序中,当您在关闭UIWebView的ViewController时忘记关闭委托时,这已经导致了几次崩溃。通常情况下,您不希望出现类似的情况,因此可能有特定的原因导致默认情况下未将其设置为“弱” 假设UIWebViewDelegate定义为弱,则在ARC中,它将自动nil代理的引用。所以UIWebViewDelegate
@property(非原子,赋值)iddelegate;
我很感兴趣,因为在我的应用程序中,当您在关闭UIWebView的ViewController时忘记关闭委托时,这已经导致了几次崩溃。通常情况下,您不希望出现类似的情况,因此可能有特定的原因导致默认情况下未将其设置为“弱” 假设UIWebViewDelegate定义为弱,则在ARC中,它将自动nil代理的引用。所以UIWebViewDelegate被标记为ASSIGN,因为如果类不是用ARC编译的,那么我们必须注意将其设置为nil。好问题。向苹果提交错误报告@为什么你认为这是一只虫子?这也可能是有意为之。不久前,苹果将大部分
分配
代理更改为弱
。不确定为什么UIWebView
没有更新。它看起来确实像个bug。如果它很弱,则在解除分配对象时指针将变为nil。如果是assign,指针将指向一个现在已死亡的对象,可能会导致僵尸。如果你编写的代码期望弱指针变为零,这可能会导致崩溃,就像你在ARC中通常做的那样。我会提交一份bug报告,看看苹果会怎么说,就像rmaddy建议的那样。提交错误报告比试图以其他方式询问苹果更可能给你一个答案,如果错误,它将被列入他们的修复名单。如果是这样的话,他们将为所有代表提供该报告,而不仅仅是UIWebView。
@property(nonatomic, assign) id< UIWebViewDelegate > delegate;