Ios 为什么不能释放该对象?
我有一个问题 1.看演示,redView是一个本地变量,只是有点“UIView”,当我弹出secondVC时,但是secondVC和redView不能发布。为什么?Ios 为什么不能释放该对象?,ios,objective-c,Ios,Objective C,我有一个问题 1.看演示,redView是一个本地变量,只是有点“UIView”,当我弹出secondVC时,但是secondVC和redView不能发布。为什么? @interface RedView : UIView @property(nonatomic,copy) void (^redViewBlock)(); @end @interface SecondVC () @property(nonatomic,strong)GreenView *greenView; @end @imp
@interface RedView : UIView
@property(nonatomic,copy) void (^redViewBlock)();
@end
@interface SecondVC ()
@property(nonatomic,strong)GreenView *greenView;
@end
@implementation SecondVC
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor whiteColor];
self.greenView = [[GreenView alloc]initWithFrame:CGRectMake(200, 200, 200, 200)];
[self.view addSubview:self.greenView];
}
2.我在secondVC和redView之间添加了一个greenView,greenView是一个全局变量,当我弹出secondVC时,greenView和redView不能释放,但是secondVC可以释放。为什么?
@interface RedView : UIView
@property(nonatomic,copy) void (^redViewBlock)();
@end
@interface SecondVC ()
@property(nonatomic,strong)GreenView *greenView;
@end
@implementation SecondVC
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor whiteColor];
self.greenView = [[GreenView alloc]initWithFrame:CGRectMake(200, 200, 200, 200)];
[self.view addSubview:self.greenView];
}
因为redView引用了SecondVC,SecondVC引用了redView。你应该做自己的弱点:
__weak typeof(self) weakSelf = self;
RedView *redView = [[RedView alloc]initWithFrame:CGRectMake(40, 40, 40, 40)];
[redView setRedViewBlock:^{
[weakSelf aSecondViewFunc];
}];
[self.view addSubview:redView];
但redView是一个局部变量,如果redView未添加到SecondVC,则可以将其释放。所以SecondVC引用redView是因为redView是Second的子视图?我认为它是“局部变量”并不重要。它作为self.view(self是您的第二个VC)的子视图存在于内存中,因此在退出这段代码后不会被释放。