“无法识别的选择器发送到实例”,即使XCode说实例是正确的类型

时间:2013-09-24 20:26:23

标签: objective-c cocoa xcode4.6

在mac桌面应用中,我收到“无法识别的选择器发送到实例”错误。

以下是导致错误的行:

    My_WebView *mvw = [mWebView LoadHtml];

以下是相关的课程定义:

My_WebView.h

    #import <WebKit/WebKit.h>  

    @interface My_WebView : WebView
    {
    }

    - (My_WebView *) LoadHtml; // initialize the WebView with a page

    @end

My_WebView.mm

    #import  "My_WebView.h"

    @implementation My_WebView

    - (My_WebView *) LoadHtml
    {
        NSLog(@"Loading HTML...");
        // do stuff...
        return self;
    }

    @end

当我在XCode调试器中运行我的代码并在违规行中断时,我被告知mWebView是预期类型(My_WebView)。这排除了许多similar questions I've seen here中确定的问题。

有谁知道我做错了什么?

1 个答案:

答案 0 :(得分:0)

我明白了。我很困惑。实例不是正确的类型!

XCode调试器说mWebView是指向My_WebView的指针。

    mWebView    My_WebView *    0x000000010e0884c0

这让我错误地认为My_WebView也是mWebView的运行时类型。事实并非如NSLog(@"mWebView: %@", mWebView);po mWebView所示。

     mWebView: <WebView: 0x1180ca4c0>

mWebView实际上只是一个普通的旧Cocoa WebView。这就是它没有回复LoadHTML消息的原因。问题解决了。