[Objective-C]客观的 C-正确的方法分配和删除视图控制器与ARC

发布时间: 2016/9/22 1:12:22
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

让说,我有一个弹出。 当点击一个按钮,弹出菜单已分配和使用提出了。 关闭按钮委托调用时它必须被关闭并删除正确。 我不认为我这么做正确的一些原因︰

在.h 文件中︰

@interface MainViewControoler : UIViewController
{
PopupViewController*            popupView;     
}

@property (retain, nonatomic) PopupViewController* popupView;
@end

在.m 文件中︰

..
-(void)openButtonPressed
{
  if (!popupView)
  {  
    popupView = [[PopupViewController alloc] init];
    popupView.delegate = self;
  }
  [self.view addSubview:popupView.view];
  popupView.view.frame = self.view.frame;
}

..
-(void)closePopup
{
  [popupView.view removeFromSuperview];
}

我不想这有任何泄漏在哪里如果弹出窗口的开启和关闭 1000年倍,它不会崩溃...这是正确的方法吗?

解决方法 1:

您的代码不会产生泄漏,你都是一次分配气泡框。然而,你不需要手动创建一个实例变量,或将气泡框属性设置为零,电ARC会照顾这,除非你想要也释放气泡框之前释放你的 VC。

只要确保你是不把气泡框视图增加多次到父视图 (即不调用 openButtonPressed 再一次在调用 closePopup

。 h:。

@interface MainViewControoler : UIViewController

@property (nonatomic) PopupViewController *popupView;

@end

。 m:。

-(void)openButtonPressed
{
  if (!_popupView)
  {  
    _popupView = [[PopupViewController alloc] init];
    _popupView.delegate = self;
  }
  [self.view addSubview:_popupView.view];
  _popupView.view.frame = self.view.frame;
}

-(void)closePopup
{
  [_popupView.view removeFromSuperview];
}
官方微信
官方QQ群
31647020