매개 변수로 선택기를 전달하고 나중에 실행하려고합니다. 응용 프로그램을 종료Objective-C : 매개 변수로 선택기를 전달한 다음 호출하십시오.
인해 캐치되지 않는 예외 'NSInvalidArgumentException', 이유에 : 내가 콘솔에서 다음 오류 선택기를 호출 할 때하지만 난이 SIGABRT 오류가 '- [HttpRequest를 OnFinishConn :] : 인식 할 수없는 선택
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
인스턴스 0x7834c80 '로 전송#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]);
}
내가 객관적 C의 새로운, 그래서 기다려주십시오.
귀하의 질문에 대한 답변이 아니지만 귀하가이 질문을하는 것이 사실이라면 바퀴를 다시 열지 말고 ASIHttpRequest를 사용해 보는 것이 좋습니다. – Jonathan