代码之家  ›  专栏  ›  技术社区  ›  Idan

iPhone类属性导致崩溃

  •  0
  • Idan  · 技术社区  · 16 年前

    所以我对这个目标仍然很陌生,我遇到了一个问题,我不确定它的根本原因。

    我的H文件基本上是这样的:

    @interface DrinkDetailViewController : UIViewController<UITextFieldDelegate>
    {
        UITextField* nameTextField;
        UITextField* activeView;
    }
    @property (nonatomic,retain) IBOutlet UITextField* nameTextField;
    

    在我的M文件中,我正在实现委托功能:

    -(BOOL) textFieldShouldBeginEditing:(UITextField*) textField
    {
        activeView = textField;
        return YES;
    }
    

    问题是,如果我声明ActiveView也是一个属性(意味着添加属性、合成和全部交易),那么当我离开视图(这是一个基于导航的项目)时,我的应用程序崩溃。然而,如果我把它当作一个非财产来生活,一切似乎都很好。为什么会这样????

    2 回复  |  直到 16 年前
        1
  •  1
  •   Abizern    16 年前

    因为它是一种财产,你需要这样称呼它:

    self.activeView = textField;
    

    这样,将应用正确的内存管理规则,并为您完成kvo通知。

        2
  •  1
  •   ennuikiller    16 年前

    是否在实现文件中合成ActiveView:

    @synthesize activeView;