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"];