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保持非常苗条和快速使用。。。有什么想法吗