gpt4 book ai didi

ios - 如何从ios中的静态库获取响应

转载 作者:行者123 更新时间:2023-11-28 22:15:49 25 4
gpt4 key购买 nike

在我的应用程序中,我使用了一个静态库。在那个库中,我实现了与服务器建立连接的代码。对于服务器交互,我使用了 NSURLSession 但它延迟了 UI 响应以避免它知道如何从 did finish loading 方法将响应发送回实际代码。

在我的团队中,我想将这个库分发给 iphone 和 ipad 开发工程师。他们无法控制我在静态库中实现的所有与服务器相关的代码。所以请告诉我我的问题的解决方案,谢谢。

下面是我在一类静态库中使用的代码:

静态类:

.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

导入“静态类.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 中:

在这里请告诉我如何包含我在静态库类中创建的委托(delegate)

@interface Class1 : NSObject<NSURLConnectionDelegate,NSURLSessionDelegate>

{

}

@end

@implementation Class1


-(void)login
{
StaticClass *object1=[[StaticClass alloc]init];

[object loginWithUsername:@“AAA” password:@“BBB” serviceUrl:url domainName:dname];

}

最佳答案

您可以提供 API 以通知已从连接读取响应,也可以发送通知。

第一个可以通过实现委托(delegate)协议(protocol)并在使用的应用程序中设置委托(delegate),或者通过使用基于 block 的 API 来实现,其中使用的应用程序将设置一个 block 来处理事件。您经常在系统提供的 API 中看到这两种模式,包括 NSUrlConnection

另一种选择是使用通知。您在使用的应用程序中注册一个特定的通知名称,并在连接返回数据后在您发布的库中注册。

关于ios - 如何从ios中的静态库获取响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21720503/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com