Objective c 为什么我会犯这个错误?已将无法识别的选择器发送到实例

Objective c 为什么我会犯这个错误?已将无法识别的选择器发送到实例,objective-c,ios,selector,Objective C,Ios,Selector,可能重复: 调用-[UIWebView HighlightAlloccurrenceSofString:][code>时,我收到错误“无法识别的选择器发送到实例0x756cef0”。选择器是在WBHighlight.h中声明的,我在WBSecondViewController.h中使用前向声明 WBSecondViewController.h @class WBHighlight; #import <UIKit/UIKit.h> @interface WBSecondViewCon

可能重复:

调用
-[UIWebView HighlightAlloccurrenceSofString:][code>时,我收到错误“无法识别的选择器发送到实例0x756cef0”。选择器是在WBHighlight.h中声明的,我在WBSecondViewController.h中使用前向声明

WBSecondViewController.h

@class WBHighlight;
#import <UIKit/UIKit.h>
@interface WBSecondViewController : UIViewController <UIWebViewDelegate, UIScrollViewDelegate>
@property (weak, nonatomic) IBOutlet WBHighlight *webView;
- (IBAction)searchButtonPressed:(id)sender;
- (IBAction)clearHighlights:(id)sender;
@end
WBHighlight.h

#import <UIKit/UIKit.h>

@interface WBHighlight : UIWebView{
}
- (NSInteger)highlightAllOccurencesOfString:(NSString*)str;
- (void)removeAllHighlights;
@end

有什么想法吗?

Hekiru,您需要创建WBHighlight的对象才能调用该方法。为此,您需要导入该类并生成对象

比方说

WBHighlight *objWBHighlight = [WBHighlight new];

//Then, call that required method:

int someVarToAssign = [objWBHighlight highlightAllOccurencesOfString:@"fsfsf"];
希望它能解决你的问题。试试看


如果有任何问题,请告诉我。:)

此问题是由于您将
WBHighlight
插座连接到
UIWebView

可能
wbrighlight
是一个子类
UIWebView
,其中声明和定义了
highlightalloccurrencesofString:
方法。标准的
UIWebView
中不存在此方法,这就是为什么它会抛出一个错误,如:发送到实例的无法识别的选择器

您需要在interface builder中将
UIWebView
的类更改为
WBHighlight

  • 去找你的身份检查员
  • 选择您的网络视图
  • 将UIWebView的类更改为
    WBHighlight

  • 在nib文件中,是否将web视图对象类更改为
    WBHighlight
    ?否。在WBSecondViewController.xib文件中,web视图与WBSecondViewController.h连接。是的,可以,但必须选择web视图,转到标识检查器(Cmd+选项+3)并将
    Class
    属性从
    UIWebView
    更改为
    WBHighlight
    ,否则您将向
    UIWebView
    的实例发送消息
    highlightalloccurrencesofstring:
    ,该类不声明此方法这是您第四次发布相同的问题。您好,Borrden先生,这个问题不是同一个问题。你为什么这么说。谢谢你的回答。我试过了。谢谢你的回答。程序运行正常。
    #import "WBHighlight.h"
    - (NSInteger)highlightAllOccurencesOfString:(NSString*)str
    {
        NSString *path = [[NSBundle mainBundle] pathForResource:@"UIWebViewSearch" ofType:@"js"];
        NSString *jsCode = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
        [self stringByEvaluatingJavaScriptFromString:jsCode];
    
        NSString *startSearch = [NSString stringWithFormat:@"uiWebview_HighlightAllOccurencesOfString('%@')",str];
        [self stringByEvaluatingJavaScriptFromString:startSearch];
    
        NSString *result = [self stringByEvaluatingJavaScriptFromString:@"uiWebview_SearchResultCount"];
        return [result integerValue];
    }
    
    - (void)removeAllHighlights
    {
        [self stringByEvaluatingJavaScriptFromString:@"uiWebview_RemoveAllHighlights()"];
    }
    @end
    
    WBHighlight *objWBHighlight = [WBHighlight new];
    
    //Then, call that required method:
    
    int someVarToAssign = [objWBHighlight highlightAllOccurencesOfString:@"fsfsf"];