Tôi đang cố chuyển một bộ chọn làm tham số và thực thi nó sau này. Nhưng tôi nhận được một lỗi SIGABRT khi tôi cố gắng để gọi bộ chọn với các lỗi kế tiếp trong giao diện điều khiển:Mục tiêu-C: Chuyển bộ chọn làm tham số và sau đó gọi nó là
Chấm dứt ứng dụng do ngoại lệ uncaught 'NSInvalidArgumentException', lý do: '- [HttpRequest OnFinishConn:]: chọn không được công nhận gửi đến dụ 0x7834c80'
HttpRequest.h
#import <Foundation/Foundation.h>
@interface HttpRequest : NSObject
{
@private SEL onEndSel;
@private NSMutableData* receivedData;
}
-(void) StartRequest:(NSString *) url
parameters:(NSString*) params
onEndSelector:(SEL) selector;
@end
HttpRequest.m
#import "HttpRequest.h"
@implementation HttpRequest
-(void) StartRequest:(NSString *)url
parameters:(NSString*)params
onEndSelector:(SEL)selector
{
receivedData = [[NSMutableData alloc] init];
NSMutableURLRequest *request =
[[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:url]];
[request setHTTPMethod:@"POST"];
[request setHTTPBody:[params dataUsingEncoding:NSUTF8StringEncoding]];
onEndSel = selector;
NSURLConnection* conn = [[NSURLConnection alloc] initWithRequest:request delegate:self];
}
-(void) connectionDidFinishLoading:(NSURLConnection*) connection
{
//NSLog([[NSString alloc] initWithData:receivedData encoding:NSUTF8StringEncoding]);
[self performSelector:onEndSel withObject:[[NSMutableData alloc] initWithData:receivedData]];
}
-(void) connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
[receivedData appendData:data];
}
@end
AppDelegate.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
//self.window.backgroundColor = [UIColor whiteColor];
HttpRequest* req = [[HttpRequest alloc] init];
SEL mysel = @selector(OnFinishConn:);
NSString * url = [[NSString alloc] initWithString:@"http://www.google.es"];
[req StartRequest:url parameters:@"a" onEndSelector:@selector(OnFinishConn:)];
[self.window makeKeyAndVisible];
return YES;
}
-(void)OnFinishConn:(NSMutableData *)data
{
NSLog([[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]);
}
Tôi mới trong mục tiêu c, vì vậy hãy kiên nhẫn.
Mặc dù không trả lời câu hỏi của bạn, nhưng thực tế là bạn đặt câu hỏi này, dẫn tôi khuyên bạn nên thử ASIHttpRequest, thay vì tạo lại bánh xe – Jonathan