【问题标题】:XCode4 Base class in property gives compiler warning when set to subclass属性中的 XCode4 基类在设置为子类时会发出编译器警告
【发布时间】:2013-09-26 05:09:01
【问题描述】:

我有一个基类,比如 BaseClass,它为多个子类提供了一个公共接口,例如由 @interface SubA:BaseClass 定义。

基类的接口包含一个方法,比如-(void)method1:arg;

在我看来,我想根据情况向不同的子类实例发送消息。 View 有一个类似于

的属性
@property (strong) BaseClass *currentInstance

当我在控制器对象中使用时,

[self.myView setCurrentInstance:instanceOfSubA] 

我收到编译器警告。

然后在某些时候我有视图

[self.currentInstance method1:thisArg]

一切正常;那就是:

检查视图中的类,将类作为 SubA。 所有被覆盖的函数都会给出正确的结果。

我可以摆脱警告吗?或者这是一个信号,表明我会在某个地方遇到麻烦。

【问题讨论】:

  • 您确定 setCurrentInstance 是您的 UIView 子类的方法,而不是视图控制器的方法吗?
  • 是的。这是我的 NSView 子类的一个方法。
  • 据我所知,这应该可行。你收到了什么警告?

标签: objective-c macos cocoa xcode4


【解决方案1】:

我好像在Cocoa With Love 找到了答案

在他对为什么不说“多态”的描述中,Matt Gallagher 给出了这个覆盖的例子:

  MyBaseClass *newObject = [[[MySubClass alloc] init] autorelease];
 [newObject instanceMethodDeclaredInMyBaseClass];

试过了,效果很好。简单直接,但如果我没有看到这个例子,我就不会想到它。

顺便说一句,我曾多次从 Cocoa With Love 中受益。

【讨论】:

    猜你喜欢
    • 2011-10-31
    • 1970-01-01
    • 1970-01-01
    • 2011-03-04
    • 1970-01-01
    • 2019-11-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多