Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/116.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.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 在从块运行的方法中对self的强引用_Ios_Objective C_Objective C Blocks - Fatal编程技术网

Ios 在从块运行的方法中对self的强引用

Ios 在从块运行的方法中对self的强引用,ios,objective-c,objective-c-blocks,Ios,Objective C,Objective C Blocks,因此,我知道如果您在self中保存一个块,然后访问该块中的self,您需要创建并使用类似\uu弱id weakSelf=self 我的问题是,这是否也扩展到从该块调用的函数?如中所示,以下情况是否会导致保留周期: self.block = ^{ [weakSelf myFunction]; } - (void) myFunction { self.counter++; } 谢谢你的时间 这不会创建保留循环,因为方法中的self实际上是由Objective C运行时传递的参数(使用和类似)。因此

因此,我知道如果您在
self
中保存一个块,然后访问该块中的
self
,您需要创建并使用类似
\uu弱id weakSelf=self

我的问题是,这是否也扩展到从该块调用的函数?如中所示,以下情况是否会导致保留周期:

self.block = ^{ [weakSelf myFunction]; }
- (void) myFunction { self.counter++; }

谢谢你的时间

这不会创建保留循环,因为方法中的
self
实际上是由Objective C运行时传递的参数(使用和类似)。因此,让我们考虑在代码示例中可能出现的两种情况。code>weakSelf
由于释放保留对象而被归零-传递给
nil
的消息被忽略
weakSelf
未归零,在这种情况下,它由Objective C运行时作为其
self
参数传递给消息。

否。它只保留块体本身中引用的对象。@gearheadalex干杯,快乐编码!