AFNetWorking

AFNetworking

AFNetworking 是一个能够快速使用的ios和mac os x下的网络框架,它是构建在Foundation URL Loading System之上的,封装了网络的抽象层,可以方便的使用,AFNetworking是一个模块化架构,拥有丰富api的框架。

AFNetworking官方文档http://cocoadocs.org/docsets/AFNetworking/2.3.1/index.html

一、HTTP请求与操作: 1、AFHTTPRequestOperationManager: 该类封装与Web应用程序进行通信通过HTTP,包括要求制作,响应序列化,网络可达性监控和安全性,以及要求经营管理的常见模式。

GET 请求:

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];  
[manager GET:@"http://example.com/resources.json" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {  
    NSLog(@"JSON: %@", responseObject);  
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {  
    NSLog(@"Error: %@", error);  
}];

POST Multi-Part格式的表单文件上传请求:

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];  
NSDictionary *parameters = @{@"foo": @"bar"};  
NSURL *filePath = [NSURL fileURLWithPath:@"file://path/to/image.png"];  
[manager POST:@"http://example.com/resources.json" parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {  
    [formData appendPartWithFileURL:filePath name:@"image" error:nil];  
} success:^(AFHTTPRequestOperation *operation, id responseObject) {  
    NSLog(@"Success: %@", responseObject);  
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {  
    NSLog(@"Error: %@", error);  
}];    

二、Session管理: 
1、AFURLSessionManager:创建和管理制定的NSURLSession对象

创建一个上传任务:

NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];  
AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];  

NSURL *URL = [NSURL URLWithString:@"http://example.com/upload"];  
NSURLRequest *request = [NSURLRequest requestWithURL:URL];  

NSURL *filePath = [NSURL fileURLWithPath:@"file://path/to/image.png"];  
NSURLSessionUploadTask *uploadTask = [manager uploadTaskWithRequest:request fromFile:filePath progress:nil completionHandler:^(NSURLResponse *response, id responseObject, NSError *error) {  
    if (error) {  
        NSLog(@"Error: %@", error);  
    } else {  
        NSLog(@"Success: %@ %@", response, responseObject);  
    }  
}];  
[uploadTask resume]; 

创建一个数据流任务:

NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];  
AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];  

NSURL *URL = [NSURL URLWithString:@"http://example.com/upload"];  
NSURLRequest *request = [NSURLRequest requestWithURL:URL];  

NSURLSessionDataTask *dataTask = [manager dataTaskWithRequest:request completionHandler:^(NSURLResponse *response, id responseObject, NSError *error) {  
    if (error) {  
        NSLog(@"Error: %@", error);  
    } else {  
        NSLog(@"%@ %@", response, responseObject);  
    }  
}];  
[dataTask resume];  

使用AFHTTPRequestOperation 
1、AFHTTPRequestOperation是使用HTTP或HTTPS协议的AFURLConnectionOperation的子类。 它封装的获取后的HTTP状态和类型将决定请求的成功与否 。 
2、虽然AFHTTPRequestOperationManager通常是最好的去请求的方式,但是 AFHTTPRequestOpersion也能够单独使用。

通过GET方式:

NSURL *URL = [NSURL URLWithString:@"http://example.com/resources/123.json"];  
NSURLRequest *request = [NSURLRequest requestWithURL:URL];  
AFHTTPRequestOperation *op = [[AFHTTPRequestOperation alloc] initWithRequest:request];  
op.responseSerializer = [AFJSONResponseSerializer serializer];  
[op setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {  
    NSLog(@"JSON: %@", responseObject);  
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {  
    NSLog(@"Error: %@", error);  
}];  
[[NSOperationQueue mainQueue] addOperation:op];  

连续操作多个:

NSMutableArray *mutableOperations = [NSMutableArray array];  
for (NSURL *fileURL in filesToUpload) {  
    NSURLRequest *request = [[AFHTTPRequestSerializer serializer] multipartFormRequestWithMethod:@"POST" URLString:@"http://example.com/upload" parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {  
        [formData appendPartWithFileURL:fileURL name:@"images[]" error:nil];  
    }];  

   AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];  

   [mutableOperations addObject:operation];  
}  

NSArray *operations = [AFURLConnectionOperation batchOfRequestOperations:@[...] progressBlock:^(NSUInteger numberOfFinishedOperations, NSUInteger totalNumberOfOperations) {  
    NSLog(@"%lu of %lu complete", numberOfFinishedOperations, totalNumberOfOperations);  
} completionBlock:^(NSArray *operations) {  
    NSLog(@"All operations in batch complete");  
}];  
[[NSOperationQueue mainQueue] addOperations:operations waitUntilFinished:NO];  

1. AFURLConnectionOperation类型 
AFURLConnectionOperation类型直接继承自NSOperation类型,它的执行包含如下几个可以说明的地方。

  1. NSOperation的状态管理

AFURLConnectionOperation内部有一个AFOperationState类型的state属性,当整个连接操作发生变化后,state属性会改变。同时AFURLConnectionOperation会改写NSOperation的状态返回属性,如isReady, isExecuting, isFinished。这些属性的返回值就是通过内部state属性来决定的。

  1. NSOperation的异步执行

AFURLConnectionOperation还会改写NSOperation的isConcurrent属性,并直接返回YES,说明调用start方法后会异步执行其操作。

所有AFURLConnectionOperation的异步执行会运行到一个名称为AFNetworking的线程中,这个线程只会被创建一次,这个线程有一个无限循环来运行线程中的NSRunLoop。

2. AFHTTPRequestOperation类型 
AFHTTPRequestOperation类型直接继承上面的AFURLConnectionOperation类型。其意义是在AFURLConnectionOperation类型上,加入了偏向HTTP的处理,如对于整个HTTP操作成功的判断,和暂停和继续处理等。

  1. 关于操作的成功判定

核心是两个数据,一个是NSIndexSet类型的acceptableStatusCodes代表可以被认为算成功的HTTP返回码,默认就是200-299。另一个数据是NSSet类型的acceptableContentTypes。也就是需要的MIME类型。

有了这两个数据,AFHTTPRequestOperation就可以判断整个操作是否成功。于是AFHTTPRequestOperation又加入了另一个重要的方法:

  • ( void )setCompletionBlockWithSuccess:( void (^)( AFHTTPRequestOperation *operation, id responseObject))success

                            failure:( void (^)( AFHTTPRequestOperation *operation, NSError *error))failure;
    

使用它就可以设置两个处理整个操作成功和失败的Block。

  1. 关于暂停和继续

这个在AFNetworking中源码里的注释提到过。AFURLConnectionOperation的默认执行是暂停后再执行实际上就是重新开始,但是他的派生类,AFHTTPRequestOperation不会这样做,由于AFHTTPRequestOperation是HTTP导向的,所以它的暂停操作会缓存当前的数据位置,等继续操作后会利用HTTP头中的Range字段来继续上面的操作。

6/2025 MP4 出版 |视频: h264, 1280x720 |音频:AAC,44.1 KHz,2 Ch 语言:英语 |持续时间:12h 3m |大小: 4.5 GB 通过实际 NLP 项目学习文本预处理、矢量化、神经网络、CNN、RNN 和深度学习 学习内容 学习核心 NLP 任务,如词汇切分、词干提取、词形还原、POS 标记和实体识别,以实现有效的文本预处理。 使用 One-Hot、TF-IDF、BOW、N-grams 和 Word2Vec 将文本转换为向量,用于 ML 和 DL 模型。 了解并实施神经网络,包括感知器、ANN 和数学反向传播。 掌握深度学习概念,如激活函数、损失函数和优化技术,如 SGD 和 Adam 使用 CNN 和 RNN 构建 NLP 和计算机视觉模型,以及真实数据集和端到端工作流程 岗位要求 基本的 Python 编程知识——包括变量、函数和循环,以及 NLP 和 DL 实现 熟悉高中数学——尤其是线性代数、概率和函数,用于理解神经网络和反向传播。 对 AI、ML 或数据科学感兴趣 – 不需要 NLP 或深度学习方面的经验;概念是从头开始教授的 描述 本课程专为渴望深入了解自然语言处理 (NLP) 和深度学习的激动人心的世界的人而设计,这是人工智能行业中增长最快和需求最旺盛的两个领域。无论您是学生、希望提升技能的在职专业人士,还是有抱负的数据科学家,本课程都能为您提供必要的工具和知识,以了解机器如何阅读、解释和学习人类语言。我们从 NLP 的基础开始,从头开始使用文本预处理技术,例如分词化、词干提取、词形还原、停用词删除、POS 标记和命名实体识别。这些技术对于准备非结构化文本数据至关重要,并用于聊天机器人、翻译器和推荐引擎等实际 AI 应用程序。接下来,您将学习如何使用 Bag of Words、TF-IDF、One-Hot E
内容概要:本文全面介绍了虚幻引擎4(UE4)的功能、应用场景、学习准备、基础操作、蓝图系统、材质与纹理、灯光与渲染等方面的内容。UE4是一款由Epic Games开发的强大游戏引擎,支持跨平台开发,广泛应用于游戏、虚拟现实、增强现实、建筑设计等领域。文章详细阐述了学习UE4前的硬件和软件准备,包括最低和推荐配置,以及Epic Games账户创建、启动器安装等步骤。接着介绍了UE4的界面组成和基本操作,如视口、内容浏览器、细节面板等。蓝图系统作为UE4的可视化脚本工具,极大降低了编程门槛,通过实例演练展示了蓝图的应用。材质与纹理部分讲解了材质编辑器的使用和纹理导入设置,灯光与渲染部分介绍了不同类型的灯光及其应用,以及后期处理和高质量图片渲染的方法。最后推荐了一些学习资源,包括官方文档、教程网站、论坛社区和书籍。 适合人群:对游戏开发感兴趣、希望学习UE4的初学者和有一定编程基础的研发人员。 使用场景及目标:①掌握UE4的基本操作和界面认知,为后续深入学习打下基础;②通过蓝图系统快速创建游戏逻辑,降低编程门槛;③学会材质与纹理的创建和设置,提升游戏画面的真实感;④掌握灯光与渲染技术,营造逼真的游戏氛围;⑤利用推荐的学习资源,加速UE4的学习进程。 阅读建议:本文内容详尽,涵盖了UE4的各个方面,建议读者按照章节顺序逐步学习,先从基础操作入手,再深入到蓝图、材质、灯光等高级功能。在学习过程中,结合实际项目进行练习,遇到问题时参考官方文档或社区论坛,不断积累经验和技能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值