【问题标题】:Inheritance - UIAlertView in superclass and subclass继承 - 超类和子类中的 UIAlertView
【发布时间】:2015-06-27 19:43:58
【问题描述】:

我有一个超类,有时我会在其中显示 UIAlertView 并处理委托 (clickedButtonAtIndex)。 当我有一个也处理“clickedButtonAtIndex”的子类时,只调用子类委托。

在这两种情况下,UIAlertView 都是这样显示的:

[[[UIAlertView alloc] initWithTitle:@"" message:@"message" delegate:self cancelButtonTitle:@"Close" otherButtonTitles:@"Open", nil]show];

在超类和子类中具有相同的委托是我做错了什么还是设计不好。我认为“代表:自我”将它们分开。

我可以在调试器中看到“self”引用了我的子类,即使我在我的超类中,所以这可能是问题所在?有什么想法吗?

【问题讨论】:

  • 如果你想在子类中调用超类的方法,请调用[super alertView:alertView clickedButtonAtIndex:buttonIndex];
  • 感谢您的建议,但是我需要在超类中公开该方法。并在我所有的子类中调用它。这似乎有点矫枉过正,而且设计不正确?
  • 你的目标是 ios 8 吗?如果是这样,您应该使用 uialertcontroller。
  • 不,针对 iOS 7。
  • 当一个子类覆盖了一个方法并且该子类方法也需要父类运行时,你必须调用super。你没有选择。如果子类对该方法没有附加功能,则它们不会覆盖该方法。如果子类确实对方法有特殊需求并且不想要超类的功能,那么就不要调用super。

标签: ios objective-c inheritance delegates uialertview


【解决方案1】:

当在超类中调用时,'self' 对子类的引用让我有点惊讶。

因此,我决定为 UIAlertView 创建自己的委托,以区别于子类的委托。这是因为我不认为: - 子类应该知道我在超类中的私有 UIAlertView 并调用它。 - 超类应该知道我的子类委托。

随意添加你的想法:-)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多