Ios 我的LogFunc宏捕获了self,可能会导致retain循环

Ios 我的LogFunc宏捕获了self,可能会导致retain循环,ios,block,c-preprocessor,retain-cycle,weak,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

我在代码中使用了一个简单的宏,我觉得它非常方便和有用

#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-uu 27-[MyGreatClass bar]

问题是,当我在块中使用这个宏时,我可能会进入一个保留周期,因为self将被强烈捕获。我知道我可以使用
\uu弱
\uu块
来避免保留循环,但这会破坏我的代码。我希望LogFunc保持非常苗条和快速使用。。。有什么想法吗