Objective c 我怎么才能摧毁这个采摘者?它赢了';别死
我不明白!我是个新手,所以这可能是我对目标C、生命、宇宙和/或一切的根本误解;请温柔一点Objective c 我怎么才能摧毁这个采摘者?它赢了';别死,objective-c,Objective C,我不明白!我是个新手,所以这可能是我对目标C、生命、宇宙和/或一切的根本误解;请温柔一点 我将文本字段的inputView设置为self.datePicker—一个标准的UIDatePicker,它已在viewDidLoad中初始化 我向日期选择器添加了一些子视图。听起来很疯狂,我知道,但请容忍我 现在,我让该字段指定第一响应者,并调用self.datePicker=nil。更疯狂,是的 我再次点击文本字段,并期待两件事中的一件。任何一个都没有日期选择器。我毁了它,对吗?需要重新分配和初始化。或
我知道你在想我为什么要这么做。为什么要向datePicker添加视图,为什么不在需要时从superview中删除它们呢。但是让我们假设我有一个很好的理由这样做,并且这样做。有人能纠正我对对象行为明显不可靠的理解吗?没有,你没有破坏,只是在viewController上关闭了属性。 我认为您的设计可能有点不恰当,但是如果您创建了某种自定义日期选择器,您应该添加一个重置方法,该方法应该将自定义日期选择器返回到基本状态
要将其从
UITextField
中删除,只需将inputView
属性添加到日期选择器的新实例中。听起来好像有两个对日期选择器的引用,但您只将其中一个设置为nil。如果我听你的,这两个引用是self.datePicker和textField.inputView。但你只是把第一个设为零。因此该对象由textField.inputView“保留”
总的来说,依靠电弧来摧毁物体似乎是不可靠的。此外,一旦日期选择器被销毁,“textField.inputView”是否会变为nil而不是新的日期选择器?但是如果我真的想完全删除它,并重新分配/初始化它,我该怎么做?而不是简单地将其重置为基本状态。(再次尝试简单地调用alloc/init,但无济于事)是的,我是这么说的:该对象由textField的inputView属性保留。是的,就是这样!设置textField.inputView=nil。然后点击该字段就可以输入键盘(需要再次alloc/init日期选择器)。我没有想到inputView会保留一个引用。谢谢你。我知道这听起来很奇怪,但这有助于我理解ARC。