iOS 开发

iOS中Block在ARC中循环引用的原因和解决方法

2016-05-11  本文已影响887人  cj小牛

经常听说block的循环应用,就是说的A引用B ,B又引用A,这样的交叉引用,导致AB都不能释放,后果就是,内存会增加,甚至导致程序崩溃。
下面通过代码来看产生的原因
首先定义一个Friend的类
1.1 Friend.h文件

import <Foundation/Foundation.h>

@interface Friend : NSObject
@property(nonatomic ,copy) void(^testBlock)();
-(void)run;
@end

1.2 Friend.m文件

import "Friend.h"

@implementation Friend
添加了一个run的测试的方法
-(void)run {
NSLog(@" person run");
}
-(void)dealloc{
NSLog(@"friend被释放了");
}

2.0 在viecontroller.m文件中

二 Block中的循环应用的处理方法

}

上一篇下一篇

猜你喜欢

热点阅读