내 응용 프로그램에서 하나의 정적 라이브러리를 사용하고 있습니다. 그 라이브러리에서 나는 서버와의 연결을위한 코드를 구현했다. 서버 상호 작용에 대해서는 NSURLSession
을 사용했지만 UI 응답을 지연시키지 않아야합니다. NSURLConnection
대리자 메소드를 사용하기 시작했습니다. 서버에서 응답을 얻지 만 여기에서 실제 코드로 응답을 보내는 방법을 알지 못합니다.로드가 완료되었습니다. 방법.ios에서 정적 라이브러리의 응답을 얻는 방법
우리 팀에서는이 라이브러리를 iphone 및 ipad 개발 엔지니어에게 배포하고 싶습니다. 그들은 정적 라이브러리에서 구현 한 모든 서버 관련 코드를 제어하지 못합니다. 그러니 내 문제에 대한 솔루션을 미리 보여 주셔서 감사합니다.
StaticClass :
.H 파일
@interface StaticClass : NSObject<NSURLConnectionDelegate,NSURLSessionDelegate>
{
NSMutableDictionary *responseDictionary;
NSUserDefaults *serviceURlInUserDefaults;
NSData *responseData;
}
@property (nonatomic, weak) id <DataReciverDelegate>delegate;
@property(strong,nonatomic)NSData *responseData;
-(void)loginWithUsername:(NSString *)name password:(NSString*)password serviceUrl:(NSString*)serviceUrl domainName:(NSString*)domainName ;
@end
수입 "StaticClass.h"
@protocol DataReciverDelegate <NSObject>
@required
- (void)responseDictionary:(NSDictionary *)response;
@end
@implementation StaticClass
@synthesize responseData;
-(void)loginWithUsername:(NSString *)name password:(NSString*)password serviceUrl:(NSString*)serviceUrl domainName:(NSString*)domainName
{
NSString *ApiStr=[NSString stringWithFormat:@“http://login.com”];
NSURL *Url=[[NSURL alloc]initWithString:[loginApiStr stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]];
NSURLRequest *ApiRequest=[NSURLRequest requestWithURL:loginUrl];
NSURLConnection *connection=[[NSURLConnection alloc]initWithRequest:ApiRequest delegate:self];
[connection start];
}
-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
}
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
self.responseData=data;
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
responseDictionary=[NSJSONSerialization JSONObjectWithData:self.responseData options:0 error:nil];
[_delegate responseDictionary:responseDictionary];
}
@end
아래는 내가 정적 라이브러리를 하나 개의 클래스에서 사용되는 코드입니다
사용하려는 응답이 class1에 있습니다.
는 다음 날 나는 당신이 그 응답을 알리는 제공 API 중 하나가 연결에서 읽은 수
@interface Class1 : NSObject<NSURLConnectionDelegate,NSURLSessionDelegate>
{
}
@end
@implementation Class1
-(void)login
{
StaticClass *object1=[[StaticClass alloc]init];
[object loginWithUsername:@“AAA” password:@“BBB” serviceUrl:url domainName:dname];
}
안녕하세요, 감사합니다. DataReciverDelegate의 구현은 데이터를 가져와야한다는 것을 의미합니다. 정적 라이브러리에서 정의 된 클래스에서 재정의해야한다는 것을 의미합니까? 그리고 한 가지 더 클래스에서 대리자 메서드를 구현해야합니다. 다음에는 클래스의 라이브러리 객체에 대한 대리자를 설정하는 방법을 알려주십시오. – Naresh
@Naresh : 데이터를 가져 오는 데 필요한 클래스에 DataReceiverDelegate를 구현해야합니다. 정적 라이브러리 클래스의 객체를 만들면 델리게이트를 자 체로 설정합니다 –
안녕하세요 미훈이 정말 고마워요.나는 대리자를 설정하는 데 약간 혼란 스럽다. 어디에서 대리인을 설정할 수 있는지 말해 줄 수 있겠 니? 나는 샘플 코드로 내 질문을 편집했다. 코드를 통해 제발 그 장소를 알려주시겠습니까? – Naresh