block,__bridge_retained代码试例

typedef void (^dd)(void);

@property (strong) dd a ;

@property (copy) dd a ;

__weak id b=self;

        self.a=^{

        NSLog(@"%@",self);

    };

编译器都会有警告:循环引用造成的内存泄露

---------------------------------------------------

CFMutableArrayRef cfObject = NULL;

    {

        id obj = [[NSMutableArray alloc] init];

        cfObject = (__bridge_retained CFMutableArrayRef)obj;

        NSLog(@"%lo ng-",CFGetRetainCount(cfObject));

        //__weak id oo=obj;

        void (^dd)(void)=^{

            NSLog(@"%@",obj);

        };

        

        //dd();

        NSLog(@"%lo ng---",CFGetRetainCount(cfObject));

        //CFRelease(cfObject);

    }

    NSLog(@"%lo ng---",CFGetRetainCount(cfObject));

被block捕获的变量都会被retain.

原文地址:https://www.cnblogs.com/zhangjl/p/3820707.html