我的LogFunc宏捕获self并可能导致保留周期

时间:2016-03-01 15:53:06

标签: ios block c-preprocessor retain-cycle weak

我在代码中使用了一个简单的宏,我发现它非常方便实用

#define LogFunc NSLog(@"%p %s",self,__func__);

它给我自我指针地址和被调用函数。

@implementation MyGreatClass

-(void)foo {
  LogFunc
}

-(void)bar {
  _supposeIamAnIVarBlock = ^(){
    LogFunc
  }

  _supposeIamAnIVarBlock();
}

@end
  

2016-03-01 16:35:01.990 MyApp [3447:2340168] 0x13102ecb0 - [MyGreatClass foo]

     

2016-03-01 16:35:01.990 MyApp [3447:2340168] 0x13102ecb0 -__ 27- [MyGreatClass bar]

问题是,当我在块中使用这个宏时,我可能会遇到一个保留周期,因为将强烈捕获self。我知道我可以使用__weak__block来避免保留周期,但这样会破坏我的代码。我希望LogFunc保持非常纤薄和快速使用......任何想法?

0 个答案:

没有答案
相关问题