关闭

ASIHTTP 代码品

1003人阅读 评论(0) 收藏 举报

Boolean CFReadStreamSetClient(CFReadStreamRef stream, CFOptionFlags streamEvents, CFReadStreamClientCallBack clientCB, CFStreamClientContext *clientContext);


注册stream  感兴趣的streamEvents  的CFReadStreamClientCallBack回调函数。


NSInteger bytesRead = [[self readStream] read:buffer maxLength:sizeof(buffer)];


该方法读取网络返回数据


NSOperation 调用概述

- (void)main  --> startRequest  --> (CFReadStreamOpen((CFReadStreamRef)[self readStream]))     (真正发送数据)   感觉理解不到位,因为我用wireShark 没抓到东东)


中调用



 [self performSelector:@selector(main) onThread:[[self class] threadForRequest:self] withObject:nil waitUntilDone:NO];


启动 main 方法在 threadForRequest  runLoop 中



ASIHTTPRequest  中重载了 main 和start 方法


开启 一个线程

+ (void)runRequests 

CFRunLoopRunInMode(kCFRunLoopDefaultMode, 1.0e10,TRUE); 

监听 事件。


start 方法 添加 main 方法  到上面线程 去执行。


CFReadStreamCreateForStreamedHTTPRequest(kCFAllocatorDefault, request,(CFReadStreamRef)[self postBodyReadStream]))


用request  初始化一个  readStream


[self scheduleReadStream];

[[self readStream] scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:[self runLoopMode]];

将readStream 方法添加到 RunLoop 中。


ASIHTTP  开启一个线程 用于 发送和接收消息。


- (void)handleNetworkEvent:(CFStreamEventType)type
{    
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];


在这里 添加一个释放池,返回一个autorelease 的数据。再处理完后立即释放。



+ (void)initialize 在 alloc 前就调用了。




0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:62895次
    • 积分:1156
    • 等级:
    • 排名:千里之外
    • 原创:49篇
    • 转载:37篇
    • 译文:2篇
    • 评论:0条