欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

IOS 避免self循环引用的方法的实例详解

程序员文章站 2023-12-20 19:23:58
ios 避免self循环引用的方法的实例详解 示例代码: // - weak & strong #define myweakify(var) \ try...

ios 避免self循环引用的方法的实例详解

示例代码:

// - weak & strong 
#define myweakify(var) \ 
try {} @finally {} \ 
__weak __typeof__(var) var##_myweak_ = (var) 
 
#define mystrongify(var) \ 
try {} @finally {} \ 
__strong __typeof__(var) var = var##_myweak_ 
 
#define mystrongifyretvifnil(var, ret) \ 
try {} @finally {} \ 
__strong __typeof__(var) var = var##_myweak_;\ 
if(var == nil) return ret 
 
#define mystrongifyretnifnil(var) \ 
try {} @finally {} \ 
__strong __typeof__(var) var = var##_myweak_;\ 
if(var == nil) return 

使用如下:

- (void)handlefromvc 
{ 
  nsarray *viewcontrollers = self.navigationcontroller.viewcontrollers; 
  @myweakify(self); 
  [viewcontrollers enumerateobjectswithoptions:nsenumerationreverse usingblock:^(id _nonnull obj, nsuinteger idx, bool * _nonnull stop) { 
    @mystrongifyretnifnil(self); 
    //代码 
  }]; 
} 

如有疑问请留言或到本站社区交流讨论,感谢阅读,希望通过本文能帮助到大家,谢谢大家对本站的支持!

上一篇:

下一篇: