首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

iOS 開發必備:AFNetworking 3.x/4.x 接入與核心 API 實戰指南

     編輯:關於C語言

iOS 開發必備:AFNetworking 3.x/4.x 接入與核心 API 實戰指南

AFNetworking 是 iOS/macOS 最流行的網絡庫,封裝 NSURLSession 提供鏈式調用、自動序列化、圖片緩存等功能。本文覆蓋 CocoaPods/手動接入、基礎請求、圖片加載、進階配置全流程。

一、項目接入方式

1. CocoaPods(推薦)

pod 'AFNetworking', '~> 4.0'

2. 手動導入

  • 下載 GitHub Release 源碼
  • 拖入 AFNetworking/AFNetworking.h、AFNetworking/AFURLSessionManager.h 等核心文件
  • 添加系統框架:Security.framework、MobileCoreServices.framework、SystemConfiguration.framework

二、基礎網絡請求:GET/POST 與 JSON 解析

#import "AFNetworking.h"

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

// GET 請求示例
NSString *urlStr = @"https://api.example.com/data";
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:urlStr]];

NSURLSessionDataTask *task = [manager dataTaskWithRequest:request
    completionHandler:^(NSURLResponse * _Nonnull response,
                        id  _Nullable responseObject,
                        NSError * _Nullable error) {
    if (error) {
        NSLog(@"請求失敗: %@", error);
        return;
    }
    // responseObject 已自動反序列化為 NSDictionary/NSArray
    NSDictionary *result = (NSDictionary *)responseObject;
    NSLog(@"成功: %@", result);
}];
[task resume];

三、圖片異步加載與緩存

#import "UIImageView+AFNetworking.h"

UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(10, 150, 200, 200)];
NSURL *imageURL = [NSURL URLWithString:@"https://example.com/image.jpg"];

// 佔位圖、漸變動畫、緩存策略一行搞定
[imageView setImageWithURL:imageURL
           placeholderImage:[UIImage imageNamed:@"placeholder"]
                    options:SDWebImageRefreshCached
               progress:nil
              completion:nil];
[self.view addSubview:imageView];

四、進階配置:安全策略、序列化器、攔截器

  • HTTPS 證書綁定:manager.securityPolicy.pinningMode = AFSSLPinningModePublicKey;
  • 自定義響應序列化:繼承 AFHTTPResponseSerializer 處理非標準格式。
  • 請求/響應攔截:實現 AFURLRequestSerialization / AFHTTPResponseSerialization 協議統一添加 Token、日誌、錯誤碼映射。

五、避坑指南

  1. iOS 9+ 需配置 NSAppTransportSecurity 允許 HTTP 或指定域名例外。
  2. 主線程更新 UI 必須在 completion block 中 dispatch_async(dispatch_get_main_queue(), ^{...})。
  3. 大文件上傳/下載使用 AFURLSessionManager 的 downloadTaskWithRequest / uploadTaskWithRequest 並監聽進度。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved