1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/gangwang-MTNET

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
README.md 7.7 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 16.03.2025 16:40 d6bdbc6
┌──┐┌──┐┌──┐┌──┐┌──┐
││││└┐┌┘│┌┐││ ─┤└┐┌┘
││││ ││ │││││ ─┤ ││ 
└┴┴┘ └┘ └┘└┘└──┘ └┘ 

                

MTNET

MTNET — это легкая и мощная HTTP-библиотека для iOS, предназначенная для обработки сценариев с большим количеством частых HTTP-запросов. В уже выпущенных приложениях она продемонстрировала высокую производительность и стабильность.

Другие сетевые библиотеки легко осваиваются, но становятся сложными при работе с плотной последовательностью запросов и большими файлами.

Используйте пул загрузки для управления всеми сетевыми загрузками, задайте количество одновременно выполняющихся запросов, прекратите или отмените отдельные запросы, используйте два способа получения данных: в оперативной памяти и на диске.

При получении данных на диск, они записываются небольшими порциями, что позволяет избежать проблем с использованием памяти при загрузке больших файлов.

Разработчики могут наследовать класс MTDownloadRecvDataFileSystem, чтобы гибко указывать пути хранения и имена файлов, а также использовать методы для проверки наличия кэшированных файлов и получения этих файлов.

Обновлен до версии ARC

~~~ Несколько пользователей обратились с просьбой поддерживать arc-версию; мы планируем сделать это как можно скорее ~~~# Использование
Добавьте заголовочные файлы

```objectivec
#import "MTDownloaderHelper.h"
#import "MTDownloadObjectModel.h"
#import "MTDownloadRequest.h"
#import "MTDownloadRecvData.h"	
```

Задайте свойство для пула загрузки

```objectivec
@property (nonatomic, strong) MTDownloaderHelper * downloadHelper;

	...

self.downloadHelper = [[MTDownloaderHelper alloc] init];	
```

Установите максимальное количество одновременно выполняемых задач

```objectivec
[self.downloadHelper setMaxConcurrentTaskCount:5];
```

Вы можете задать одинаковое время ожидания для всех ссылок в пуле загрузки

```objectivec
[self.downloadHelper setTimeout:20];
```

Добавьте запрос на загрузку в пул загрузки

```objectivec
MTDownloadRequest * request = [[MTDownloadRequest alloc] init];
MTDownloadObjectModel * downloadModel = [[MTDownloadObjectModel alloc] init];
downloadModel.url = @"http://www.baidu.com";
request.downloadModel = downloadModel;
    
request.delegate  = self;
    
[self.downloadHelper addDownloadRequest:request];
```

Отмените запрос на загрузку, если он ещё не начался, он будет удалён из очереди загрузки. Если загрузка уже началась, она будет прекращена.

```objective-c
[self.downloadHelper cancelDownloadRequestByName:request.name];
```

Используйте `MTDownloadRequestDelegate`, чтобы получить результаты загрузки.

```objective-c
- (void)didTaskReceiveDataFinish:(NSData *)theData request:(MTDownloadRequest *)request {
    NSLog(@"Загрузка завершена успешно");
}

- (void)taskDataDownloadFailed:(NSError *)error request:(MTDownloadRequest *)request {
    NSLog(@"Загрузка завершилась ошибкой: %@", error);
}
```### Пользовательская конфигурация приема данных загрузки
Вы можете расширять `MTDownloadRecvDataFileSystem`, чтобы создать свои правила приема данных. В этом классе также предоставляются методы `processRecvAllDataFinish` и `processRecvAllDataFailed`, которые можно переопределить для создания пользовательских действий при успешной или неудачной загрузке данных.Например, после неудачной загрузки данные могут требовать очистки кэша, а после успешной загрузки — выполнения операций сжатия/распаковки файлов, изменения размера изображений и т.д.


```objective-c
#import "MTDownloadRecvData.h"

@interface AppImageDownloadRecv : MTDownloadRecvDataFileSystem

- (void)setFileName:(NSString *)fileName;

@end



#import "AppImageDownloadRecv.h"
#import "MTPath.h"
#import "MTFile.h"
#import "NSString+Extension.h"
#import "mcfDef.h"

@implementation AppImageDownloadRecv

- (id)init {
    self = [super init];
    if (self) {
        self.localCacheDirPath = [MTPath Combine:kCache combinePath:@"appdata"];
        static BOOL created = NO;
        if (!created) {
            created = YES;
            [MTPath createDirectory:self.localCacheDirPath withAttributes:nil];
        }
    }

    return self;
}

- (void)setFileName:(NSString *)fileName {
    if ([NSString isNilOrEmpty:fileName]) {
        return;
    }

    self.name = fileName;
    self.localFullPath = [MTPath Combine:self.localCacheDirPath combinePath:fileName];
}

- (BOOL)bCached {
    return [MTFile fileExistsAtPath:self.localFullPath];
}

- (NSData *)data {
    if ([self bCached]) {
        return [NSData dataWithContentsOfFile:self.localFullPath];
    }

    return nil;
}

@end

```



Добавьте в пул загрузки запрос с пользовательской конфигурацией приема данных.```objective-c
MTDownloadRequest *request = [[MTDownloadRequest alloc] init];

MTDownloadObjectModel *downloadModel = [[MTDownloadObjectModel alloc] init];
downloadModel.url = @"http://www.baidu.com";
request.downloadModel = downloadModel;

AppImageDownloadRecv *recvData = [[AppImageDownloadRecv alloc] init];
[recvData setFileName:@"filename"];
request.recvData = recvData;

request.delegate = self;

[self.downloadHelper addDownloadRequest:request];
```Примечание: В данном случае нет необходимости в переводе, так как это программный код, который остаётся без изменений согласно правилам перевода. Однако, если бы были какие-либо строки с описанием или комментариями, они были бы переведены на русский язык.---
Если вам нравится этот проект, оставьте звёздочку;)---
Используете Mtnet в вашем приложении? Дайте знать через [weibo](http://weibo.com/wgblog) или [gang.wang.china@gmail.com](gang.wang.china@gmail.com):).

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/gangwang-MTNET.git
git@api.gitlife.ru:oschina-mirror/gangwang-MTNET.git
oschina-mirror
gangwang-MTNET
gangwang-MTNET
master