Я обычно храню их в репозитории, но я действительно сочувствую Вашему требованию подавить размер.
, Если Вы не храните их в репозитории, абсолютно, должны быть заархивированы и имеющими версию так или иначе, и Ваша система сборки должна знать, как получить их. Много людей в мире Java, кажется, использует Знатока для выбирающих зависимостей автоматически, но я не использовал меня, таким образом, я не могу действительно рекомендовать за или против него.
Один хороший вариант мог бы состоять в том, чтобы сохранить отдельный репозиторий сторонних систем. Если Вы находитесь на Подрывной деятельности, Вы могли бы тогда использовать поддержку внешнего облика подрывной деятельности для автоматической проверки формы библиотек другой репозиторий. Иначе я предложил бы сохранить внутренний Анонимный FTP (или подобный) сервером, от которого Ваша система сборки может автоматически выбрать требования. Очевидно, Вы захотите удостовериться, что Вы сохраняете все старые версии библиотек и создали резервную копию всего там наряду с Вашим репозиторием.
Вы можете перемотать назад с помощью NSInputStream:
[stream setProperty:[NSNumber numberWithInt:offset]
forKey:NSStreamFileCurrentOffsetKey];
Я не думаю, что есть стандартная функция, которая это делает, но вы можете написать ее самостоятельно, используя категорию и C stdio API:
@interface NSData(DataWithContentsOfFileAtOffsetWithSize)
+ (NSData *) dataWithContentsOfFile:(NSString *)path atOffset:(off_t)offset withSize:(size_t)bytes;
@end
@implementation NSData(DataWithContentsOfFileAtOffsetWithSize)
+ (NSData *) dataWithContentsOfFile:(NSString *)path atOffset:(off_t)offset withSize:(size_t)bytes
{
FILE *file = fopen([path UTF8String], "rb");
if(file == NULL)
return nil;
void *data = malloc(bytes); // check for NULL!
fseeko(file, offset, SEEK_SET);
fread(data, 1, bytes, file); // check return value, in case read was short!
fclose(file);
// NSData takes ownership and will call free(data) when it's released
return [NSData dataWithBytesNoCopy:data length:bytes];
}
@end
Тогда вы можете это:
// Read 100 bytes of data beginning at offset 500 from "somefile"
NSData *data = [NSData dataWithContentsOfFile:@"somefile" atOffset:500 withSize:100];