Я очень новичок в obj-c (около 1 дня), и я прочитал документацию о том, как вызывать методы и как изменять строки, и я использовал подобный код в другой программе, и он работал нормально. Я программирую простой веб-браузер для iphone, чтобы научить себя библиотеке WebViewController. Когда я компилирую это, он выдает мне предупреждение «WebViewController» может не отвечать на «-parseURl:» в строке 17 в файле .m, и когда я его запускаю, я выдаю ошибку «NSInvalidArgumentException» в консоль.
Код для этого в WebViewController.h:
#import <UIKit/UIKit.h>
@interface WebViewController : UIViewController {
IBOutlet UIWebView *webView;
IBOutlet UITextField *textField;
}
NSString *urlAddress;
NSURL *url;
NSURLRequest *requestObj;
- (IBAction)gotoAddress:(id)sender;
- (NSString*) parseURL:(NSString*)str;
@property (nonatomic, retain) UIWebView *webView;
@end
Код для этого в WebViewController.m:
#import "WebViewController.h"
@implementation WebViewController
@synthesize webView;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {
// Initialization code
}
return self;
}
- (IBAction)gotoAddress:(id)sender {
urlAddress = textField.text;
urlAddress = [self parseURl:urlAddress];
url = [NSURL URLWithString:urlAddress];
requestObj = [NSURLRequest requestWithURL:url];
[webView loadRequest:requestObj];
NSLog(@"urlAddress= %s", [urlAddress cStringUsingEncoding:1]);
}
- (NSString*) parseURL:(NSString*)str {
NSLog(@"made it");
NSString *httpPart = @"http://";
if ([str rangeOfString:httpPart].location == NSNotFound) {
NSString *correctURL = [NSString stringWithFormat:@"%@%@", httpPart, str];
return correctURL;
}
else {
return str;
}
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning]; // Releases the view if it doesn't have a superview
// Release anything that's not essential, such as cached data
}
- (void)dealloc {
[webView release];
[super dealloc];
}
@end
Спасибо за помощь