ASIHTTP 代码品

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 前就调用了。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值