Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/120.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 为什么UIWebViewDelegate是赋值的而不是弱的?_Ios_Objective C_Uiwebview_Automatic Ref Counting - Fatal编程技术网

Ios 为什么UIWebViewDelegate是赋值的而不是弱的?

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

通常,整个UIKit/Foundation框架中的所有代理都很弱,UIWebView除外

@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;