@ -0,0 +1,3 @@ |
|||||||
|
PODFILE CHECKSUM: a7732c713491b70d68ee32155245c2dd3c19e7a3 |
||||||
|
|
||||||
|
COCOAPODS: 1.10.1 |
@ -0,0 +1,219 @@ |
|||||||
|
// |
||||||
|
// AvoidCrash.m |
||||||
|
// https://github.com/chenfanfang/AvoidCrash |
||||||
|
// |
||||||
|
// Created by mac on 16/9/21. |
||||||
|
// Copyright © 2016年 chenfanfang. All rights reserved. |
||||||
|
// |
||||||
|
|
||||||
|
#import "AvoidCrash.h" |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#define key_errorName @"errorName" |
||||||
|
#define key_errorReason @"errorReason" |
||||||
|
#define key_errorPlace @"errorPlace" |
||||||
|
#define key_defaultToDo @"defaultToDo" |
||||||
|
#define key_callStackSymbols @"callStackSymbols" |
||||||
|
#define key_exception @"exception" |
||||||
|
|
||||||
|
|
||||||
|
@implementation AvoidCrash |
||||||
|
|
||||||
|
|
||||||
|
+ (void)becomeEffective { |
||||||
|
[self effectiveIfDealWithNoneSel:NO]; |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
+ (void)makeAllEffective { |
||||||
|
[self effectiveIfDealWithNoneSel:YES]; |
||||||
|
} |
||||||
|
|
||||||
|
+ (void)effectiveIfDealWithNoneSel:(BOOL)dealWithNoneSel { |
||||||
|
static dispatch_once_t onceToken; |
||||||
|
dispatch_once(&onceToken, ^{ |
||||||
|
|
||||||
|
[NSObject avoidCrashExchangeMethodIfDealWithNoneSel:dealWithNoneSel]; |
||||||
|
|
||||||
|
[NSArray avoidCrashExchangeMethod]; |
||||||
|
[NSMutableArray avoidCrashExchangeMethod]; |
||||||
|
|
||||||
|
[NSDictionary avoidCrashExchangeMethod]; |
||||||
|
[NSMutableDictionary avoidCrashExchangeMethod]; |
||||||
|
|
||||||
|
[NSString avoidCrashExchangeMethod]; |
||||||
|
[NSMutableString avoidCrashExchangeMethod]; |
||||||
|
|
||||||
|
[NSAttributedString avoidCrashExchangeMethod]; |
||||||
|
[NSMutableAttributedString avoidCrashExchangeMethod]; |
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
|
+ (void)setupNoneSelClassStringsArr:(NSArray<NSString *> *)classStrings { |
||||||
|
[NSObject setupNoneSelClassStringsArr:classStrings]; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 初始化一个需要防止”unrecognized selector sent to instance”的崩溃的类名前缀的数组 |
||||||
|
*/ |
||||||
|
+ (void)setupNoneSelClassStringPrefixsArr:(NSArray<NSString *> *)classStringPrefixs { |
||||||
|
[NSObject setupNoneSelClassStringPrefixsArr:classStringPrefixs]; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* 类方法的交换 |
||||||
|
* |
||||||
|
* @param anClass 哪个类 |
||||||
|
* @param method1Sel 方法1 |
||||||
|
* @param method2Sel 方法2 |
||||||
|
*/ |
||||||
|
+ (void)exchangeClassMethod:(Class)anClass method1Sel:(SEL)method1Sel method2Sel:(SEL)method2Sel { |
||||||
|
Method method1 = class_getClassMethod(anClass, method1Sel); |
||||||
|
Method method2 = class_getClassMethod(anClass, method2Sel); |
||||||
|
method_exchangeImplementations(method1, method2); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* 对象方法的交换 |
||||||
|
* |
||||||
|
* @param anClass 哪个类 |
||||||
|
* @param method1Sel 方法1(原本的方法) |
||||||
|
* @param method2Sel 方法2(要替换成的方法) |
||||||
|
*/ |
||||||
|
+ (void)exchangeInstanceMethod:(Class)anClass method1Sel:(SEL)method1Sel method2Sel:(SEL)method2Sel { |
||||||
|
|
||||||
|
|
||||||
|
Method originalMethod = class_getInstanceMethod(anClass, method1Sel); |
||||||
|
Method swizzledMethod = class_getInstanceMethod(anClass, method2Sel); |
||||||
|
|
||||||
|
BOOL didAddMethod = |
||||||
|
class_addMethod(anClass, |
||||||
|
method1Sel, |
||||||
|
method_getImplementation(swizzledMethod), |
||||||
|
method_getTypeEncoding(swizzledMethod)); |
||||||
|
|
||||||
|
if (didAddMethod) { |
||||||
|
class_replaceMethod(anClass, |
||||||
|
method2Sel, |
||||||
|
method_getImplementation(originalMethod), |
||||||
|
method_getTypeEncoding(originalMethod)); |
||||||
|
} |
||||||
|
|
||||||
|
else { |
||||||
|
method_exchangeImplementations(originalMethod, swizzledMethod); |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* 获取堆栈主要崩溃精简化的信息<根据正则表达式匹配出来> |
||||||
|
* |
||||||
|
* @param callStackSymbols 堆栈主要崩溃信息 |
||||||
|
* |
||||||
|
* @return 堆栈主要崩溃精简化的信息 |
||||||
|
*/ |
||||||
|
|
||||||
|
+ (NSString *)getMainCallStackSymbolMessageWithCallStackSymbols:(NSArray<NSString *> *)callStackSymbols { |
||||||
|
|
||||||
|
//mainCallStackSymbolMsg的格式为 +[类名 方法名] 或者 -[类名 方法名] |
||||||
|
__block NSString *mainCallStackSymbolMsg = nil; |
||||||
|
|
||||||
|
//匹配出来的格式为 +[类名 方法名] 或者 -[类名 方法名] |
||||||
|
NSString *regularExpStr = @"[-\\+]\\[.+\\]"; |
||||||
|
|
||||||
|
|
||||||
|
NSRegularExpression *regularExp = [[NSRegularExpression alloc] initWithPattern:regularExpStr options:NSRegularExpressionCaseInsensitive error:nil]; |
||||||
|
|
||||||
|
|
||||||
|
for (int index = 2; index < callStackSymbols.count; index++) { |
||||||
|
NSString *callStackSymbol = callStackSymbols[index]; |
||||||
|
|
||||||
|
[regularExp enumerateMatchesInString:callStackSymbol options:NSMatchingReportProgress range:NSMakeRange(0, callStackSymbol.length) usingBlock:^(NSTextCheckingResult * _Nullable result, NSMatchingFlags flags, BOOL * _Nonnull stop) { |
||||||
|
if (result) { |
||||||
|
NSString* tempCallStackSymbolMsg = [callStackSymbol substringWithRange:result.range]; |
||||||
|
|
||||||
|
//get className |
||||||
|
NSString *className = [tempCallStackSymbolMsg componentsSeparatedByString:@" "].firstObject; |
||||||
|
className = [className componentsSeparatedByString:@"["].lastObject; |
||||||
|
|
||||||
|
NSBundle *bundle = [NSBundle bundleForClass:NSClassFromString(className)]; |
||||||
|
|
||||||
|
//filter category and system class |
||||||
|
if (![className hasSuffix:@")"] && bundle == [NSBundle mainBundle]) { |
||||||
|
mainCallStackSymbolMsg = tempCallStackSymbolMsg; |
||||||
|
|
||||||
|
} |
||||||
|
*stop = YES; |
||||||
|
} |
||||||
|
}]; |
||||||
|
|
||||||
|
if (mainCallStackSymbolMsg.length) { |
||||||
|
break; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
return mainCallStackSymbolMsg; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* 提示崩溃的信息(控制台输出、通知) |
||||||
|
* |
||||||
|
* @param exception 捕获到的异常 |
||||||
|
* @param defaultToDo 这个框架里默认的做法 |
||||||
|
*/ |
||||||
|
+ (void)noteErrorWithException:(NSException *)exception defaultToDo:(NSString *)defaultToDo { |
||||||
|
|
||||||
|
//堆栈数据 |
||||||
|
NSArray *callStackSymbolsArr = [NSThread callStackSymbols]; |
||||||
|
|
||||||
|
//获取在哪个类的哪个方法中实例化的数组 字符串格式 -[类名 方法名] 或者 +[类名 方法名] |
||||||
|
NSString *mainCallStackSymbolMsg = [AvoidCrash getMainCallStackSymbolMessageWithCallStackSymbols:callStackSymbolsArr]; |
||||||
|
|
||||||
|
if (mainCallStackSymbolMsg == nil) { |
||||||
|
|
||||||
|
mainCallStackSymbolMsg = @"崩溃方法定位失败,请您查看函数调用栈来排查错误原因"; |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
NSString *errorName = exception.name; |
||||||
|
NSString *errorReason = exception.reason; |
||||||
|
//errorReason 可能为 -[__NSCFConstantString avoidCrashCharacterAtIndex:]: Range or index out of bounds |
||||||
|
//将avoidCrash去掉 |
||||||
|
errorReason = [errorReason stringByReplacingOccurrencesOfString:@"avoidCrash" withString:@""]; |
||||||
|
|
||||||
|
NSString *errorPlace = [NSString stringWithFormat:@"Error Place:%@",mainCallStackSymbolMsg]; |
||||||
|
|
||||||
|
NSString *logErrorMessage = [NSString stringWithFormat:@"\n\n%@\n\n%@\n%@\n%@\n%@",AvoidCrashSeparatorWithFlag, errorName, errorReason, errorPlace, defaultToDo]; |
||||||
|
|
||||||
|
logErrorMessage = [NSString stringWithFormat:@"%@\n\n%@\n\n",logErrorMessage,AvoidCrashSeparator]; |
||||||
|
AvoidCrashLog(@"%@",logErrorMessage); |
||||||
|
|
||||||
|
|
||||||
|
//请忽略下面的赋值,目的只是为了能顺利上传到cocoapods |
||||||
|
logErrorMessage = logErrorMessage; |
||||||
|
|
||||||
|
NSDictionary *errorInfoDic = @{ |
||||||
|
key_errorName : errorName, |
||||||
|
key_errorReason : errorReason, |
||||||
|
key_errorPlace : errorPlace, |
||||||
|
key_defaultToDo : defaultToDo, |
||||||
|
key_exception : exception, |
||||||
|
key_callStackSymbols : callStackSymbolsArr |
||||||
|
}; |
||||||
|
|
||||||
|
//将错误信息放在字典里,用通知的形式发送出去 |
||||||
|
dispatch_async(dispatch_get_main_queue(), ^{ |
||||||
|
[[NSNotificationCenter defaultCenter] postNotificationName:AvoidCrashNotification object:nil userInfo:errorInfoDic]; |
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@end |
@ -0,0 +1,17 @@ |
|||||||
|
//
|
||||||
|
// AvoidCrashProtocol.h
|
||||||
|
// https://github.com/chenfanfang/AvoidCrash
|
||||||
|
//
|
||||||
|
// Created by chenfanfang on 2017/7/22.
|
||||||
|
// Copyright © 2017年 chenfanfang. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import <UIKit/UIKit.h> |
||||||
|
|
||||||
|
|
||||||
|
@protocol AvoidCrashProtocol <NSObject> |
||||||
|
|
||||||
|
@required |
||||||
|
+ (void)avoidCrashExchangeMethod; |
||||||
|
|
||||||
|
@end |
@ -0,0 +1,37 @@ |
|||||||
|
//
|
||||||
|
// AvoidCrashStubProxy.h
|
||||||
|
// https://github.com/chenfanfang/AvoidCrash
|
||||||
|
//
|
||||||
|
// Created by chenfanfang on 2017/7/25.
|
||||||
|
// Copyright © 2017年 chenfanfang. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import <Foundation/Foundation.h> |
||||||
|
|
||||||
|
|
||||||
|
#define AvoidCrashNotification @"AvoidCrashNotification" |
||||||
|
#define AvoidCrashIsiOS(version) ([[UIDevice currentDevice].systemVersion floatValue] >= version) |
||||||
|
|
||||||
|
|
||||||
|
//user can ignore below define
|
||||||
|
#define AvoidCrashDefaultReturnNil @"AvoidCrash default is to return nil to avoid crash." |
||||||
|
#define AvoidCrashDefaultIgnore @"AvoidCrash default is to ignore this operation to avoid crash." |
||||||
|
|
||||||
|
#define AvoidCrashSeparator @"================================================================" |
||||||
|
#define AvoidCrashSeparatorWithFlag @"========================AvoidCrash Log==========================" |
||||||
|
|
||||||
|
|
||||||
|
#ifdef DEBUG |
||||||
|
|
||||||
|
#define AvoidCrashLog(...) NSLog(@"%@",[NSString stringWithFormat:__VA_ARGS__]) |
||||||
|
|
||||||
|
#else |
||||||
|
|
||||||
|
#define AvoidCrashLog(...) |
||||||
|
#endif |
||||||
|
|
||||||
|
@interface AvoidCrashStubProxy : NSObject |
||||||
|
|
||||||
|
- (void)proxyMethod; |
||||||
|
|
||||||
|
@end |
@ -0,0 +1,18 @@ |
|||||||
|
// |
||||||
|
// AvoidCrashStubProxy.m |
||||||
|
// https://github.com/chenfanfang/AvoidCrash |
||||||
|
// |
||||||
|
// Created by chenfanfang on 2017/7/25. |
||||||
|
// Copyright © 2017年 chenfanfang. All rights reserved. |
||||||
|
// |
||||||
|
|
||||||
|
#import "AvoidCrashStubProxy.h" |
||||||
|
|
||||||
|
|
||||||
|
@implementation AvoidCrashStubProxy |
||||||
|
|
||||||
|
- (void)proxyMethod { |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
@end |
@ -0,0 +1,25 @@ |
|||||||
|
//
|
||||||
|
// NSArray+AvoidCrash.h
|
||||||
|
// https://github.com/chenfanfang/AvoidCrash
|
||||||
|
//
|
||||||
|
// Created by mac on 16/9/21.
|
||||||
|
// Copyright © 2016年 chenfanfang. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import <Foundation/Foundation.h> |
||||||
|
#import "AvoidCrashProtocol.h" |
||||||
|
|
||||||
|
@interface NSArray (AvoidCrash)<AvoidCrashProtocol> |
||||||
|
|
||||||
|
|
||||||
|
@end |
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Can avoid crash method |
||||||
|
* |
||||||
|
* 1. NSArray的快速创建方式 NSArray *array = @[@"chenfanfang", @"AvoidCrash"]; //这种创建方式其实调用的是2中的方法
|
||||||
|
* 2. +(instancetype)arrayWithObjects:(const id _Nonnull __unsafe_unretained *)objects count:(NSUInteger)cnt |
||||||
|
* 3. - (id)objectAtIndex:(NSUInteger)index |
||||||
|
* 4. - (void)getObjects:(__unsafe_unretained id _Nonnull *)objects range:(NSRange)range |
||||||
|
*/
|
@ -0,0 +1,258 @@ |
|||||||
|
// |
||||||
|
// NSArray+AvoidCrash.m |
||||||
|
// https://github.com/chenfanfang/AvoidCrash |
||||||
|
// |
||||||
|
// Created by mac on 16/9/21. |
||||||
|
// Copyright © 2016年 chenfanfang. All rights reserved. |
||||||
|
// |
||||||
|
|
||||||
|
#import "NSArray+AvoidCrash.h" |
||||||
|
|
||||||
|
#import "AvoidCrash.h" |
||||||
|
|
||||||
|
@implementation NSArray (AvoidCrash) |
||||||
|
|
||||||
|
|
||||||
|
+ (void)avoidCrashExchangeMethod { |
||||||
|
|
||||||
|
static dispatch_once_t onceToken; |
||||||
|
dispatch_once(&onceToken, ^{ |
||||||
|
//================= |
||||||
|
// class method |
||||||
|
//================= |
||||||
|
|
||||||
|
//instance array method exchange |
||||||
|
[AvoidCrash exchangeClassMethod:[self class] method1Sel:@selector(arrayWithObjects:count:) method2Sel:@selector(AvoidCrashArrayWithObjects:count:)]; |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//==================== |
||||||
|
// instance method |
||||||
|
//==================== |
||||||
|
|
||||||
|
Class __NSArray = NSClassFromString(@"NSArray"); |
||||||
|
Class __NSArrayI = NSClassFromString(@"__NSArrayI"); |
||||||
|
Class __NSSingleObjectArrayI = NSClassFromString(@"__NSSingleObjectArrayI"); |
||||||
|
Class __NSArray0 = NSClassFromString(@"__NSArray0"); |
||||||
|
|
||||||
|
|
||||||
|
//objectsAtIndexes: |
||||||
|
[AvoidCrash exchangeInstanceMethod:__NSArray method1Sel:@selector(objectsAtIndexes:) method2Sel:@selector(avoidCrashObjectsAtIndexes:)]; |
||||||
|
|
||||||
|
|
||||||
|
//objectAtIndex: |
||||||
|
|
||||||
|
[AvoidCrash exchangeInstanceMethod:__NSArrayI method1Sel:@selector(objectAtIndex:) method2Sel:@selector(__NSArrayIAvoidCrashObjectAtIndex:)]; |
||||||
|
|
||||||
|
[AvoidCrash exchangeInstanceMethod:__NSSingleObjectArrayI method1Sel:@selector(objectAtIndex:) method2Sel:@selector(__NSSingleObjectArrayIAvoidCrashObjectAtIndex:)]; |
||||||
|
|
||||||
|
[AvoidCrash exchangeInstanceMethod:__NSArray0 method1Sel:@selector(objectAtIndex:) method2Sel:@selector(__NSArray0AvoidCrashObjectAtIndex:)]; |
||||||
|
|
||||||
|
//objectAtIndexedSubscript: |
||||||
|
if (AvoidCrashIsiOS(11.0)) { |
||||||
|
[AvoidCrash exchangeInstanceMethod:__NSArrayI method1Sel:@selector(objectAtIndexedSubscript:) method2Sel:@selector(__NSArrayIAvoidCrashObjectAtIndexedSubscript:)]; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
//getObjects:range: |
||||||
|
[AvoidCrash exchangeInstanceMethod:__NSArray method1Sel:@selector(getObjects:range:) method2Sel:@selector(NSArrayAvoidCrashGetObjects:range:)]; |
||||||
|
|
||||||
|
[AvoidCrash exchangeInstanceMethod:__NSSingleObjectArrayI method1Sel:@selector(getObjects:range:) method2Sel:@selector(__NSSingleObjectArrayIAvoidCrashGetObjects:range:)]; |
||||||
|
|
||||||
|
[AvoidCrash exchangeInstanceMethod:__NSArrayI method1Sel:@selector(getObjects:range:) method2Sel:@selector(__NSArrayIAvoidCrashGetObjects:range:)]; |
||||||
|
}); |
||||||
|
|
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
//================================================================= |
||||||
|
// instance array |
||||||
|
//================================================================= |
||||||
|
#pragma mark - instance array |
||||||
|
|
||||||
|
|
||||||
|
+ (instancetype)AvoidCrashArrayWithObjects:(const id _Nonnull __unsafe_unretained *)objects count:(NSUInteger)cnt { |
||||||
|
|
||||||
|
id instance = nil; |
||||||
|
|
||||||
|
@try { |
||||||
|
instance = [self AvoidCrashArrayWithObjects:objects count:cnt]; |
||||||
|
} |
||||||
|
@catch (NSException *exception) { |
||||||
|
|
||||||
|
NSString *defaultToDo = @"AvoidCrash default is to remove nil object and instance a array."; |
||||||
|
[AvoidCrash noteErrorWithException:exception defaultToDo:defaultToDo]; |
||||||
|
|
||||||
|
//以下是对错误数据的处理,把为nil的数据去掉,然后初始化数组 |
||||||
|
NSInteger newObjsIndex = 0; |
||||||
|
id _Nonnull __unsafe_unretained newObjects[cnt]; |
||||||
|
|
||||||
|
for (int i = 0; i < cnt; i++) { |
||||||
|
if (objects[i] != nil) { |
||||||
|
newObjects[newObjsIndex] = objects[i]; |
||||||
|
newObjsIndex++; |
||||||
|
} |
||||||
|
} |
||||||
|
instance = [self AvoidCrashArrayWithObjects:newObjects count:newObjsIndex]; |
||||||
|
} |
||||||
|
@finally { |
||||||
|
return instance; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//================================================================= |
||||||
|
// objectAtIndexedSubscript: |
||||||
|
//================================================================= |
||||||
|
#pragma mark - objectAtIndexedSubscript: |
||||||
|
- (id)__NSArrayIAvoidCrashObjectAtIndexedSubscript:(NSUInteger)idx { |
||||||
|
id object = nil; |
||||||
|
|
||||||
|
@try { |
||||||
|
object = [self __NSArrayIAvoidCrashObjectAtIndexedSubscript:idx]; |
||||||
|
} |
||||||
|
@catch (NSException *exception) { |
||||||
|
NSString *defaultToDo = AvoidCrashDefaultReturnNil; |
||||||
|
[AvoidCrash noteErrorWithException:exception defaultToDo:defaultToDo]; |
||||||
|
} |
||||||
|
@finally { |
||||||
|
return object; |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
//================================================================= |
||||||
|
// objectsAtIndexes: |
||||||
|
//================================================================= |
||||||
|
#pragma mark - objectsAtIndexes: |
||||||
|
|
||||||
|
- (NSArray *)avoidCrashObjectsAtIndexes:(NSIndexSet *)indexes { |
||||||
|
|
||||||
|
NSArray *returnArray = nil; |
||||||
|
@try { |
||||||
|
returnArray = [self avoidCrashObjectsAtIndexes:indexes]; |
||||||
|
} @catch (NSException *exception) { |
||||||
|
NSString *defaultToDo = AvoidCrashDefaultReturnNil; |
||||||
|
[AvoidCrash noteErrorWithException:exception defaultToDo:defaultToDo]; |
||||||
|
|
||||||
|
} @finally { |
||||||
|
return returnArray; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
//================================================================= |
||||||
|
// objectAtIndex: |
||||||
|
//================================================================= |
||||||
|
#pragma mark - objectAtIndex: |
||||||
|
|
||||||
|
//__NSArrayI objectAtIndex: |
||||||
|
- (id)__NSArrayIAvoidCrashObjectAtIndex:(NSUInteger)index { |
||||||
|
id object = nil; |
||||||
|
|
||||||
|
@try { |
||||||
|
object = [self __NSArrayIAvoidCrashObjectAtIndex:index]; |
||||||
|
} |
||||||
|
@catch (NSException *exception) { |
||||||
|
NSString *defaultToDo = AvoidCrashDefaultReturnNil; |
||||||
|
[AvoidCrash noteErrorWithException:exception defaultToDo:defaultToDo]; |
||||||
|
} |
||||||
|
@finally { |
||||||
|
return object; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//__NSSingleObjectArrayI objectAtIndex: |
||||||
|
- (id)__NSSingleObjectArrayIAvoidCrashObjectAtIndex:(NSUInteger)index { |
||||||
|
id object = nil; |
||||||
|
|
||||||
|
@try { |
||||||
|
object = [self __NSSingleObjectArrayIAvoidCrashObjectAtIndex:index]; |
||||||
|
} |
||||||
|
@catch (NSException *exception) { |
||||||
|
NSString *defaultToDo = AvoidCrashDefaultReturnNil; |
||||||
|
[AvoidCrash noteErrorWithException:exception defaultToDo:defaultToDo]; |
||||||
|
} |
||||||
|
@finally { |
||||||
|
return object; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
//__NSArray0 objectAtIndex: |
||||||
|
- (id)__NSArray0AvoidCrashObjectAtIndex:(NSUInteger)index { |
||||||
|
id object = nil; |
||||||
|
|
||||||
|
@try { |
||||||
|
object = [self __NSArray0AvoidCrashObjectAtIndex:index]; |
||||||
|
} |
||||||
|
@catch (NSException *exception) { |
||||||
|
NSString *defaultToDo = AvoidCrashDefaultReturnNil; |
||||||
|
[AvoidCrash noteErrorWithException:exception defaultToDo:defaultToDo]; |
||||||
|
} |
||||||
|
@finally { |
||||||
|
return object; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
//================================================================= |
||||||
|
// getObjects:range: |
||||||
|
//================================================================= |
||||||
|
#pragma mark - getObjects:range: |
||||||
|
|
||||||
|
//NSArray getObjects:range: |
||||||
|
- (void)NSArrayAvoidCrashGetObjects:(__unsafe_unretained id _Nonnull *)objects range:(NSRange)range { |
||||||
|
|
||||||
|
@try { |
||||||
|
[self NSArrayAvoidCrashGetObjects:objects range:range]; |
||||||
|
} @catch (NSException *exception) { |
||||||
|
|
||||||
|
NSString *defaultToDo = AvoidCrashDefaultIgnore; |
||||||
|
[AvoidCrash noteErrorWithException:exception defaultToDo:defaultToDo]; |
||||||
|
|
||||||
|
} @finally { |
||||||
|
|
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
//__NSSingleObjectArrayI getObjects:range: |
||||||
|
- (void)__NSSingleObjectArrayIAvoidCrashGetObjects:(__unsafe_unretained id _Nonnull *)objects range:(NSRange)range { |
||||||
|
|
||||||
|
@try { |
||||||
|
[self __NSSingleObjectArrayIAvoidCrashGetObjects:objects range:range]; |
||||||
|
} @catch (NSException *exception) { |
||||||
|
|
||||||
|
NSString *defaultToDo = AvoidCrashDefaultIgnore; |
||||||
|
[AvoidCrash noteErrorWithException:exception defaultToDo:defaultToDo]; |
||||||
|
|
||||||
|
} @finally { |
||||||
|
|
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
//__NSArrayI getObjects:range: |
||||||
|
- (void)__NSArrayIAvoidCrashGetObjects:(__unsafe_unretained id _Nonnull *)objects range:(NSRange)range { |
||||||
|
|
||||||
|
@try { |
||||||
|
[self __NSArrayIAvoidCrashGetObjects:objects range:range]; |
||||||
|
} @catch (NSException *exception) { |
||||||
|
|
||||||
|
NSString *defaultToDo = AvoidCrashDefaultIgnore; |
||||||
|
[AvoidCrash noteErrorWithException:exception defaultToDo:defaultToDo]; |
||||||
|
|
||||||
|
} @finally { |
||||||
|
|
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@end |
@ -0,0 +1,25 @@ |
|||||||
|
//
|
||||||
|
// NSAttributedString+AvoidCrash.h
|
||||||
|
// https://github.com/chenfanfang/AvoidCrash
|
||||||
|
//
|
||||||
|
// Created by mac on 16/10/15.
|
||||||
|
// Copyright © 2016年 chenfanfang. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import <Foundation/Foundation.h> |
||||||
|
#import "AvoidCrashProtocol.h" |
||||||
|
|
||||||
|
@interface NSAttributedString (AvoidCrash)<AvoidCrashProtocol> |
||||||
|
|
||||||
|
|
||||||
|
@end |
||||||
|
|
||||||
|
/**
|
||||||
|
* Can avoid crash method |
||||||
|
* |
||||||
|
* 1.- (instancetype)initWithString:(NSString *)str |
||||||
|
* 2.- (instancetype)initWithAttributedString:(NSAttributedString *)attrStr |
||||||
|
* 3.- (instancetype)initWithString:(NSString *)str attributes:(NSDictionary<NSString *,id> *)attrs |
||||||
|
* |
||||||
|
* |
||||||
|
*/ |
@ -0,0 +1,96 @@ |
|||||||
|
// |
||||||
|
// NSAttributedString+AvoidCrash.m |
||||||
|
// https://github.com/chenfanfang/AvoidCrash |
||||||
|
// |
||||||
|
// Created by mac on 16/10/15. |
||||||
|
// Copyright © 2016年 chenfanfang. All rights reserved. |
||||||
|
// |
||||||
|
|
||||||
|
#import "NSAttributedString+AvoidCrash.h" |
||||||
|
|
||||||
|
#import "AvoidCrash.h" |
||||||
|
|
||||||
|
@implementation NSAttributedString (AvoidCrash) |
||||||
|
|
||||||
|
+ (void)avoidCrashExchangeMethod { |
||||||
|
|
||||||
|
static dispatch_once_t onceToken; |
||||||
|
dispatch_once(&onceToken, ^{ |
||||||
|
|
||||||
|
Class NSConcreteAttributedString = NSClassFromString(@"NSConcreteAttributedString"); |
||||||
|
|
||||||
|
//initWithString: |
||||||
|
[AvoidCrash exchangeInstanceMethod:NSConcreteAttributedString method1Sel:@selector(initWithString:) method2Sel:@selector(avoidCrashInitWithString:)]; |
||||||
|
|
||||||
|
//initWithAttributedString |
||||||
|
[AvoidCrash exchangeInstanceMethod:NSConcreteAttributedString method1Sel:@selector(initWithAttributedString:) method2Sel:@selector(avoidCrashInitWithAttributedString:)]; |
||||||
|
|
||||||
|
//initWithString:attributes: |
||||||
|
[AvoidCrash exchangeInstanceMethod:NSConcreteAttributedString method1Sel:@selector(initWithString:attributes:) method2Sel:@selector(avoidCrashInitWithString:attributes:)]; |
||||||
|
}); |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
//================================================================= |
||||||
|
// initWithString: |
||||||
|
//================================================================= |
||||||
|
#pragma mark - initWithString: |
||||||
|
|
||||||
|
- (instancetype)avoidCrashInitWithString:(NSString *)str { |
||||||
|
id object = nil; |
||||||
|
|
||||||
|
@try { |
||||||
|
object = [self avoidCrashInitWithString:str]; |
||||||
|
} |
||||||
|
@catch (NSException *exception) { |
||||||
|
NSString *defaultToDo = AvoidCrashDefaultReturnNil; |
||||||
|
[AvoidCrash noteErrorWithException:exception defaultToDo:defaultToDo]; |
||||||
|
} |
||||||
|
@finally { |
||||||
|
return object; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
//================================================================= |
||||||
|
// initWithAttributedString |
||||||
|
//================================================================= |
||||||
|
#pragma mark - initWithAttributedString |
||||||
|
|
||||||
|
- (instancetype)avoidCrashInitWithAttributedString:(NSAttributedString *)attrStr { |
||||||
|
id object = nil; |
||||||
|
|
||||||
|
@try { |
||||||
|
object = [self avoidCrashInitWithAttributedString:attrStr]; |
||||||
|
} |
||||||
|
@catch (NSException *exception) { |
||||||
|
NSString *defaultToDo = AvoidCrashDefaultReturnNil; |
||||||
|
[AvoidCrash noteErrorWithException:exception defaultToDo:defaultToDo]; |
||||||
|
} |
||||||
|
@finally { |
||||||
|
return object; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
//================================================================= |
||||||
|
// initWithString:attributes: |
||||||
|
//================================================================= |
||||||
|
#pragma mark - initWithString:attributes: |
||||||
|
|
||||||
|
- (instancetype)avoidCrashInitWithString:(NSString *)str attributes:(NSDictionary<NSString *,id> *)attrs { |
||||||
|
id object = nil; |
||||||
|
|
||||||
|
@try { |
||||||
|
object = [self avoidCrashInitWithString:str attributes:attrs]; |
||||||
|
} |
||||||
|
@catch (NSException *exception) { |
||||||
|
NSString *defaultToDo = AvoidCrashDefaultReturnNil; |
||||||
|
[AvoidCrash noteErrorWithException:exception defaultToDo:defaultToDo]; |
||||||
|
} |
||||||
|
@finally { |
||||||
|
return object; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@end |
@ -0,0 +1,24 @@ |
|||||||
|
//
|
||||||
|
// NSDictionary+AvoidCrash.h
|
||||||
|
// https://github.com/chenfanfang/AvoidCrash
|
||||||
|
//
|
||||||
|
// Created by mac on 16/9/21.
|
||||||
|
// Copyright © 2016年 chenfanfang. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import <Foundation/Foundation.h> |
||||||
|
#import "AvoidCrashProtocol.h" |
||||||
|
|
||||||
|
@interface NSDictionary (AvoidCrash)<AvoidCrashProtocol> |
||||||
|
|
||||||
|
|
||||||
|
@end |
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Can avoid crash method |
||||||
|
* |
||||||
|
* 1. NSDictionary的快速创建方式 NSDictionary *dict = @{@"frameWork" : @"AvoidCrash"}; //这种创建方式其实调用的是2中的方法
|
||||||
|
* 2. +(instancetype)dictionaryWithObjects:(const id _Nonnull __unsafe_unretained *)objects forKeys:(const id<NSCopying> _Nonnull __unsafe_unretained *)keys count:(NSUInteger)cnt |
||||||
|
* |
||||||
|
*/ |
@ -0,0 +1,56 @@ |
|||||||
|
// |
||||||
|
// NSDictionary+AvoidCrash.m |
||||||
|
// https://github.com/chenfanfang/AvoidCrash |
||||||
|
// |
||||||
|
// Created by mac on 16/9/21. |
||||||
|
// Copyright © 2016年 chenfanfang. All rights reserved. |
||||||
|
// |
||||||
|
|
||||||
|
#import "NSDictionary+AvoidCrash.h" |
||||||
|
|
||||||
|
#import "AvoidCrash.h" |
||||||
|
|
||||||
|
@implementation NSDictionary (AvoidCrash) |
||||||
|
|
||||||
|
+ (void)avoidCrashExchangeMethod { |
||||||
|
|
||||||
|
static dispatch_once_t onceToken; |
||||||
|
dispatch_once(&onceToken, ^{ |
||||||
|
|
||||||
|
[AvoidCrash exchangeClassMethod:self method1Sel:@selector(dictionaryWithObjects:forKeys:count:) method2Sel:@selector(avoidCrashDictionaryWithObjects:forKeys:count:)]; |
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
+ (instancetype)avoidCrashDictionaryWithObjects:(const id _Nonnull __unsafe_unretained *)objects forKeys:(const id<NSCopying> _Nonnull __unsafe_unretained *)keys count:(NSUInteger)cnt { |
||||||
|
|
||||||
|
id instance = nil; |
||||||
|
|
||||||
|
@try { |
||||||
|
instance = [self avoidCrashDictionaryWithObjects:objects forKeys:keys count:cnt]; |
||||||
|
} |
||||||
|
@catch (NSException *exception) { |
||||||
|
|
||||||
|
NSString *defaultToDo = @"AvoidCrash default is to remove nil key-values and instance a dictionary."; |
||||||
|
[AvoidCrash noteErrorWithException:exception defaultToDo:defaultToDo]; |
||||||
|
|
||||||
|
//处理错误的数据,然后重新初始化一个字典 |
||||||
|
NSUInteger index = 0; |
||||||
|
id _Nonnull __unsafe_unretained newObjects[cnt]; |
||||||
|
id _Nonnull __unsafe_unretained newkeys[cnt]; |
||||||
|
|
||||||
|
for (int i = 0; i < cnt; i++) { |
||||||
|
if (objects[i] && keys[i]) { |
||||||
|
newObjects[index] = objects[i]; |
||||||
|
newkeys[index] = keys[i]; |
||||||
|
index++; |
||||||
|
} |
||||||
|
} |
||||||
|
instance = [self avoidCrashDictionaryWithObjects:newObjects forKeys:newkeys count:index]; |
||||||
|
} |
||||||
|
@finally { |
||||||
|
return instance; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@end |
@ -0,0 +1,26 @@ |
|||||||
|
//
|
||||||
|
// NSMutableArray+AvoidCrash.h
|
||||||
|
// https://github.com/chenfanfang/AvoidCrash
|
||||||
|
//
|
||||||
|
// Created by mac on 16/9/21.
|
||||||
|
// Copyright © 2016年 chenfanfang. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import <Foundation/Foundation.h> |
||||||
|
#import "AvoidCrashProtocol.h" |
||||||
|
|
||||||
|
@interface NSMutableArray (AvoidCrash)<AvoidCrashProtocol> |
||||||
|
|
||||||
|
|
||||||
|
@end |
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Can avoid crash method |
||||||
|
* |
||||||
|
* 1. - (id)objectAtIndex:(NSUInteger)index |
||||||
|
* 2. - (void)setObject:(id)obj atIndexedSubscript:(NSUInteger)idx |
||||||
|
* 3. - (void)removeObjectAtIndex:(NSUInteger)index |
||||||
|
* 4. - (void)insertObject:(id)anObject atIndex:(NSUInteger)index |
||||||
|
* 5. - (void)getObjects:(__unsafe_unretained id _Nonnull *)objects range:(NSRange)range |
||||||
|
*/ |
@ -0,0 +1,169 @@ |
|||||||
|
// |
||||||
|
// NSMutableArray+AvoidCrash.m |
||||||
|
// https://github.com/chenfanfang/AvoidCrash |
||||||
|
// |
||||||
|
// Created by mac on 16/9/21. |
||||||
|
// Copyright © 2016年 chenfanfang. All rights reserved. |
||||||
|
// |
||||||
|
|
||||||
|
#import "NSMutableArray+AvoidCrash.h" |
||||||
|
|
||||||
|
#import "AvoidCrash.h" |
||||||
|
|
||||||
|
@implementation NSMutableArray (AvoidCrash) |
||||||
|
|
||||||
|
+ (void)avoidCrashExchangeMethod { |
||||||
|
|
||||||
|
static dispatch_once_t onceToken; |
||||||
|
dispatch_once(&onceToken, ^{ |
||||||
|
|
||||||
|
Class arrayMClass = NSClassFromString(@"__NSArrayM"); |
||||||
|
|
||||||
|
|
||||||
|
//objectAtIndex: |
||||||
|
[AvoidCrash exchangeInstanceMethod:arrayMClass method1Sel:@selector(objectAtIndex:) method2Sel:@selector(avoidCrashObjectAtIndex:)]; |
||||||
|
|
||||||
|
//objectAtIndexedSubscript |
||||||
|
if (AvoidCrashIsiOS(11.0)) { |
||||||
|
[AvoidCrash exchangeInstanceMethod:arrayMClass method1Sel:@selector(objectAtIndexedSubscript:) method2Sel:@selector(avoidCrashObjectAtIndexedSubscript:)]; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
//setObject:atIndexedSubscript: |
||||||
|
[AvoidCrash exchangeInstanceMethod:arrayMClass method1Sel:@selector(setObject:atIndexedSubscript:) method2Sel:@selector(avoidCrashSetObject:atIndexedSubscript:)]; |
||||||
|
|
||||||
|
|
||||||
|
//removeObjectAtIndex: |
||||||
|
[AvoidCrash exchangeInstanceMethod:arrayMClass method1Sel:@selector(removeObjectAtIndex:) method2Sel:@selector(avoidCrashRemoveObjectAtIndex:)]; |
||||||
|
|
||||||
|
//insertObject:atIndex: |
||||||
|
[AvoidCrash exchangeInstanceMethod:arrayMClass method1Sel:@selector(insertObject:atIndex:) method2Sel:@selector(avoidCrashInsertObject:atIndex:)]; |
||||||
|
|
||||||
|
//getObjects:range: |
||||||
|
[AvoidCrash exchangeInstanceMethod:arrayMClass method1Sel:@selector(getObjects:range:) method2Sel:@selector(avoidCrashGetObjects:range:)]; |
||||||
|
}); |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
//================================================================= |
||||||
|
// array set object at index |
||||||
|
//================================================================= |
||||||
|
#pragma mark - get object from array |
||||||
|
|
||||||
|
|
||||||
|
- (void)avoidCrashSetObject:(id)obj atIndexedSubscript:(NSUInteger)idx { |
||||||
|
|
||||||
|
@try { |
||||||
|
[self avoidCrashSetObject:obj atIndexedSubscript:idx]; |
||||||
|
} |
||||||
|
@catch (NSException *exception) { |
||||||
|
[AvoidCrash noteErrorWithException:exception defaultToDo:AvoidCrashDefaultIgnore]; |
||||||
|
} |
||||||
|
@finally { |
||||||
|
|
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
//================================================================= |
||||||
|
// removeObjectAtIndex: |
||||||
|
//================================================================= |
||||||
|
#pragma mark - removeObjectAtIndex: |
||||||
|
|
||||||
|
- (void)avoidCrashRemoveObjectAtIndex:(NSUInteger)index { |
||||||
|
@try { |
||||||
|
[self avoidCrashRemoveObjectAtIndex:index]; |
||||||
|
} |
||||||
|
@catch (NSException *exception) { |
||||||
|
[AvoidCrash noteErrorWithException:exception defaultToDo:AvoidCrashDefaultIgnore]; |
||||||
|
} |
||||||
|
@finally { |
||||||
|
|
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
//================================================================= |
||||||
|
// insertObject:atIndex: |
||||||
|
//================================================================= |
||||||
|
#pragma mark - set方法 |
||||||
|
- (void)avoidCrashInsertObject:(id)anObject atIndex:(NSUInteger)index { |
||||||
|
@try { |
||||||
|
[self avoidCrashInsertObject:anObject atIndex:index]; |
||||||
|
} |
||||||
|
@catch (NSException *exception) { |
||||||
|
[AvoidCrash noteErrorWithException:exception defaultToDo:AvoidCrashDefaultIgnore]; |
||||||
|
} |
||||||
|
@finally { |
||||||
|
|
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
//================================================================= |
||||||
|
// objectAtIndex: |
||||||
|
//================================================================= |
||||||
|
#pragma mark - objectAtIndex: |
||||||
|
|
||||||
|
- (id)avoidCrashObjectAtIndex:(NSUInteger)index { |
||||||
|
id object = nil; |
||||||
|
|
||||||
|
@try { |
||||||
|
object = [self avoidCrashObjectAtIndex:index]; |
||||||
|
} |
||||||
|
@catch (NSException *exception) { |
||||||
|
NSString *defaultToDo = AvoidCrashDefaultReturnNil; |
||||||
|
[AvoidCrash noteErrorWithException:exception defaultToDo:defaultToDo]; |
||||||
|
} |
||||||
|
@finally { |
||||||
|
return object; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
//================================================================= |
||||||
|
// objectAtIndexedSubscript: |
||||||
|
//================================================================= |
||||||
|
#pragma mark - objectAtIndexedSubscript: |
||||||
|
- (id)avoidCrashObjectAtIndexedSubscript:(NSUInteger)idx { |
||||||
|
id object = nil; |
||||||
|
|
||||||
|
@try { |
||||||
|
object = [self avoidCrashObjectAtIndexedSubscript:idx]; |
||||||
|
} |
||||||
|
@catch (NSException *exception) { |
||||||
|
NSString *defaultToDo = AvoidCrashDefaultReturnNil; |
||||||
|
[AvoidCrash noteErrorWithException:exception defaultToDo:defaultToDo]; |
||||||
|
} |
||||||
|
@finally { |
||||||
|
return object; |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
//================================================================= |
||||||
|
// getObjects:range: |
||||||
|
//================================================================= |
||||||
|
#pragma mark - getObjects:range: |
||||||
|
|
||||||
|
- (void)avoidCrashGetObjects:(__unsafe_unretained id _Nonnull *)objects range:(NSRange)range { |
||||||
|
|
||||||
|
@try { |
||||||
|
[self avoidCrashGetObjects:objects range:range]; |
||||||
|
} @catch (NSException *exception) { |
||||||
|
|
||||||
|
NSString *defaultToDo = AvoidCrashDefaultIgnore; |
||||||
|
[AvoidCrash noteErrorWithException:exception defaultToDo:defaultToDo]; |
||||||
|
|
||||||
|
} @finally { |
||||||
|
|
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@end |
@ -0,0 +1,23 @@ |
|||||||
|
//
|
||||||
|
// NSMutableAttributedString+AvoidCrash.h
|
||||||
|
// https://github.com/chenfanfang/AvoidCrash
|
||||||
|
//
|
||||||
|
// Created by mac on 16/10/15.
|
||||||
|
// Copyright © 2016年 chenfanfang. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import <Foundation/Foundation.h> |
||||||
|
#import "AvoidCrashProtocol.h" |
||||||
|
|
||||||
|
@interface NSMutableAttributedString (AvoidCrash)<AvoidCrashProtocol> |
||||||
|
|
||||||
|
|
||||||
|
@end |
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Can avoid crash method |
||||||
|
* |
||||||
|
* 1.- (instancetype)initWithString:(NSString *)str |
||||||
|
* 2.- (instancetype)initWithString:(NSString *)str attributes:(NSDictionary<NSString *,id> *)attrs |
||||||
|
*/ |
@ -0,0 +1,74 @@ |
|||||||
|
// |
||||||
|
// NSMutableAttributedString+AvoidCrash.m |
||||||
|
// https://github.com/chenfanfang/AvoidCrash |
||||||
|
// |
||||||
|
// Created by mac on 16/10/15. |
||||||
|
// Copyright © 2016年 chenfanfang. All rights reserved. |
||||||
|
// |
||||||
|
|
||||||
|
#import "NSMutableAttributedString+AvoidCrash.h" |
||||||
|
|
||||||
|
#import "AvoidCrash.h" |
||||||
|
|
||||||
|
@implementation NSMutableAttributedString (AvoidCrash) |
||||||
|
|
||||||
|
+ (void)avoidCrashExchangeMethod { |
||||||
|
|
||||||
|
static dispatch_once_t onceToken; |
||||||
|
dispatch_once(&onceToken, ^{ |
||||||
|
|
||||||
|
Class NSConcreteMutableAttributedString = NSClassFromString(@"NSConcreteMutableAttributedString"); |
||||||
|
|
||||||
|
//initWithString: |
||||||
|
[AvoidCrash exchangeInstanceMethod:NSConcreteMutableAttributedString method1Sel:@selector(initWithString:) method2Sel:@selector(avoidCrashInitWithString:)]; |
||||||
|
|
||||||
|
//initWithString:attributes: |
||||||
|
[AvoidCrash exchangeInstanceMethod:NSConcreteMutableAttributedString method1Sel:@selector(initWithString:attributes:) method2Sel:@selector(avoidCrashInitWithString:attributes:)]; |
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
|
//================================================================= |
||||||
|
// initWithString: |
||||||
|
//================================================================= |
||||||
|
#pragma mark - initWithString: |
||||||
|
|
||||||
|
|
||||||
|
- (instancetype)avoidCrashInitWithString:(NSString *)str { |
||||||
|
id object = nil; |
||||||
|
|
||||||
|
@try { |
||||||
|
object = [self avoidCrashInitWithString:str]; |
||||||
|
} |
||||||
|
@catch (NSException *exception) { |
||||||
|
NSString *defaultToDo = AvoidCrashDefaultReturnNil; |
||||||
|
[AvoidCrash noteErrorWithException:exception defaultToDo:defaultToDo]; |
||||||
|
} |
||||||
|
@finally { |
||||||
|
return object; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
//================================================================= |
||||||
|
// initWithString:attributes: |
||||||
|
//================================================================= |
||||||
|
#pragma mark - initWithString:attributes: |
||||||
|
|
||||||
|
|
||||||
|
- (instancetype)avoidCrashInitWithString:(NSString *)str attributes:(NSDictionary<NSString *,id> *)attrs { |
||||||
|
id object = nil; |
||||||
|
|
||||||
|
@try { |
||||||
|
object = [self avoidCrashInitWithString:str attributes:attrs]; |
||||||
|
} |
||||||
|
@catch (NSException *exception) { |
||||||
|
NSString *defaultToDo = AvoidCrashDefaultReturnNil; |
||||||
|
[AvoidCrash noteErrorWithException:exception defaultToDo:defaultToDo]; |
||||||
|
} |
||||||
|
@finally { |
||||||
|
return object; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
@end |
@ -0,0 +1,24 @@ |
|||||||
|
//
|
||||||
|
// NSMutableDictionary+AvoidCrash.h
|
||||||
|
// https://github.com/chenfanfang/AvoidCrash
|
||||||
|
//
|
||||||
|
// Created by mac on 16/9/22.
|
||||||
|
// Copyright © 2016年 chenfanfang. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import <Foundation/Foundation.h> |
||||||
|
#import "AvoidCrashProtocol.h" |
||||||
|
|
||||||
|
@interface NSMutableDictionary (AvoidCrash)<AvoidCrashProtocol> |
||||||
|
|
||||||
|
|
||||||
|
@end |
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Can avoid crash method |
||||||
|
* |
||||||
|
* 1. - (void)setObject:(id)anObject forKey:(id<NSCopying>)aKey |
||||||
|
* 2. - (void)removeObjectForKey:(id)aKey |
||||||
|
* |
||||||
|
*/ |
@ -0,0 +1,95 @@ |
|||||||
|
// |
||||||
|
// NSMutableDictionary+AvoidCrash.m |
||||||
|
// https://github.com/chenfanfang/AvoidCrash |
||||||
|
// |
||||||
|
// Created by mac on 16/9/22. |
||||||
|
// Copyright © 2016年 chenfanfang. All rights reserved. |
||||||
|
// |
||||||
|
|
||||||
|
#import "NSMutableDictionary+AvoidCrash.h" |
||||||
|
|
||||||
|
#import "AvoidCrash.h" |
||||||
|
|
||||||
|
@implementation NSMutableDictionary (AvoidCrash) |
||||||
|
|
||||||
|
+ (void)avoidCrashExchangeMethod { |
||||||
|
|
||||||
|
static dispatch_once_t onceToken; |
||||||
|
dispatch_once(&onceToken, ^{ |
||||||
|
Class dictionaryM = NSClassFromString(@"__NSDictionaryM"); |
||||||
|
|
||||||
|
//setObject:forKey: |
||||||
|
[AvoidCrash exchangeInstanceMethod:dictionaryM method1Sel:@selector(setObject:forKey:) method2Sel:@selector(avoidCrashSetObject:forKey:)]; |
||||||
|
|
||||||
|
//setObject:forKeyedSubscript: |
||||||
|
if (AvoidCrashIsiOS(11.0)) { |
||||||
|
[AvoidCrash exchangeInstanceMethod:dictionaryM method1Sel:@selector(setObject:forKeyedSubscript:) method2Sel:@selector(avoidCrashSetObject:forKeyedSubscript:)]; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//removeObjectForKey: |
||||||
|
Method removeObjectForKey = class_getInstanceMethod(dictionaryM, @selector(removeObjectForKey:)); |
||||||
|
Method avoidCrashRemoveObjectForKey = class_getInstanceMethod(dictionaryM, @selector(avoidCrashRemoveObjectForKey:)); |
||||||
|
method_exchangeImplementations(removeObjectForKey, avoidCrashRemoveObjectForKey); |
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
//================================================================= |
||||||
|
// setObject:forKey: |
||||||
|
//================================================================= |
||||||
|
#pragma mark - setObject:forKey: |
||||||
|
|
||||||
|
- (void)avoidCrashSetObject:(id)anObject forKey:(id<NSCopying>)aKey { |
||||||
|
|
||||||
|
@try { |
||||||
|
[self avoidCrashSetObject:anObject forKey:aKey]; |
||||||
|
} |
||||||
|
@catch (NSException *exception) { |
||||||
|
[AvoidCrash noteErrorWithException:exception defaultToDo:AvoidCrashDefaultIgnore]; |
||||||
|
} |
||||||
|
@finally { |
||||||
|
|
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
//================================================================= |
||||||
|
// setObject:forKeyedSubscript: |
||||||
|
//================================================================= |
||||||
|
#pragma mark - setObject:forKeyedSubscript: |
||||||
|
- (void)avoidCrashSetObject:(id)obj forKeyedSubscript:(id<NSCopying>)key { |
||||||
|
@try { |
||||||
|
[self avoidCrashSetObject:obj forKeyedSubscript:key]; |
||||||
|
} |
||||||
|
@catch (NSException *exception) { |
||||||
|
[AvoidCrash noteErrorWithException:exception defaultToDo:AvoidCrashDefaultIgnore]; |
||||||
|
} |
||||||
|
@finally { |
||||||
|
|
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
//================================================================= |
||||||
|
// removeObjectForKey: |
||||||
|
//================================================================= |
||||||
|
#pragma mark - removeObjectForKey: |
||||||
|
|
||||||
|
- (void)avoidCrashRemoveObjectForKey:(id)aKey { |
||||||
|
|
||||||
|
@try { |
||||||
|
[self avoidCrashRemoveObjectForKey:aKey]; |
||||||
|
} |
||||||
|
@catch (NSException *exception) { |
||||||
|
[AvoidCrash noteErrorWithException:exception defaultToDo:AvoidCrashDefaultIgnore]; |
||||||
|
} |
||||||
|
@finally { |
||||||
|
|
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@end |
@ -0,0 +1,29 @@ |
|||||||
|
//
|
||||||
|
// NSMutableString+AvoidCrash.h
|
||||||
|
// https://github.com/chenfanfang/AvoidCrash
|
||||||
|
//
|
||||||
|
// Created by mac on 16/10/6.
|
||||||
|
// Copyright © 2016年 chenfanfang. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import <Foundation/Foundation.h> |
||||||
|
#import "AvoidCrashProtocol.h" |
||||||
|
|
||||||
|
@interface NSMutableString (AvoidCrash)<AvoidCrashProtocol> |
||||||
|
|
||||||
|
|
||||||
|
@end |
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Can avoid crash method |
||||||
|
* |
||||||
|
* 1. 由于NSMutableString是继承于NSString,所以这里和NSString有些同样的方法就不重复写了 |
||||||
|
* 2. - (void)replaceCharactersInRange:(NSRange)range withString:(NSString *)aString |
||||||
|
* 3. - (void)insertString:(NSString *)aString atIndex:(NSUInteger)loc |
||||||
|
* 4. - (void)deleteCharactersInRange:(NSRange)range |
||||||
|
* |
||||||
|
*/ |
||||||
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,97 @@ |
|||||||
|
// |
||||||
|
// NSMutableString+AvoidCrash.m |
||||||
|
// https://github.com/chenfanfang/AvoidCrash |
||||||
|
// |
||||||
|
// Created by mac on 16/10/6. |
||||||
|
// Copyright © 2016年 chenfanfang. All rights reserved. |
||||||
|
// |
||||||
|
|
||||||
|
#import "NSMutableString+AvoidCrash.h" |
||||||
|
|
||||||
|
#import "AvoidCrash.h" |
||||||
|
|
||||||
|
@implementation NSMutableString (AvoidCrash) |
||||||
|
|
||||||
|
+ (void)avoidCrashExchangeMethod { |
||||||
|
|
||||||
|
static dispatch_once_t onceToken; |
||||||
|
dispatch_once(&onceToken, ^{ |
||||||
|
|
||||||
|
Class stringClass = NSClassFromString(@"__NSCFString"); |
||||||
|
|
||||||
|
//replaceCharactersInRange |
||||||
|
[AvoidCrash exchangeInstanceMethod:stringClass method1Sel:@selector(replaceCharactersInRange:withString:) method2Sel:@selector(avoidCrashReplaceCharactersInRange:withString:)]; |
||||||
|
|
||||||
|
//insertString:atIndex: |
||||||
|
[AvoidCrash exchangeInstanceMethod:stringClass method1Sel:@selector(insertString:atIndex:) method2Sel:@selector(avoidCrashInsertString:atIndex:)]; |
||||||
|
|
||||||
|
//deleteCharactersInRange |
||||||
|
[AvoidCrash exchangeInstanceMethod:stringClass method1Sel:@selector(deleteCharactersInRange:) method2Sel:@selector(avoidCrashDeleteCharactersInRange:)]; |
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
|
//================================================================= |
||||||
|
// replaceCharactersInRange |
||||||
|
//================================================================= |
||||||
|
#pragma mark - replaceCharactersInRange |
||||||
|
|
||||||
|
- (void)avoidCrashReplaceCharactersInRange:(NSRange)range withString:(NSString *)aString { |
||||||
|
|
||||||
|
@try { |
||||||
|
[self avoidCrashReplaceCharactersInRange:range withString:aString]; |
||||||
|
} |
||||||
|
@catch (NSException *exception) { |
||||||
|
NSString *defaultToDo = AvoidCrashDefaultIgnore; |
||||||
|
[AvoidCrash noteErrorWithException:exception defaultToDo:defaultToDo]; |
||||||
|
} |
||||||
|
@finally { |
||||||
|
|
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
//================================================================= |
||||||
|
// insertString:atIndex: |
||||||
|
//================================================================= |
||||||
|
#pragma mark - insertString:atIndex: |
||||||
|
|
||||||
|
- (void)avoidCrashInsertString:(NSString *)aString atIndex:(NSUInteger)loc { |
||||||
|
|
||||||
|
@try { |
||||||
|
[self avoidCrashInsertString:aString atIndex:loc]; |
||||||
|
} |
||||||
|
@catch (NSException *exception) { |
||||||
|
NSString *defaultToDo = AvoidCrashDefaultIgnore; |
||||||
|
[AvoidCrash noteErrorWithException:exception defaultToDo:defaultToDo]; |
||||||
|
} |
||||||
|
@finally { |
||||||
|
|
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
//================================================================= |
||||||
|
// deleteCharactersInRange |
||||||
|
//================================================================= |
||||||
|
#pragma mark - deleteCharactersInRange |
||||||
|
|
||||||
|
- (void)avoidCrashDeleteCharactersInRange:(NSRange)range { |
||||||
|
|
||||||
|
@try { |
||||||
|
[self avoidCrashDeleteCharactersInRange:range]; |
||||||
|
} |
||||||
|
@catch (NSException *exception) { |
||||||
|
NSString *defaultToDo = AvoidCrashDefaultIgnore; |
||||||
|
[AvoidCrash noteErrorWithException:exception defaultToDo:defaultToDo]; |
||||||
|
} |
||||||
|
@finally { |
||||||
|
|
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@end |
@ -0,0 +1,34 @@ |
|||||||
|
//
|
||||||
|
// NSObject+AvoidCrash.h
|
||||||
|
// https://github.com/chenfanfang/AvoidCrash
|
||||||
|
//
|
||||||
|
// Created by mac on 16/10/11.
|
||||||
|
// Copyright © 2016年 chenfanfang. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import <Foundation/Foundation.h> |
||||||
|
|
||||||
|
|
||||||
|
@interface NSObject (AvoidCrash) |
||||||
|
|
||||||
|
/**
|
||||||
|
* ifDealWithNoneSel : 是否开启"unrecognized selector sent to instance"异常的捕获 |
||||||
|
*/ |
||||||
|
+ (void)avoidCrashExchangeMethodIfDealWithNoneSel:(BOOL)ifDealWithNoneSel; |
||||||
|
|
||||||
|
|
||||||
|
+ (void)setupNoneSelClassStringsArr:(NSArray<NSString *> *)classStrings; |
||||||
|
|
||||||
|
+ (void)setupNoneSelClassStringPrefixsArr:(NSArray<NSString *> *)classStringPrefixs; |
||||||
|
|
||||||
|
@end |
||||||
|
|
||||||
|
/**
|
||||||
|
* Can avoid crash method |
||||||
|
* |
||||||
|
* 1.- (void)setValue:(id)value forKey:(NSString *)key |
||||||
|
* 2.- (void)setValue:(id)value forKeyPath:(NSString *)keyPath |
||||||
|
* 3.- (void)setValue:(id)value forUndefinedKey:(NSString *)key //这个方法一般用来重写,不会主动调用
|
||||||
|
* 4.- (void)setValuesForKeysWithDictionary:(NSDictionary<NSString *,id> *)keyedValues |
||||||
|
* 5. unrecognized selector sent to instance |
||||||
|
*/ |
@ -0,0 +1,221 @@ |
|||||||
|
// |
||||||
|
// NSObject+AvoidCrash.m |
||||||
|
// https://github.com/chenfanfang/AvoidCrash |
||||||
|
// |
||||||
|
// Created by mac on 16/10/11. |
||||||
|
// Copyright © 2016年 chenfanfang. All rights reserved. |
||||||
|
// |
||||||
|
|
||||||
|
#import "NSObject+AvoidCrash.h" |
||||||
|
#import "AvoidCrash.h" |
||||||
|
#import "AvoidCrashStubProxy.h" |
||||||
|
|
||||||
|
@implementation NSObject (AvoidCrash) |
||||||
|
|
||||||
|
|
||||||
|
+ (void)avoidCrashExchangeMethodIfDealWithNoneSel:(BOOL)ifDealWithNoneSel { |
||||||
|
|
||||||
|
static dispatch_once_t onceToken; |
||||||
|
dispatch_once(&onceToken, ^{ |
||||||
|
//setValue:forKey: |
||||||
|
[AvoidCrash exchangeInstanceMethod:[self class] method1Sel:@selector(setValue:forKey:) method2Sel:@selector(avoidCrashSetValue:forKey:)]; |
||||||
|
|
||||||
|
//setValue:forKeyPath: |
||||||
|
[AvoidCrash exchangeInstanceMethod:[self class] method1Sel:@selector(setValue:forKeyPath:) method2Sel:@selector(avoidCrashSetValue:forKeyPath:)]; |
||||||
|
|
||||||
|
//setValue:forUndefinedKey: |
||||||
|
[AvoidCrash exchangeInstanceMethod:[self class] method1Sel:@selector(setValue:forUndefinedKey:) method2Sel:@selector(avoidCrashSetValue:forUndefinedKey:)]; |
||||||
|
|
||||||
|
//setValuesForKeysWithDictionary: |
||||||
|
[AvoidCrash exchangeInstanceMethod:[self class] method1Sel:@selector(setValuesForKeysWithDictionary:) method2Sel:@selector(avoidCrashSetValuesForKeysWithDictionary:)]; |
||||||
|
|
||||||
|
|
||||||
|
//unrecognized selector sent to instance |
||||||
|
if (ifDealWithNoneSel) { |
||||||
|
[AvoidCrash exchangeInstanceMethod:[self class] method1Sel:@selector(methodSignatureForSelector:) method2Sel:@selector(avoidCrashMethodSignatureForSelector:)]; |
||||||
|
[AvoidCrash exchangeInstanceMethod:[self class] method1Sel:@selector(forwardInvocation:) method2Sel:@selector(avoidCrashForwardInvocation:)]; |
||||||
|
} |
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
//================================================================= |
||||||
|
// unrecognized selector sent to instance |
||||||
|
//================================================================= |
||||||
|
#pragma mark - unrecognized selector sent to instance |
||||||
|
|
||||||
|
|
||||||
|
static NSMutableArray *noneSelClassStrings; |
||||||
|
static NSMutableArray *noneSelClassStringPrefixs; |
||||||
|
|
||||||
|
+ (void)setupNoneSelClassStringsArr:(NSArray<NSString *> *)classStrings { |
||||||
|
|
||||||
|
if (noneSelClassStrings) { |
||||||
|
|
||||||
|
NSString *warningMsg = [NSString stringWithFormat:@"\n\n%@\n\n[AvoidCrash setupNoneSelClassStringsArr:];\n调用一此即可,多次调用会自动忽略后面的调用\n\n%@\n\n",AvoidCrashSeparatorWithFlag,AvoidCrashSeparator]; |
||||||
|
AvoidCrashLog(@"%@",warningMsg); |
||||||
|
} |
||||||
|
|
||||||
|
static dispatch_once_t onceToken; |
||||||
|
dispatch_once(&onceToken, ^{ |
||||||
|
noneSelClassStrings = [NSMutableArray array]; |
||||||
|
for (NSString *className in classStrings) { |
||||||
|
if ([className hasPrefix:@"UI"] == NO && |
||||||
|
[className isEqualToString:NSStringFromClass([NSObject class])] == NO) { |
||||||
|
[noneSelClassStrings addObject:className]; |
||||||
|
|
||||||
|
} else { |
||||||
|
NSString *warningMsg = [NSString stringWithFormat:@"\n\n%@\n\n[AvoidCrash setupNoneSelClassStringsArr:];\n会忽略UI开头的类和NSObject类(请使用NSObject的子类)\n\n%@\n\n",AvoidCrashSeparatorWithFlag,AvoidCrashSeparator]; |
||||||
|
AvoidCrashLog(@"%@",warningMsg); |
||||||
|
} |
||||||
|
} |
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 初始化一个需要防止”unrecognized selector sent to instance”的崩溃的类名前缀的数组 |
||||||
|
*/ |
||||||
|
+ (void)setupNoneSelClassStringPrefixsArr:(NSArray<NSString *> *)classStringPrefixs { |
||||||
|
if (noneSelClassStringPrefixs) { |
||||||
|
|
||||||
|
NSString *warningMsg = [NSString stringWithFormat:@"\n\n%@\n\n[AvoidCrash setupNoneSelClassStringPrefixsArr:];\n调用一此即可,多次调用会自动忽略后面的调用\n\n%@\n\n",AvoidCrashSeparatorWithFlag,AvoidCrashSeparator]; |
||||||
|
AvoidCrashLog(@"%@",warningMsg); |
||||||
|
} |
||||||
|
|
||||||
|
static dispatch_once_t onceToken; |
||||||
|
dispatch_once(&onceToken, ^{ |
||||||
|
|
||||||
|
noneSelClassStringPrefixs = [NSMutableArray array]; |
||||||
|
for (NSString *classNamePrefix in classStringPrefixs) { |
||||||
|
if ([classNamePrefix hasPrefix:@"UI"] == NO && |
||||||
|
[classNamePrefix hasPrefix:@"NS"] == NO) { |
||||||
|
[noneSelClassStringPrefixs addObject:classNamePrefix]; |
||||||
|
|
||||||
|
} else { |
||||||
|
NSString *warningMsg = [NSString stringWithFormat:@"\n\n%@\n\n[AvoidCrash setupNoneSelClassStringsArr:];\n会忽略UI开头的类和NS开头的类\n若需要对NS开头的类防止”unrecognized selector sent to instance”(比如NSArray),请使用setupNoneSelClassStringsArr:\n\n%@\n\n",AvoidCrashSeparatorWithFlag,AvoidCrashSeparator]; |
||||||
|
AvoidCrashLog(@"%@",warningMsg); |
||||||
|
} |
||||||
|
} |
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
|
- (NSMethodSignature *)avoidCrashMethodSignatureForSelector:(SEL)aSelector { |
||||||
|
|
||||||
|
NSMethodSignature *ms = [self avoidCrashMethodSignatureForSelector:aSelector]; |
||||||
|
|
||||||
|
BOOL flag = NO; |
||||||
|
if (ms == nil) { |
||||||
|
for (NSString *classStr in noneSelClassStrings) { |
||||||
|
if ([self isKindOfClass:NSClassFromString(classStr)]) { |
||||||
|
ms = [AvoidCrashStubProxy instanceMethodSignatureForSelector:@selector(proxyMethod)]; |
||||||
|
flag = YES; |
||||||
|
break; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
if (flag == NO) { |
||||||
|
NSString *selfClass = NSStringFromClass([self class]); |
||||||
|
for (NSString *classStrPrefix in noneSelClassStringPrefixs) { |
||||||
|
if ([selfClass hasPrefix:classStrPrefix]) { |
||||||
|
ms = [AvoidCrashStubProxy instanceMethodSignatureForSelector:@selector(proxyMethod)]; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
return ms; |
||||||
|
} |
||||||
|
|
||||||
|
- (void)avoidCrashForwardInvocation:(NSInvocation *)anInvocation { |
||||||
|
|
||||||
|
@try { |
||||||
|
[self avoidCrashForwardInvocation:anInvocation]; |
||||||
|
|
||||||
|
} @catch (NSException *exception) { |
||||||
|
NSString *defaultToDo = AvoidCrashDefaultIgnore; |
||||||
|
[AvoidCrash noteErrorWithException:exception defaultToDo:defaultToDo]; |
||||||
|
|
||||||
|
} @finally { |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
//================================================================= |
||||||
|
// setValue:forKey: |
||||||
|
//================================================================= |
||||||
|
#pragma mark - setValue:forKey: |
||||||
|
|
||||||
|
- (void)avoidCrashSetValue:(id)value forKey:(NSString *)key { |
||||||
|
@try { |
||||||
|
[self avoidCrashSetValue:value forKey:key]; |
||||||
|
} |
||||||
|
@catch (NSException *exception) { |
||||||
|
NSString *defaultToDo = AvoidCrashDefaultIgnore; |
||||||
|
[AvoidCrash noteErrorWithException:exception defaultToDo:defaultToDo]; |
||||||
|
} |
||||||
|
@finally { |
||||||
|
|
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
//================================================================= |
||||||
|
// setValue:forKeyPath: |
||||||
|
//================================================================= |
||||||
|
#pragma mark - setValue:forKeyPath: |
||||||
|
|
||||||
|
- (void)avoidCrashSetValue:(id)value forKeyPath:(NSString *)keyPath { |
||||||
|
@try { |
||||||
|
[self avoidCrashSetValue:value forKeyPath:keyPath]; |
||||||
|
} |
||||||
|
@catch (NSException *exception) { |
||||||
|
NSString *defaultToDo = AvoidCrashDefaultIgnore; |
||||||
|
[AvoidCrash noteErrorWithException:exception defaultToDo:defaultToDo]; |
||||||
|
} |
||||||
|
@finally { |
||||||
|
|
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//================================================================= |
||||||
|
// setValue:forUndefinedKey: |
||||||
|
//================================================================= |
||||||
|
#pragma mark - setValue:forUndefinedKey: |
||||||
|
|
||||||
|
- (void)avoidCrashSetValue:(id)value forUndefinedKey:(NSString *)key { |
||||||
|
@try { |
||||||
|
[self avoidCrashSetValue:value forUndefinedKey:key]; |
||||||
|
} |
||||||
|
@catch (NSException *exception) { |
||||||
|
NSString *defaultToDo = AvoidCrashDefaultIgnore; |
||||||
|
[AvoidCrash noteErrorWithException:exception defaultToDo:defaultToDo]; |
||||||
|
} |
||||||
|
@finally { |
||||||
|
|
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
//================================================================= |
||||||
|
// setValuesForKeysWithDictionary: |
||||||
|
//================================================================= |
||||||
|
#pragma mark - setValuesForKeysWithDictionary: |
||||||
|
|
||||||
|
- (void)avoidCrashSetValuesForKeysWithDictionary:(NSDictionary<NSString *,id> *)keyedValues { |
||||||
|
@try { |
||||||
|
[self avoidCrashSetValuesForKeysWithDictionary:keyedValues]; |
||||||
|
} |
||||||
|
@catch (NSException *exception) { |
||||||
|
NSString *defaultToDo = AvoidCrashDefaultIgnore; |
||||||
|
[AvoidCrash noteErrorWithException:exception defaultToDo:defaultToDo]; |
||||||
|
} |
||||||
|
@finally { |
||||||
|
|
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@end |
@ -0,0 +1,29 @@ |
|||||||
|
//
|
||||||
|
// NSString+AvoidCrash.h
|
||||||
|
// https://github.com/chenfanfang/AvoidCrash
|
||||||
|
//
|
||||||
|
// Created by mac on 16/10/5.
|
||||||
|
// Copyright © 2016年 chenfanfang. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import <Foundation/Foundation.h> |
||||||
|
#import "AvoidCrashProtocol.h" |
||||||
|
|
||||||
|
@interface NSString (AvoidCrash)<AvoidCrashProtocol> |
||||||
|
|
||||||
|
|
||||||
|
@end |
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Can avoid crash method |
||||||
|
* |
||||||
|
* 1. - (unichar)characterAtIndex:(NSUInteger)index |
||||||
|
* 2. - (NSString *)substringFromIndex:(NSUInteger)from |
||||||
|
* 3. - (NSString *)substringToIndex:(NSUInteger)to { |
||||||
|
* 4. - (NSString *)substringWithRange:(NSRange)range { |
||||||
|
* 5. - (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement |
||||||
|
* 6. - (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement options:(NSStringCompareOptions)options range:(NSRange)searchRange |
||||||
|
* 7. - (NSString *)stringByReplacingCharactersInRange:(NSRange)range withString:(NSString *)replacement |
||||||
|
* |
||||||
|
*/ |
@ -0,0 +1,204 @@ |
|||||||
|
// |
||||||
|
// NSString+AvoidCrash.m |
||||||
|
// https://github.com/chenfanfang/AvoidCrash |
||||||
|
// |
||||||
|
// Created by mac on 16/10/5. |
||||||
|
// Copyright © 2016年 chenfanfang. All rights reserved. |
||||||
|
// |
||||||
|
|
||||||
|
#import "NSString+AvoidCrash.h" |
||||||
|
|
||||||
|
#import "AvoidCrash.h" |
||||||
|
|
||||||
|
@implementation NSString (AvoidCrash) |
||||||
|
|
||||||
|
+ (void)avoidCrashExchangeMethod { |
||||||
|
|
||||||
|
static dispatch_once_t onceToken; |
||||||
|
dispatch_once(&onceToken, ^{ |
||||||
|
Class stringClass = NSClassFromString(@"__NSCFConstantString"); |
||||||
|
|
||||||
|
//characterAtIndex |
||||||
|
[AvoidCrash exchangeInstanceMethod:stringClass method1Sel:@selector(characterAtIndex:) method2Sel:@selector(avoidCrashCharacterAtIndex:)]; |
||||||
|
|
||||||
|
//substringFromIndex |
||||||
|
[AvoidCrash exchangeInstanceMethod:stringClass method1Sel:@selector(substringFromIndex:) method2Sel:@selector(avoidCrashSubstringFromIndex:)]; |
||||||
|
|
||||||
|
//substringToIndex |
||||||
|
[AvoidCrash exchangeInstanceMethod:stringClass method1Sel:@selector(substringToIndex:) method2Sel:@selector(avoidCrashSubstringToIndex:)]; |
||||||
|
|
||||||
|
//substringWithRange: |
||||||
|
[AvoidCrash exchangeInstanceMethod:stringClass method1Sel:@selector(substringWithRange:) method2Sel:@selector(avoidCrashSubstringWithRange:)]; |
||||||
|
|
||||||
|
//stringByReplacingOccurrencesOfString: |
||||||
|
[AvoidCrash exchangeInstanceMethod:stringClass method1Sel:@selector(stringByReplacingOccurrencesOfString:withString:) method2Sel:@selector(avoidCrashStringByReplacingOccurrencesOfString:withString:)]; |
||||||
|
|
||||||
|
//stringByReplacingOccurrencesOfString:withString:options:range: |
||||||
|
[AvoidCrash exchangeInstanceMethod:stringClass method1Sel:@selector(stringByReplacingOccurrencesOfString:withString:options:range:) method2Sel:@selector(avoidCrashStringByReplacingOccurrencesOfString:withString:options:range:)]; |
||||||
|
|
||||||
|
//stringByReplacingCharactersInRange:withString: |
||||||
|
[AvoidCrash exchangeInstanceMethod:stringClass method1Sel:@selector(stringByReplacingCharactersInRange:withString:) method2Sel:@selector(avoidCrashStringByReplacingCharactersInRange:withString:)]; |
||||||
|
}); |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
//================================================================= |
||||||
|
// characterAtIndex: |
||||||
|
//================================================================= |
||||||
|
#pragma mark - characterAtIndex: |
||||||
|
|
||||||
|
- (unichar)avoidCrashCharacterAtIndex:(NSUInteger)index { |
||||||
|
|
||||||
|
unichar characteristic; |
||||||
|
@try { |
||||||
|
characteristic = [self avoidCrashCharacterAtIndex:index]; |
||||||
|
} |
||||||
|
@catch (NSException *exception) { |
||||||
|
|
||||||
|
NSString *defaultToDo = @"AvoidCrash default is to return a without assign unichar."; |
||||||
|
[AvoidCrash noteErrorWithException:exception defaultToDo:defaultToDo]; |
||||||
|
} |
||||||
|
@finally { |
||||||
|
return characteristic; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
//================================================================= |
||||||
|
// substringFromIndex: |
||||||
|
//================================================================= |
||||||
|
#pragma mark - substringFromIndex: |
||||||
|
|
||||||
|
- (NSString *)avoidCrashSubstringFromIndex:(NSUInteger)from { |
||||||
|
|
||||||
|
NSString *subString = nil; |
||||||
|
|
||||||
|
@try { |
||||||
|
subString = [self avoidCrashSubstringFromIndex:from]; |
||||||
|
} |
||||||
|
@catch (NSException *exception) { |
||||||
|
|
||||||
|
NSString *defaultToDo = AvoidCrashDefaultReturnNil; |
||||||
|
[AvoidCrash noteErrorWithException:exception defaultToDo:defaultToDo]; |
||||||
|
subString = nil; |
||||||
|
} |
||||||
|
@finally { |
||||||
|
return subString; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
//================================================================= |
||||||
|
// substringToIndex |
||||||
|
//================================================================= |
||||||
|
#pragma mark - substringToIndex |
||||||
|
|
||||||
|
- (NSString *)avoidCrashSubstringToIndex:(NSUInteger)to { |
||||||
|
|
||||||
|
NSString *subString = nil; |
||||||
|
|
||||||
|
@try { |
||||||
|
subString = [self avoidCrashSubstringToIndex:to]; |
||||||
|
} |
||||||
|
@catch (NSException *exception) { |
||||||
|
NSString *defaultToDo = AvoidCrashDefaultReturnNil; |
||||||
|
[AvoidCrash noteErrorWithException:exception defaultToDo:defaultToDo]; |
||||||
|
subString = nil; |
||||||
|
} |
||||||
|
@finally { |
||||||
|
return subString; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
//================================================================= |
||||||
|
// substringWithRange: |
||||||
|
//================================================================= |
||||||
|
#pragma mark - substringWithRange: |
||||||
|
|
||||||
|
- (NSString *)avoidCrashSubstringWithRange:(NSRange)range { |
||||||
|
|
||||||
|
NSString *subString = nil; |
||||||
|
|
||||||
|
@try { |
||||||
|
subString = [self avoidCrashSubstringWithRange:range]; |
||||||
|
} |
||||||
|
@catch (NSException *exception) { |
||||||
|
NSString *defaultToDo = AvoidCrashDefaultReturnNil; |
||||||
|
[AvoidCrash noteErrorWithException:exception defaultToDo:defaultToDo]; |
||||||
|
subString = nil; |
||||||
|
} |
||||||
|
@finally { |
||||||
|
return subString; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
//================================================================= |
||||||
|
// stringByReplacingOccurrencesOfString: |
||||||
|
//================================================================= |
||||||
|
#pragma mark - stringByReplacingOccurrencesOfString: |
||||||
|
|
||||||
|
- (NSString *)avoidCrashStringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement { |
||||||
|
|
||||||
|
NSString *newStr = nil; |
||||||
|
|
||||||
|
@try { |
||||||
|
newStr = [self avoidCrashStringByReplacingOccurrencesOfString:target withString:replacement]; |
||||||
|
} |
||||||
|
@catch (NSException *exception) { |
||||||
|
NSString *defaultToDo = AvoidCrashDefaultReturnNil; |
||||||
|
[AvoidCrash noteErrorWithException:exception defaultToDo:defaultToDo]; |
||||||
|
newStr = nil; |
||||||
|
} |
||||||
|
@finally { |
||||||
|
return newStr; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
//================================================================= |
||||||
|
// stringByReplacingOccurrencesOfString:withString:options:range: |
||||||
|
//================================================================= |
||||||
|
#pragma mark - stringByReplacingOccurrencesOfString:withString:options:range: |
||||||
|
|
||||||
|
- (NSString *)avoidCrashStringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement options:(NSStringCompareOptions)options range:(NSRange)searchRange { |
||||||
|
|
||||||
|
NSString *newStr = nil; |
||||||
|
|
||||||
|
@try { |
||||||
|
newStr = [self avoidCrashStringByReplacingOccurrencesOfString:target withString:replacement options:options range:searchRange]; |
||||||
|
} |
||||||
|
@catch (NSException *exception) { |
||||||
|
NSString *defaultToDo = AvoidCrashDefaultReturnNil; |
||||||
|
[AvoidCrash noteErrorWithException:exception defaultToDo:defaultToDo]; |
||||||
|
newStr = nil; |
||||||
|
} |
||||||
|
@finally { |
||||||
|
return newStr; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
//================================================================= |
||||||
|
// stringByReplacingCharactersInRange:withString: |
||||||
|
//================================================================= |
||||||
|
#pragma mark - stringByReplacingCharactersInRange:withString: |
||||||
|
|
||||||
|
- (NSString *)avoidCrashStringByReplacingCharactersInRange:(NSRange)range withString:(NSString *)replacement { |
||||||
|
|
||||||
|
|
||||||
|
NSString *newStr = nil; |
||||||
|
|
||||||
|
@try { |
||||||
|
newStr = [self avoidCrashStringByReplacingCharactersInRange:range withString:replacement]; |
||||||
|
} |
||||||
|
@catch (NSException *exception) { |
||||||
|
NSString *defaultToDo = AvoidCrashDefaultReturnNil; |
||||||
|
[AvoidCrash noteErrorWithException:exception defaultToDo:defaultToDo]; |
||||||
|
newStr = nil; |
||||||
|
} |
||||||
|
@finally { |
||||||
|
return newStr; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
@end |
@ -0,0 +1,21 @@ |
|||||||
|
MIT License |
||||||
|
|
||||||
|
Copyright (c) 2016 陈蕃坊 |
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy |
||||||
|
of this software and associated documentation files (the "Software"), to deal |
||||||
|
in the Software without restriction, including without limitation the rights |
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
||||||
|
copies of the Software, and to permit persons to whom the Software is |
||||||
|
furnished to do so, subject to the following conditions: |
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all |
||||||
|
copies or substantial portions of the Software. |
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |
||||||
|
SOFTWARE. |
@ -0,0 +1,3 @@ |
|||||||
|
PODFILE CHECKSUM: a7732c713491b70d68ee32155245c2dd3c19e7a3 |
||||||
|
|
||||||
|
COCOAPODS: 1.10.1 |
@ -0,0 +1,344 @@ |
|||||||
|
// !$*UTF8*$! |
||||||
|
{ |
||||||
|
archiveVersion = 1; |
||||||
|
classes = { |
||||||
|
}; |
||||||
|
objectVersion = 48; |
||||||
|
objects = { |
||||||
|
|
||||||
|
/* Begin PBXBuildFile section */ |
||||||
|
11685BF740E29C4FBD1A452B5454C274 /* Pods-TFReader-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = C8E8F3790E1C9C3F3706523362FDCEDF /* Pods-TFReader-dummy.m */; }; |
||||||
|
/* End PBXBuildFile section */ |
||||||
|
|
||||||
|
/* Begin PBXFileReference section */ |
||||||
|
238A60A47FD5AF60EF186891DA9E240B /* Pods-TFReader.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-TFReader.debug.xcconfig"; sourceTree = "<group>"; }; |
||||||
|
51C8BFE3DC27567518C3C4F0DFE35D81 /* libPods-TFReader.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libPods-TFReader.a"; path = "libPods-TFReader.a"; sourceTree = BUILT_PRODUCTS_DIR; }; |
||||||
|
9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; |
||||||
|
A22D09248DAD9262514065CE4A5EE4AC /* Pods-TFReader.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-TFReader.release.xcconfig"; sourceTree = "<group>"; }; |
||||||
|
C3CB5C060A056AE2C7C1027863C165C7 /* Pods-TFReader-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-TFReader-acknowledgements.markdown"; sourceTree = "<group>"; }; |
||||||
|
C8E8F3790E1C9C3F3706523362FDCEDF /* Pods-TFReader-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-TFReader-dummy.m"; sourceTree = "<group>"; }; |
||||||
|
D16DCFCDE310D010F3B86A5851B7428A /* Pods-TFReader-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-TFReader-acknowledgements.plist"; sourceTree = "<group>"; }; |
||||||
|
/* End PBXFileReference section */ |
||||||
|
|
||||||
|
/* Begin PBXFrameworksBuildPhase section */ |
||||||
|
E5835EC13885567AD0039EDBB85A2DA6 /* Frameworks */ = { |
||||||
|
isa = PBXFrameworksBuildPhase; |
||||||
|
buildActionMask = 2147483647; |
||||||
|
files = ( |
||||||
|
); |
||||||
|
runOnlyForDeploymentPostprocessing = 0; |
||||||
|
}; |
||||||
|
/* End PBXFrameworksBuildPhase section */ |
||||||
|
|
||||||
|
/* Begin PBXGroup section */ |
||||||
|
0D19F5EDAC8DEB20ED207665889ADB73 /* Targets Support Files */ = { |
||||||
|
isa = PBXGroup; |
||||||
|
children = ( |
||||||
|
E656A56427E615F956E1AED901A6B84A /* Pods-TFReader */, |
||||||
|
); |
||||||
|
name = "Targets Support Files"; |
||||||
|
sourceTree = "<group>"; |
||||||
|
}; |
||||||
|
1DD1E3F8A0041ADDF4E8551573EDB262 /* Products */ = { |
||||||
|
isa = PBXGroup; |
||||||
|
children = ( |
||||||
|
51C8BFE3DC27567518C3C4F0DFE35D81 /* libPods-TFReader.a */, |
||||||
|
); |
||||||
|
name = Products; |
||||||
|
sourceTree = "<group>"; |
||||||
|
}; |
||||||
|
CF1408CF629C7361332E53B88F7BD30C = { |
||||||
|
isa = PBXGroup; |
||||||
|
children = ( |
||||||
|
9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, |
||||||
|
D89477F20FB1DE18A04690586D7808C4 /* Frameworks */, |
||||||
|
1DD1E3F8A0041ADDF4E8551573EDB262 /* Products */, |
||||||
|
0D19F5EDAC8DEB20ED207665889ADB73 /* Targets Support Files */, |
||||||
|
); |
||||||
|
sourceTree = "<group>"; |
||||||
|
}; |
||||||
|
D89477F20FB1DE18A04690586D7808C4 /* Frameworks */ = { |
||||||
|
isa = PBXGroup; |
||||||
|
children = ( |
||||||
|
); |
||||||
|
name = Frameworks; |
||||||
|
sourceTree = "<group>"; |
||||||
|
}; |
||||||
|
E656A56427E615F956E1AED901A6B84A /* Pods-TFReader */ = { |
||||||
|
isa = PBXGroup; |
||||||
|
children = ( |
||||||
|
C3CB5C060A056AE2C7C1027863C165C7 /* Pods-TFReader-acknowledgements.markdown */, |
||||||
|
D16DCFCDE310D010F3B86A5851B7428A /* Pods-TFReader-acknowledgements.plist */, |
||||||
|
C8E8F3790E1C9C3F3706523362FDCEDF /* Pods-TFReader-dummy.m */, |
||||||
|
238A60A47FD5AF60EF186891DA9E240B /* Pods-TFReader.debug.xcconfig */, |
||||||
|
A22D09248DAD9262514065CE4A5EE4AC /* Pods-TFReader.release.xcconfig */, |
||||||
|
); |
||||||
|
name = "Pods-TFReader"; |
||||||
|
path = "Target Support Files/Pods-TFReader"; |
||||||
|
sourceTree = "<group>"; |
||||||
|
}; |
||||||
|
/* End PBXGroup section */ |
||||||
|
|
||||||
|
/* Begin PBXHeadersBuildPhase section */ |
||||||
|
A5082BD73D767E2B91CC38D501F621F4 /* Headers */ = { |
||||||
|
isa = PBXHeadersBuildPhase; |
||||||
|
buildActionMask = 2147483647; |
||||||
|
files = ( |
||||||
|
); |
||||||
|
runOnlyForDeploymentPostprocessing = 0; |
||||||
|
}; |
||||||
|
/* End PBXHeadersBuildPhase section */ |
||||||
|
|
||||||
|
/* Begin PBXNativeTarget section */ |
||||||
|
80656BB455724E85A3D65710CD4AF1D7 /* Pods-TFReader */ = { |
||||||
|
isa = PBXNativeTarget; |
||||||
|
buildConfigurationList = 0A520DBFA6DC49B5817B2B6F7C270262 /* Build configuration list for PBXNativeTarget "Pods-TFReader" */; |
||||||
|
buildPhases = ( |
||||||
|
A5082BD73D767E2B91CC38D501F621F4 /* Headers */, |
||||||
|
63B140781BA178B59A94E306AE4B81CB /* Sources */, |
||||||
|
E5835EC13885567AD0039EDBB85A2DA6 /* Frameworks */, |
||||||
|
); |
||||||
|
buildRules = ( |
||||||
|
); |
||||||
|
dependencies = ( |
||||||
|
); |
||||||
|
name = "Pods-TFReader"; |
||||||
|
productName = "Pods-TFReader"; |
||||||
|
productReference = 51C8BFE3DC27567518C3C4F0DFE35D81 /* libPods-TFReader.a */; |
||||||
|
productType = "com.apple.product-type.library.static"; |
||||||
|
}; |
||||||
|
/* End PBXNativeTarget section */ |
||||||
|
|
||||||
|
/* Begin PBXProject section */ |
||||||
|
BFDFE7DC352907FC980B868725387E98 /* Project object */ = { |
||||||
|
isa = PBXProject; |
||||||
|
attributes = { |
||||||
|
LastSwiftUpdateCheck = 1100; |
||||||
|
LastUpgradeCheck = 1100; |
||||||
|
}; |
||||||
|
buildConfigurationList = 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */; |
||||||
|
compatibilityVersion = "Xcode 8.0"; |
||||||
|
developmentRegion = en; |
||||||
|
hasScannedForEncodings = 0; |
||||||
|
knownRegions = ( |
||||||
|
en, |
||||||
|
Base, |
||||||
|
); |
||||||
|
mainGroup = CF1408CF629C7361332E53B88F7BD30C; |
||||||
|
productRefGroup = 1DD1E3F8A0041ADDF4E8551573EDB262 /* Products */; |
||||||
|
projectDirPath = ""; |
||||||
|
projectRoot = ""; |
||||||
|
targets = ( |
||||||
|
80656BB455724E85A3D65710CD4AF1D7 /* Pods-TFReader */, |
||||||
|
); |
||||||
|
}; |
||||||
|
/* End PBXProject section */ |
||||||
|
|
||||||
|
/* Begin PBXSourcesBuildPhase section */ |
||||||
|
63B140781BA178B59A94E306AE4B81CB /* Sources */ = { |
||||||
|
isa = PBXSourcesBuildPhase; |
||||||
|
buildActionMask = 2147483647; |
||||||
|
files = ( |
||||||
|
11685BF740E29C4FBD1A452B5454C274 /* Pods-TFReader-dummy.m in Sources */, |
||||||
|
); |
||||||
|
runOnlyForDeploymentPostprocessing = 0; |
||||||
|
}; |
||||||
|
/* End PBXSourcesBuildPhase section */ |
||||||
|
|
||||||
|
/* Begin XCBuildConfiguration section */ |
||||||
|
35F10F992FAD6F6D0B8D7727D633E500 /* Debug */ = { |
||||||
|
isa = XCBuildConfiguration; |
||||||
|
baseConfigurationReference = 238A60A47FD5AF60EF186891DA9E240B /* Pods-TFReader.debug.xcconfig */; |
||||||
|
buildSettings = { |
||||||
|
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; |
||||||
|
CLANG_ENABLE_OBJC_WEAK = NO; |
||||||
|
"CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; |
||||||
|
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; |
||||||
|
"CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; |
||||||
|
IPHONEOS_DEPLOYMENT_TARGET = 10.0; |
||||||
|
MACH_O_TYPE = staticlib; |
||||||
|
OTHER_LDFLAGS = ""; |
||||||
|
OTHER_LIBTOOLFLAGS = ""; |
||||||
|
PODS_ROOT = "$(SRCROOT)"; |
||||||
|
PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; |
||||||
|
SDKROOT = iphoneos; |
||||||
|
SKIP_INSTALL = YES; |
||||||
|
TARGETED_DEVICE_FAMILY = "1,2"; |
||||||
|
}; |
||||||
|
name = Debug; |
||||||
|
}; |
||||||
|
7EE7A78859F657F6BEFC651185B43192 /* Release */ = { |
||||||
|
isa = XCBuildConfiguration; |
||||||
|
buildSettings = { |
||||||
|
ALWAYS_SEARCH_USER_PATHS = NO; |
||||||
|
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; |
||||||
|
CLANG_ANALYZER_NONNULL = YES; |
||||||
|
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; |
||||||
|
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; |
||||||
|
CLANG_CXX_LIBRARY = "libc++"; |
||||||
|
CLANG_ENABLE_MODULES = YES; |
||||||
|
CLANG_ENABLE_OBJC_ARC = YES; |
||||||
|
CLANG_ENABLE_OBJC_WEAK = YES; |
||||||
|
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; |
||||||
|
CLANG_WARN_BOOL_CONVERSION = YES; |
||||||
|
CLANG_WARN_COMMA = YES; |
||||||
|
CLANG_WARN_CONSTANT_CONVERSION = YES; |
||||||
|
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; |
||||||
|
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; |
||||||
|
CLANG_WARN_DOCUMENTATION_COMMENTS = YES; |
||||||
|
CLANG_WARN_EMPTY_BODY = YES; |
||||||
|
CLANG_WARN_ENUM_CONVERSION = YES; |
||||||
|
CLANG_WARN_INFINITE_RECURSION = YES; |
||||||
|
CLANG_WARN_INT_CONVERSION = YES; |
||||||
|
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; |
||||||
|
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; |
||||||
|
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; |
||||||
|
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; |
||||||
|
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; |
||||||
|
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; |
||||||
|
CLANG_WARN_STRICT_PROTOTYPES = YES; |
||||||
|
CLANG_WARN_SUSPICIOUS_MOVE = YES; |
||||||
|
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; |
||||||
|
CLANG_WARN_UNREACHABLE_CODE = YES; |
||||||
|
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; |
||||||
|
COPY_PHASE_STRIP = NO; |
||||||
|
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; |
||||||
|
ENABLE_NS_ASSERTIONS = NO; |
||||||
|
ENABLE_STRICT_OBJC_MSGSEND = YES; |
||||||
|
GCC_C_LANGUAGE_STANDARD = gnu11; |
||||||
|
GCC_NO_COMMON_BLOCKS = YES; |
||||||
|
GCC_PREPROCESSOR_DEFINITIONS = ( |
||||||
|
"POD_CONFIGURATION_RELEASE=1", |
||||||
|
"$(inherited)", |
||||||
|
); |
||||||
|
GCC_WARN_64_TO_32_BIT_CONVERSION = YES; |
||||||
|
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; |
||||||
|
GCC_WARN_UNDECLARED_SELECTOR = YES; |
||||||
|
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; |
||||||
|
GCC_WARN_UNUSED_FUNCTION = YES; |
||||||
|
GCC_WARN_UNUSED_VARIABLE = YES; |
||||||
|
IPHONEOS_DEPLOYMENT_TARGET = 10.0; |
||||||
|
MTL_ENABLE_DEBUG_INFO = NO; |
||||||
|
MTL_FAST_MATH = YES; |
||||||
|
PRODUCT_NAME = "$(TARGET_NAME)"; |
||||||
|
STRIP_INSTALLED_PRODUCT = NO; |
||||||
|
SWIFT_COMPILATION_MODE = wholemodule; |
||||||
|
SWIFT_OPTIMIZATION_LEVEL = "-O"; |
||||||
|
SWIFT_VERSION = 5.0; |
||||||
|
SYMROOT = "${SRCROOT}/../build"; |
||||||
|
}; |
||||||
|
name = Release; |
||||||
|
}; |
||||||
|
C0079156929FB38E4BBB078B3A5FCA72 /* Release */ = { |
||||||
|
isa = XCBuildConfiguration; |
||||||
|
baseConfigurationReference = A22D09248DAD9262514065CE4A5EE4AC /* Pods-TFReader.release.xcconfig */; |
||||||
|
buildSettings = { |
||||||
|
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; |
||||||
|
CLANG_ENABLE_OBJC_WEAK = NO; |
||||||
|
"CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; |
||||||
|
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; |
||||||
|
"CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; |
||||||
|
IPHONEOS_DEPLOYMENT_TARGET = 10.0; |
||||||
|
MACH_O_TYPE = staticlib; |
||||||
|
OTHER_LDFLAGS = ""; |
||||||
|
OTHER_LIBTOOLFLAGS = ""; |
||||||
|
PODS_ROOT = "$(SRCROOT)"; |
||||||
|
PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; |
||||||
|
SDKROOT = iphoneos; |
||||||
|
SKIP_INSTALL = YES; |
||||||
|
TARGETED_DEVICE_FAMILY = "1,2"; |
||||||
|
VALIDATE_PRODUCT = YES; |
||||||
|
}; |
||||||
|
name = Release; |
||||||
|
}; |
||||||
|
D299434AB35E7FD6F7921C8EF24742FF /* Debug */ = { |
||||||
|
isa = XCBuildConfiguration; |
||||||
|
buildSettings = { |
||||||
|
ALWAYS_SEARCH_USER_PATHS = NO; |
||||||
|
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; |
||||||
|
CLANG_ANALYZER_NONNULL = YES; |
||||||
|
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; |
||||||
|
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; |
||||||
|
CLANG_CXX_LIBRARY = "libc++"; |
||||||
|
CLANG_ENABLE_MODULES = YES; |
||||||
|
CLANG_ENABLE_OBJC_ARC = YES; |
||||||
|
CLANG_ENABLE_OBJC_WEAK = YES; |
||||||
|
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; |
||||||
|
CLANG_WARN_BOOL_CONVERSION = YES; |
||||||
|
CLANG_WARN_COMMA = YES; |
||||||
|
CLANG_WARN_CONSTANT_CONVERSION = YES; |
||||||
|
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; |
||||||
|
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; |
||||||
|
CLANG_WARN_DOCUMENTATION_COMMENTS = YES; |
||||||
|
CLANG_WARN_EMPTY_BODY = YES; |
||||||
|
CLANG_WARN_ENUM_CONVERSION = YES; |
||||||
|
CLANG_WARN_INFINITE_RECURSION = YES; |
||||||
|
CLANG_WARN_INT_CONVERSION = YES; |
||||||
|
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; |
||||||
|
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; |
||||||
|
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; |
||||||
|
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; |
||||||
|
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; |
||||||
|
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; |
||||||
|
CLANG_WARN_STRICT_PROTOTYPES = YES; |
||||||
|
CLANG_WARN_SUSPICIOUS_MOVE = YES; |
||||||
|
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; |
||||||
|
CLANG_WARN_UNREACHABLE_CODE = YES; |
||||||
|
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; |
||||||
|
COPY_PHASE_STRIP = NO; |
||||||
|
DEBUG_INFORMATION_FORMAT = dwarf; |
||||||
|
ENABLE_STRICT_OBJC_MSGSEND = YES; |
||||||
|
ENABLE_TESTABILITY = YES; |
||||||
|
GCC_C_LANGUAGE_STANDARD = gnu11; |
||||||
|
GCC_DYNAMIC_NO_PIC = NO; |
||||||
|
GCC_NO_COMMON_BLOCKS = YES; |
||||||
|
GCC_OPTIMIZATION_LEVEL = 0; |
||||||
|
GCC_PREPROCESSOR_DEFINITIONS = ( |
||||||
|
"POD_CONFIGURATION_DEBUG=1", |
||||||
|
"DEBUG=1", |
||||||
|
"$(inherited)", |
||||||
|
); |
||||||
|
GCC_WARN_64_TO_32_BIT_CONVERSION = YES; |
||||||
|
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; |
||||||
|
GCC_WARN_UNDECLARED_SELECTOR = YES; |
||||||
|
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; |
||||||
|
GCC_WARN_UNUSED_FUNCTION = YES; |
||||||
|
GCC_WARN_UNUSED_VARIABLE = YES; |
||||||
|
IPHONEOS_DEPLOYMENT_TARGET = 10.0; |
||||||
|
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; |
||||||
|
MTL_FAST_MATH = YES; |
||||||
|
ONLY_ACTIVE_ARCH = YES; |
||||||
|
PRODUCT_NAME = "$(TARGET_NAME)"; |
||||||
|
STRIP_INSTALLED_PRODUCT = NO; |
||||||
|
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; |
||||||
|
SWIFT_OPTIMIZATION_LEVEL = "-Onone"; |
||||||
|
SWIFT_VERSION = 5.0; |
||||||
|
SYMROOT = "${SRCROOT}/../build"; |
||||||
|
}; |
||||||
|
name = Debug; |
||||||
|
}; |
||||||
|
/* End XCBuildConfiguration section */ |
||||||
|
|
||||||
|
/* Begin XCConfigurationList section */ |
||||||
|
0A520DBFA6DC49B5817B2B6F7C270262 /* Build configuration list for PBXNativeTarget "Pods-TFReader" */ = { |
||||||
|
isa = XCConfigurationList; |
||||||
|
buildConfigurations = ( |
||||||
|
35F10F992FAD6F6D0B8D7727D633E500 /* Debug */, |
||||||
|
C0079156929FB38E4BBB078B3A5FCA72 /* Release */, |
||||||
|
); |
||||||
|
defaultConfigurationIsVisible = 0; |
||||||
|
defaultConfigurationName = Release; |
||||||
|
}; |
||||||
|
4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = { |
||||||
|
isa = XCConfigurationList; |
||||||
|
buildConfigurations = ( |
||||||
|
D299434AB35E7FD6F7921C8EF24742FF /* Debug */, |
||||||
|
7EE7A78859F657F6BEFC651185B43192 /* Release */, |
||||||
|
); |
||||||
|
defaultConfigurationIsVisible = 0; |
||||||
|
defaultConfigurationName = Release; |
||||||
|
}; |
||||||
|
/* End XCConfigurationList section */ |
||||||
|
}; |
||||||
|
rootObject = BFDFE7DC352907FC980B868725387E98 /* Project object */; |
||||||
|
} |
@ -0,0 +1,60 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<Scheme |
||||||
|
LastUpgradeVersion = "1100" |
||||||
|
version = "1.3"> |
||||||
|
<BuildAction |
||||||
|
parallelizeBuildables = "YES" |
||||||
|
buildImplicitDependencies = "YES"> |
||||||
|
<BuildActionEntries> |
||||||
|
<BuildActionEntry |
||||||
|
buildForAnalyzing = "YES" |
||||||
|
buildForTesting = "YES" |
||||||
|
buildForRunning = "YES" |
||||||
|
buildForProfiling = "YES" |
||||||
|
buildForArchiving = "YES"> |
||||||
|
<BuildableReference |
||||||
|
BuildableIdentifier = "primary" |
||||||
|
BlueprintIdentifier = "0130B3724283586C0E9D2A112D4F2AA1" |
||||||
|
BuildableName = "libAFNetworking.a" |
||||||
|
BlueprintName = "AFNetworking" |
||||||
|
ReferencedContainer = "container:Pods.xcodeproj"> |
||||||
|
</BuildableReference> |
||||||
|
</BuildActionEntry> |
||||||
|
</BuildActionEntries> |
||||||
|
</BuildAction> |
||||||
|
<TestAction |
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES" |
||||||
|
buildConfiguration = "Debug"> |
||||||
|
<AdditionalOptions> |
||||||
|
</AdditionalOptions> |
||||||
|
</TestAction> |
||||||
|
<LaunchAction |
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||||
|
launchStyle = "0" |
||||||
|
useCustomWorkingDirectory = "NO" |
||||||
|
ignoresPersistentStateOnLaunch = "NO" |
||||||
|
debugDocumentVersioning = "YES" |
||||||
|
debugServiceExtension = "internal" |
||||||
|
buildConfiguration = "Debug" |
||||||
|
allowLocationSimulation = "YES"> |
||||||
|
<AdditionalOptions> |
||||||
|
</AdditionalOptions> |
||||||
|
</LaunchAction> |
||||||
|
<ProfileAction |
||||||
|
savedToolIdentifier = "" |
||||||
|
useCustomWorkingDirectory = "NO" |
||||||
|
debugDocumentVersioning = "YES" |
||||||
|
buildConfiguration = "Release" |
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES"> |
||||||
|
</ProfileAction> |
||||||
|
<AnalyzeAction |
||||||
|
buildConfiguration = "Debug"> |
||||||
|
</AnalyzeAction> |
||||||
|
<ArchiveAction |
||||||
|
buildConfiguration = "Release" |
||||||
|
revealArchiveInOrganizer = "YES"> |
||||||
|
</ArchiveAction> |
||||||
|
</Scheme> |
@ -0,0 +1,60 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<Scheme |
||||||
|
LastUpgradeVersion = "1100" |
||||||
|
version = "1.3"> |
||||||
|
<BuildAction |
||||||
|
parallelizeBuildables = "YES" |
||||||
|
buildImplicitDependencies = "YES"> |
||||||
|
<BuildActionEntries> |
||||||
|
<BuildActionEntry |
||||||
|
buildForAnalyzing = "YES" |
||||||
|
buildForTesting = "YES" |
||||||
|
buildForRunning = "YES" |
||||||
|
buildForProfiling = "YES" |
||||||
|
buildForArchiving = "YES"> |
||||||
|
<BuildableReference |
||||||
|
BuildableIdentifier = "primary" |
||||||
|
BlueprintIdentifier = "4A68CFD979D413A619DF631BB121D98F" |
||||||
|
BuildableName = "Bugly" |
||||||
|
BlueprintName = "Bugly" |
||||||
|
ReferencedContainer = "container:Pods.xcodeproj"> |
||||||
|
</BuildableReference> |
||||||
|
</BuildActionEntry> |
||||||
|
</BuildActionEntries> |
||||||
|
</BuildAction> |
||||||
|
<TestAction |
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES" |
||||||
|
buildConfiguration = "Debug"> |
||||||
|
<AdditionalOptions> |
||||||
|
</AdditionalOptions> |
||||||
|
</TestAction> |
||||||
|
<LaunchAction |
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||||
|
launchStyle = "0" |
||||||
|
useCustomWorkingDirectory = "NO" |
||||||
|
ignoresPersistentStateOnLaunch = "NO" |
||||||
|
debugDocumentVersioning = "YES" |
||||||
|
debugServiceExtension = "internal" |
||||||
|
buildConfiguration = "Debug" |
||||||
|
allowLocationSimulation = "YES"> |
||||||
|
<AdditionalOptions> |
||||||
|
</AdditionalOptions> |
||||||
|
</LaunchAction> |
||||||
|
<ProfileAction |
||||||
|
savedToolIdentifier = "" |
||||||
|
useCustomWorkingDirectory = "NO" |
||||||
|
debugDocumentVersioning = "YES" |
||||||
|
buildConfiguration = "Release" |
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES"> |
||||||
|
</ProfileAction> |
||||||
|
<AnalyzeAction |
||||||
|
buildConfiguration = "Debug"> |
||||||
|
</AnalyzeAction> |
||||||
|
<ArchiveAction |
||||||
|
buildConfiguration = "Release" |
||||||
|
revealArchiveInOrganizer = "YES"> |
||||||
|
</ArchiveAction> |
||||||
|
</Scheme> |
@ -0,0 +1,60 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<Scheme |
||||||
|
LastUpgradeVersion = "1100" |
||||||
|
version = "1.3"> |
||||||
|
<BuildAction |
||||||
|
parallelizeBuildables = "YES" |
||||||
|
buildImplicitDependencies = "YES"> |
||||||
|
<BuildActionEntries> |
||||||
|
<BuildActionEntry |
||||||
|
buildForAnalyzing = "YES" |
||||||
|
buildForTesting = "YES" |
||||||
|
buildForRunning = "YES" |
||||||
|
buildForProfiling = "YES" |
||||||
|
buildForArchiving = "YES"> |
||||||
|
<BuildableReference |
||||||
|
BuildableIdentifier = "primary" |
||||||
|
BlueprintIdentifier = "4A8E8992707D01510894596DB9BCCA00" |
||||||
|
BuildableName = "libFLAnimatedImage.a" |
||||||
|
BlueprintName = "FLAnimatedImage" |
||||||
|
ReferencedContainer = "container:Pods.xcodeproj"> |
||||||
|
</BuildableReference> |
||||||
|
</BuildActionEntry> |
||||||
|
</BuildActionEntries> |
||||||
|
</BuildAction> |
||||||
|
<TestAction |
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES" |
||||||
|
buildConfiguration = "Debug"> |
||||||
|
<AdditionalOptions> |
||||||
|
</AdditionalOptions> |
||||||
|
</TestAction> |
||||||
|
<LaunchAction |
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||||
|
launchStyle = "0" |
||||||
|
useCustomWorkingDirectory = "NO" |
||||||
|
ignoresPersistentStateOnLaunch = "NO" |
||||||
|
debugDocumentVersioning = "YES" |
||||||
|
debugServiceExtension = "internal" |
||||||
|
buildConfiguration = "Debug" |
||||||
|
allowLocationSimulation = "YES"> |
||||||
|
<AdditionalOptions> |
||||||
|
</AdditionalOptions> |
||||||
|
</LaunchAction> |
||||||
|
<ProfileAction |
||||||
|
savedToolIdentifier = "" |
||||||
|
useCustomWorkingDirectory = "NO" |
||||||
|
debugDocumentVersioning = "YES" |
||||||
|
buildConfiguration = "Release" |
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES"> |
||||||
|
</ProfileAction> |
||||||
|
<AnalyzeAction |
||||||
|
buildConfiguration = "Debug"> |
||||||
|
</AnalyzeAction> |
||||||
|
<ArchiveAction |
||||||
|
buildConfiguration = "Release" |
||||||
|
revealArchiveInOrganizer = "YES"> |
||||||
|
</ArchiveAction> |
||||||
|
</Scheme> |
@ -0,0 +1,60 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<Scheme |
||||||
|
LastUpgradeVersion = "1100" |
||||||
|
version = "1.3"> |
||||||
|
<BuildAction |
||||||
|
parallelizeBuildables = "YES" |
||||||
|
buildImplicitDependencies = "YES"> |
||||||
|
<BuildActionEntries> |
||||||
|
<BuildActionEntry |
||||||
|
buildForAnalyzing = "YES" |
||||||
|
buildForTesting = "YES" |
||||||
|
buildForRunning = "YES" |
||||||
|
buildForProfiling = "YES" |
||||||
|
buildForArchiving = "YES"> |
||||||
|
<BuildableReference |
||||||
|
BuildableIdentifier = "primary" |
||||||
|
BlueprintIdentifier = "55AF53E6C77A10ED4985E04D74A8878E" |
||||||
|
BuildableName = "libMasonry.a" |
||||||
|
BlueprintName = "Masonry" |
||||||
|
ReferencedContainer = "container:Pods.xcodeproj"> |
||||||
|
</BuildableReference> |
||||||
|
</BuildActionEntry> |
||||||
|
</BuildActionEntries> |
||||||
|
</BuildAction> |
||||||
|
<TestAction |
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES" |
||||||
|
buildConfiguration = "Debug"> |
||||||
|
<AdditionalOptions> |
||||||
|
</AdditionalOptions> |
||||||
|
</TestAction> |
||||||
|
<LaunchAction |
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||||
|
launchStyle = "0" |
||||||
|
useCustomWorkingDirectory = "NO" |
||||||
|
ignoresPersistentStateOnLaunch = "NO" |
||||||
|
debugDocumentVersioning = "YES" |
||||||
|
debugServiceExtension = "internal" |
||||||
|
buildConfiguration = "Debug" |
||||||
|
allowLocationSimulation = "YES"> |
||||||
|
<AdditionalOptions> |
||||||
|
</AdditionalOptions> |
||||||
|
</LaunchAction> |
||||||
|
<ProfileAction |
||||||
|
savedToolIdentifier = "" |
||||||
|
useCustomWorkingDirectory = "NO" |
||||||
|
debugDocumentVersioning = "YES" |
||||||
|
buildConfiguration = "Release" |
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES"> |
||||||
|
</ProfileAction> |
||||||
|
<AnalyzeAction |
||||||
|
buildConfiguration = "Debug"> |
||||||
|
</AnalyzeAction> |
||||||
|
<ArchiveAction |
||||||
|
buildConfiguration = "Release" |
||||||
|
revealArchiveInOrganizer = "YES"> |
||||||
|
</ArchiveAction> |
||||||
|
</Scheme> |
@ -0,0 +1,60 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<Scheme |
||||||
|
LastUpgradeVersion = "1100" |
||||||
|
version = "1.3"> |
||||||
|
<BuildAction |
||||||
|
parallelizeBuildables = "YES" |
||||||
|
buildImplicitDependencies = "YES"> |
||||||
|
<BuildActionEntries> |
||||||
|
<BuildActionEntry |
||||||
|
buildForAnalyzing = "YES" |
||||||
|
buildForTesting = "YES" |
||||||
|
buildForRunning = "YES" |
||||||
|
buildForProfiling = "YES" |
||||||
|
buildForArchiving = "YES"> |
||||||
|
<BuildableReference |
||||||
|
BuildableIdentifier = "primary" |
||||||
|
BlueprintIdentifier = "4B97CCAAA2A8F1590093B5FA1B2BF668" |
||||||
|
BuildableName = "libPods-WXReader.a" |
||||||
|
BlueprintName = "Pods-WXReader" |
||||||
|
ReferencedContainer = "container:Pods.xcodeproj"> |
||||||
|
</BuildableReference> |
||||||
|
</BuildActionEntry> |
||||||
|
</BuildActionEntries> |
||||||
|
</BuildAction> |
||||||
|
<TestAction |
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES" |
||||||
|
buildConfiguration = "Debug"> |
||||||
|
<AdditionalOptions> |
||||||
|
</AdditionalOptions> |
||||||
|
</TestAction> |
||||||
|
<LaunchAction |
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||||
|
launchStyle = "0" |
||||||
|
useCustomWorkingDirectory = "NO" |
||||||
|
ignoresPersistentStateOnLaunch = "NO" |
||||||
|
debugDocumentVersioning = "YES" |
||||||
|
debugServiceExtension = "internal" |
||||||
|
buildConfiguration = "Debug" |
||||||
|
allowLocationSimulation = "YES"> |
||||||
|
<AdditionalOptions> |
||||||
|
</AdditionalOptions> |
||||||
|
</LaunchAction> |
||||||
|
<ProfileAction |
||||||
|
savedToolIdentifier = "" |
||||||
|
useCustomWorkingDirectory = "NO" |
||||||
|
debugDocumentVersioning = "YES" |
||||||
|
buildConfiguration = "Release" |
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES"> |
||||||
|
</ProfileAction> |
||||||
|
<AnalyzeAction |
||||||
|
buildConfiguration = "Debug"> |
||||||
|
</AnalyzeAction> |
||||||
|
<ArchiveAction |
||||||
|
buildConfiguration = "Release" |
||||||
|
revealArchiveInOrganizer = "YES"> |
||||||
|
</ArchiveAction> |
||||||
|
</Scheme> |
@ -0,0 +1,60 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<Scheme |
||||||
|
LastUpgradeVersion = "1100" |
||||||
|
version = "1.3"> |
||||||
|
<BuildAction |
||||||
|
parallelizeBuildables = "YES" |
||||||
|
buildImplicitDependencies = "YES"> |
||||||
|
<BuildActionEntries> |
||||||
|
<BuildActionEntry |
||||||
|
buildForAnalyzing = "YES" |
||||||
|
buildForTesting = "YES" |
||||||
|
buildForRunning = "YES" |
||||||
|
buildForProfiling = "YES" |
||||||
|
buildForArchiving = "YES"> |
||||||
|
<BuildableReference |
||||||
|
BuildableIdentifier = "primary" |
||||||
|
BlueprintIdentifier = "2006263064A94C0063192AE0D2C3F409" |
||||||
|
BuildableName = "libUITableView+FDTemplateLayoutCell.a" |
||||||
|
BlueprintName = "UITableView+FDTemplateLayoutCell" |
||||||
|
ReferencedContainer = "container:Pods.xcodeproj"> |
||||||
|
</BuildableReference> |
||||||
|
</BuildActionEntry> |
||||||
|
</BuildActionEntries> |
||||||
|
</BuildAction> |
||||||
|
<TestAction |
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES" |
||||||
|
buildConfiguration = "Debug"> |
||||||
|
<AdditionalOptions> |
||||||
|
</AdditionalOptions> |
||||||
|
</TestAction> |
||||||
|
<LaunchAction |
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||||
|
launchStyle = "0" |
||||||
|
useCustomWorkingDirectory = "NO" |
||||||
|
ignoresPersistentStateOnLaunch = "NO" |
||||||
|
debugDocumentVersioning = "YES" |
||||||
|
debugServiceExtension = "internal" |
||||||
|
buildConfiguration = "Debug" |
||||||
|
allowLocationSimulation = "YES"> |
||||||
|
<AdditionalOptions> |
||||||
|
</AdditionalOptions> |
||||||
|
</LaunchAction> |
||||||
|
<ProfileAction |
||||||
|
savedToolIdentifier = "" |
||||||
|
useCustomWorkingDirectory = "NO" |
||||||
|
debugDocumentVersioning = "YES" |
||||||
|
buildConfiguration = "Release" |
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES"> |
||||||
|
</ProfileAction> |
||||||
|
<AnalyzeAction |
||||||
|
buildConfiguration = "Debug"> |
||||||
|
</AnalyzeAction> |
||||||
|
<ArchiveAction |
||||||
|
buildConfiguration = "Release" |
||||||
|
revealArchiveInOrganizer = "YES"> |
||||||
|
</ArchiveAction> |
||||||
|
</Scheme> |
@ -0,0 +1,60 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<Scheme |
||||||
|
LastUpgradeVersion = "1100" |
||||||
|
version = "1.3"> |
||||||
|
<BuildAction |
||||||
|
parallelizeBuildables = "YES" |
||||||
|
buildImplicitDependencies = "YES"> |
||||||
|
<BuildActionEntries> |
||||||
|
<BuildActionEntry |
||||||
|
buildForAnalyzing = "YES" |
||||||
|
buildForTesting = "YES" |
||||||
|
buildForRunning = "YES" |
||||||
|
buildForProfiling = "YES" |
||||||
|
buildForArchiving = "YES"> |
||||||
|
<BuildableReference |
||||||
|
BuildableIdentifier = "primary" |
||||||
|
BlueprintIdentifier = "FD2E8643412994484A50DA7D3BFB1EFC" |
||||||
|
BuildableName = "UMCAnalytics" |
||||||
|
BlueprintName = "UMCAnalytics" |
||||||
|
ReferencedContainer = "container:Pods.xcodeproj"> |
||||||
|
</BuildableReference> |
||||||
|
</BuildActionEntry> |
||||||
|
</BuildActionEntries> |
||||||
|
</BuildAction> |
||||||
|
<TestAction |
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES" |
||||||
|
buildConfiguration = "Debug"> |
||||||
|
<AdditionalOptions> |
||||||
|
</AdditionalOptions> |
||||||
|
</TestAction> |
||||||
|
<LaunchAction |
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||||
|
launchStyle = "0" |
||||||
|
useCustomWorkingDirectory = "NO" |
||||||
|
ignoresPersistentStateOnLaunch = "NO" |
||||||
|
debugDocumentVersioning = "YES" |
||||||
|
debugServiceExtension = "internal" |
||||||
|
buildConfiguration = "Debug" |
||||||
|
allowLocationSimulation = "YES"> |
||||||
|
<AdditionalOptions> |
||||||
|
</AdditionalOptions> |
||||||
|
</LaunchAction> |
||||||
|
<ProfileAction |
||||||
|
savedToolIdentifier = "" |
||||||
|
useCustomWorkingDirectory = "NO" |
||||||
|
debugDocumentVersioning = "YES" |
||||||
|
buildConfiguration = "Release" |
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES"> |
||||||
|
</ProfileAction> |
||||||
|
<AnalyzeAction |
||||||
|
buildConfiguration = "Debug"> |
||||||
|
</AnalyzeAction> |
||||||
|
<ArchiveAction |
||||||
|
buildConfiguration = "Release" |
||||||
|
revealArchiveInOrganizer = "YES"> |
||||||
|
</ArchiveAction> |
||||||
|
</Scheme> |
@ -0,0 +1,60 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<Scheme |
||||||
|
LastUpgradeVersion = "1100" |
||||||
|
version = "1.3"> |
||||||
|
<BuildAction |
||||||
|
parallelizeBuildables = "YES" |
||||||
|
buildImplicitDependencies = "YES"> |
||||||
|
<BuildActionEntries> |
||||||
|
<BuildActionEntry |
||||||
|
buildForAnalyzing = "YES" |
||||||
|
buildForTesting = "YES" |
||||||
|
buildForRunning = "YES" |
||||||
|
buildForProfiling = "YES" |
||||||
|
buildForArchiving = "YES"> |
||||||
|
<BuildableReference |
||||||
|
BuildableIdentifier = "primary" |
||||||
|
BlueprintIdentifier = "6F6B630FA5213AB083E7CEF1F986FE44" |
||||||
|
BuildableName = "UMCCommon" |
||||||
|
BlueprintName = "UMCCommon" |
||||||
|
ReferencedContainer = "container:Pods.xcodeproj"> |
||||||
|
</BuildableReference> |
||||||
|
</BuildActionEntry> |
||||||
|
</BuildActionEntries> |
||||||
|
</BuildAction> |
||||||
|
<TestAction |
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES" |
||||||
|
buildConfiguration = "Debug"> |
||||||
|
<AdditionalOptions> |
||||||
|
</AdditionalOptions> |
||||||
|
</TestAction> |
||||||
|
<LaunchAction |
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||||
|
launchStyle = "0" |
||||||
|
useCustomWorkingDirectory = "NO" |
||||||
|
ignoresPersistentStateOnLaunch = "NO" |
||||||
|
debugDocumentVersioning = "YES" |
||||||
|
debugServiceExtension = "internal" |
||||||
|
buildConfiguration = "Debug" |
||||||
|
allowLocationSimulation = "YES"> |
||||||
|
<AdditionalOptions> |
||||||
|
</AdditionalOptions> |
||||||
|
</LaunchAction> |
||||||
|
<ProfileAction |
||||||
|
savedToolIdentifier = "" |
||||||
|
useCustomWorkingDirectory = "NO" |
||||||
|
debugDocumentVersioning = "YES" |
||||||
|
buildConfiguration = "Release" |
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES"> |
||||||
|
</ProfileAction> |
||||||
|
<AnalyzeAction |
||||||
|
buildConfiguration = "Debug"> |
||||||
|
</AnalyzeAction> |
||||||
|
<ArchiveAction |
||||||
|
buildConfiguration = "Release" |
||||||
|
revealArchiveInOrganizer = "YES"> |
||||||
|
</ArchiveAction> |
||||||
|
</Scheme> |
@ -0,0 +1,60 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<Scheme |
||||||
|
LastUpgradeVersion = "1100" |
||||||
|
version = "1.3"> |
||||||
|
<BuildAction |
||||||
|
parallelizeBuildables = "YES" |
||||||
|
buildImplicitDependencies = "YES"> |
||||||
|
<BuildActionEntries> |
||||||
|
<BuildActionEntry |
||||||
|
buildForAnalyzing = "YES" |
||||||
|
buildForTesting = "YES" |
||||||
|
buildForRunning = "YES" |
||||||
|
buildForProfiling = "YES" |
||||||
|
buildForArchiving = "YES"> |
||||||
|
<BuildableReference |
||||||
|
BuildableIdentifier = "primary" |
||||||
|
BlueprintIdentifier = "8B5BB4D9C85FBB3B774B6C624239821A" |
||||||
|
BuildableName = "UMCSecurityPlugins" |
||||||
|
BlueprintName = "UMCSecurityPlugins" |
||||||
|
ReferencedContainer = "container:Pods.xcodeproj"> |
||||||
|
</BuildableReference> |
||||||
|
</BuildActionEntry> |
||||||
|
</BuildActionEntries> |
||||||
|
</BuildAction> |
||||||
|
<TestAction |
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES" |
||||||
|
buildConfiguration = "Debug"> |
||||||
|
<AdditionalOptions> |
||||||
|
</AdditionalOptions> |
||||||
|
</TestAction> |
||||||
|
<LaunchAction |
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||||
|
launchStyle = "0" |
||||||
|
useCustomWorkingDirectory = "NO" |
||||||
|
ignoresPersistentStateOnLaunch = "NO" |
||||||
|
debugDocumentVersioning = "YES" |
||||||
|
debugServiceExtension = "internal" |
||||||
|
buildConfiguration = "Debug" |
||||||
|
allowLocationSimulation = "YES"> |
||||||
|
<AdditionalOptions> |
||||||
|
</AdditionalOptions> |
||||||
|
</LaunchAction> |
||||||
|
<ProfileAction |
||||||
|
savedToolIdentifier = "" |
||||||
|
useCustomWorkingDirectory = "NO" |
||||||
|
debugDocumentVersioning = "YES" |
||||||
|
buildConfiguration = "Release" |
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES"> |
||||||
|
</ProfileAction> |
||||||
|
<AnalyzeAction |
||||||
|
buildConfiguration = "Debug"> |
||||||
|
</AnalyzeAction> |
||||||
|
<ArchiveAction |
||||||
|
buildConfiguration = "Release" |
||||||
|
revealArchiveInOrganizer = "YES"> |
||||||
|
</ArchiveAction> |
||||||
|
</Scheme> |
@ -0,0 +1,60 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<Scheme |
||||||
|
LastUpgradeVersion = "1100" |
||||||
|
version = "1.3"> |
||||||
|
<BuildAction |
||||||
|
parallelizeBuildables = "YES" |
||||||
|
buildImplicitDependencies = "YES"> |
||||||
|
<BuildActionEntries> |
||||||
|
<BuildActionEntry |
||||||
|
buildForAnalyzing = "YES" |
||||||
|
buildForTesting = "YES" |
||||||
|
buildForRunning = "YES" |
||||||
|
buildForProfiling = "YES" |
||||||
|
buildForArchiving = "YES"> |
||||||
|
<BuildableReference |
||||||
|
BuildableIdentifier = "primary" |
||||||
|
BlueprintIdentifier = "08797F46251C64100F721EEF64AAD344" |
||||||
|
BuildableName = "UMCShare" |
||||||
|
BlueprintName = "UMCShare" |
||||||
|
ReferencedContainer = "container:Pods.xcodeproj"> |
||||||
|
</BuildableReference> |
||||||
|
</BuildActionEntry> |
||||||
|
</BuildActionEntries> |
||||||
|
</BuildAction> |
||||||
|
<TestAction |
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES" |
||||||
|
buildConfiguration = "Debug"> |
||||||
|
<AdditionalOptions> |
||||||
|
</AdditionalOptions> |
||||||
|
</TestAction> |
||||||
|
<LaunchAction |
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||||
|
launchStyle = "0" |
||||||
|
useCustomWorkingDirectory = "NO" |
||||||
|
ignoresPersistentStateOnLaunch = "NO" |
||||||
|
debugDocumentVersioning = "YES" |
||||||
|
debugServiceExtension = "internal" |
||||||
|
buildConfiguration = "Debug" |
||||||
|
allowLocationSimulation = "YES"> |
||||||
|
<AdditionalOptions> |
||||||
|
</AdditionalOptions> |
||||||
|
</LaunchAction> |
||||||
|
<ProfileAction |
||||||
|
savedToolIdentifier = "" |
||||||
|
useCustomWorkingDirectory = "NO" |
||||||
|
debugDocumentVersioning = "YES" |
||||||
|
buildConfiguration = "Release" |
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES"> |
||||||
|
</ProfileAction> |
||||||
|
<AnalyzeAction |
||||||
|
buildConfiguration = "Debug"> |
||||||
|
</AnalyzeAction> |
||||||
|
<ArchiveAction |
||||||
|
buildConfiguration = "Release" |
||||||
|
revealArchiveInOrganizer = "YES"> |
||||||
|
</ArchiveAction> |
||||||
|
</Scheme> |
@ -0,0 +1,60 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<Scheme |
||||||
|
LastUpgradeVersion = "1100" |
||||||
|
version = "1.3"> |
||||||
|
<BuildAction |
||||||
|
parallelizeBuildables = "YES" |
||||||
|
buildImplicitDependencies = "YES"> |
||||||
|
<BuildActionEntries> |
||||||
|
<BuildActionEntry |
||||||
|
buildForAnalyzing = "YES" |
||||||
|
buildForTesting = "YES" |
||||||
|
buildForRunning = "YES" |
||||||
|
buildForProfiling = "YES" |
||||||
|
buildForArchiving = "YES"> |
||||||
|
<BuildableReference |
||||||
|
BuildableIdentifier = "primary" |
||||||
|
BlueprintIdentifier = "4EE958CD28D774381C5FB4F1281C4A49" |
||||||
|
BuildableName = "libXHLaunchAd.a" |
||||||
|
BlueprintName = "XHLaunchAd" |
||||||
|
ReferencedContainer = "container:Pods.xcodeproj"> |
||||||
|
</BuildableReference> |
||||||
|
</BuildActionEntry> |
||||||
|
</BuildActionEntries> |
||||||
|
</BuildAction> |
||||||
|
<TestAction |
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES" |
||||||
|
buildConfiguration = "Debug"> |
||||||
|
<AdditionalOptions> |
||||||
|
</AdditionalOptions> |
||||||
|
</TestAction> |
||||||
|
<LaunchAction |
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||||
|
launchStyle = "0" |
||||||
|
useCustomWorkingDirectory = "NO" |
||||||
|
ignoresPersistentStateOnLaunch = "NO" |
||||||
|
debugDocumentVersioning = "YES" |
||||||
|
debugServiceExtension = "internal" |
||||||
|
buildConfiguration = "Debug" |
||||||
|
allowLocationSimulation = "YES"> |
||||||
|
<AdditionalOptions> |
||||||
|
</AdditionalOptions> |
||||||
|
</LaunchAction> |
||||||
|
<ProfileAction |
||||||
|
savedToolIdentifier = "" |
||||||
|
useCustomWorkingDirectory = "NO" |
||||||
|
debugDocumentVersioning = "YES" |
||||||
|
buildConfiguration = "Release" |
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES"> |
||||||
|
</ProfileAction> |
||||||
|
<AnalyzeAction |
||||||
|
buildConfiguration = "Debug"> |
||||||
|
</AnalyzeAction> |
||||||
|
<ArchiveAction |
||||||
|
buildConfiguration = "Release" |
||||||
|
revealArchiveInOrganizer = "YES"> |
||||||
|
</ArchiveAction> |
||||||
|
</Scheme> |
@ -0,0 +1,60 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<Scheme |
||||||
|
LastUpgradeVersion = "1100" |
||||||
|
version = "1.3"> |
||||||
|
<BuildAction |
||||||
|
parallelizeBuildables = "YES" |
||||||
|
buildImplicitDependencies = "YES"> |
||||||
|
<BuildActionEntries> |
||||||
|
<BuildActionEntry |
||||||
|
buildForAnalyzing = "YES" |
||||||
|
buildForTesting = "YES" |
||||||
|
buildForRunning = "YES" |
||||||
|
buildForProfiling = "YES" |
||||||
|
buildForArchiving = "YES"> |
||||||
|
<BuildableReference |
||||||
|
BuildableIdentifier = "primary" |
||||||
|
BlueprintIdentifier = "80F536C18306828DCAB547A623142DA3" |
||||||
|
BuildableName = "libXHNetworkCache.a" |
||||||
|
BlueprintName = "XHNetworkCache" |
||||||
|
ReferencedContainer = "container:Pods.xcodeproj"> |
||||||
|
</BuildableReference> |
||||||
|
</BuildActionEntry> |
||||||
|
</BuildActionEntries> |
||||||
|
</BuildAction> |
||||||
|
<TestAction |
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES" |
||||||
|
buildConfiguration = "Debug"> |
||||||
|
<AdditionalOptions> |
||||||
|
</AdditionalOptions> |
||||||
|
</TestAction> |
||||||
|
<LaunchAction |
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||||
|
launchStyle = "0" |
||||||
|
useCustomWorkingDirectory = "NO" |
||||||
|
ignoresPersistentStateOnLaunch = "NO" |
||||||
|
debugDocumentVersioning = "YES" |
||||||
|
debugServiceExtension = "internal" |
||||||
|
buildConfiguration = "Debug" |
||||||
|
allowLocationSimulation = "YES"> |
||||||
|
<AdditionalOptions> |
||||||
|
</AdditionalOptions> |
||||||
|
</LaunchAction> |
||||||
|
<ProfileAction |
||||||
|
savedToolIdentifier = "" |
||||||
|
useCustomWorkingDirectory = "NO" |
||||||
|
debugDocumentVersioning = "YES" |
||||||
|
buildConfiguration = "Release" |
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES"> |
||||||
|
</ProfileAction> |
||||||
|
<AnalyzeAction |
||||||
|
buildConfiguration = "Debug"> |
||||||
|
</AnalyzeAction> |
||||||
|
<ArchiveAction |
||||||
|
buildConfiguration = "Release" |
||||||
|
revealArchiveInOrganizer = "YES"> |
||||||
|
</ArchiveAction> |
||||||
|
</Scheme> |
@ -0,0 +1,60 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<Scheme |
||||||
|
LastUpgradeVersion = "1100" |
||||||
|
version = "1.3"> |
||||||
|
<BuildAction |
||||||
|
parallelizeBuildables = "YES" |
||||||
|
buildImplicitDependencies = "YES"> |
||||||
|
<BuildActionEntries> |
||||||
|
<BuildActionEntry |
||||||
|
buildForAnalyzing = "YES" |
||||||
|
buildForTesting = "YES" |
||||||
|
buildForRunning = "YES" |
||||||
|
buildForProfiling = "YES" |
||||||
|
buildForArchiving = "YES"> |
||||||
|
<BuildableReference |
||||||
|
BuildableIdentifier = "primary" |
||||||
|
BlueprintIdentifier = "0015D99E4D861A08F3CD42DA521AEF40" |
||||||
|
BuildableName = "libYYKit.a" |
||||||
|
BlueprintName = "YYKit" |
||||||
|
ReferencedContainer = "container:Pods.xcodeproj"> |
||||||
|
</BuildableReference> |
||||||
|
</BuildActionEntry> |
||||||
|
</BuildActionEntries> |
||||||
|
</BuildAction> |
||||||
|
<TestAction |
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES" |
||||||
|
buildConfiguration = "Debug"> |
||||||
|
<AdditionalOptions> |
||||||
|
</AdditionalOptions> |
||||||
|
</TestAction> |
||||||
|
<LaunchAction |
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||||
|
launchStyle = "0" |
||||||
|
useCustomWorkingDirectory = "NO" |
||||||
|
ignoresPersistentStateOnLaunch = "NO" |
||||||
|
debugDocumentVersioning = "YES" |
||||||
|
debugServiceExtension = "internal" |
||||||
|
buildConfiguration = "Debug" |
||||||
|
allowLocationSimulation = "YES"> |
||||||
|
<AdditionalOptions> |
||||||
|
</AdditionalOptions> |
||||||
|
</LaunchAction> |
||||||
|
<ProfileAction |
||||||
|
savedToolIdentifier = "" |
||||||
|
useCustomWorkingDirectory = "NO" |
||||||
|
debugDocumentVersioning = "YES" |
||||||
|
buildConfiguration = "Release" |
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES"> |
||||||
|
</ProfileAction> |
||||||
|
<AnalyzeAction |
||||||
|
buildConfiguration = "Debug"> |
||||||
|
</AnalyzeAction> |
||||||
|
<ArchiveAction |
||||||
|
buildConfiguration = "Release" |
||||||
|
revealArchiveInOrganizer = "YES"> |
||||||
|
</ArchiveAction> |
||||||
|
</Scheme> |
@ -0,0 +1,60 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<Scheme |
||||||
|
LastUpgradeVersion = "1100" |
||||||
|
version = "1.3"> |
||||||
|
<BuildAction |
||||||
|
parallelizeBuildables = "YES" |
||||||
|
buildImplicitDependencies = "YES"> |
||||||
|
<BuildActionEntries> |
||||||
|
<BuildActionEntry |
||||||
|
buildForAnalyzing = "YES" |
||||||
|
buildForTesting = "YES" |
||||||
|
buildForRunning = "YES" |
||||||
|
buildForProfiling = "YES" |
||||||
|
buildForArchiving = "YES"> |
||||||
|
<BuildableReference |
||||||
|
BuildableIdentifier = "primary" |
||||||
|
BlueprintIdentifier = "0483D7F620C992E5C4BD62A7266EABB4" |
||||||
|
BuildableName = "libpop.a" |
||||||
|
BlueprintName = "pop" |
||||||
|
ReferencedContainer = "container:Pods.xcodeproj"> |
||||||
|
</BuildableReference> |
||||||
|
</BuildActionEntry> |
||||||
|
</BuildActionEntries> |
||||||
|
</BuildAction> |
||||||
|
<TestAction |
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES" |
||||||
|
buildConfiguration = "Debug"> |
||||||
|
<AdditionalOptions> |
||||||
|
</AdditionalOptions> |
||||||
|
</TestAction> |
||||||
|
<LaunchAction |
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||||
|
launchStyle = "0" |
||||||
|
useCustomWorkingDirectory = "NO" |
||||||
|
ignoresPersistentStateOnLaunch = "NO" |
||||||
|
debugDocumentVersioning = "YES" |
||||||
|
debugServiceExtension = "internal" |
||||||
|
buildConfiguration = "Debug" |
||||||
|
allowLocationSimulation = "YES"> |
||||||
|
<AdditionalOptions> |
||||||
|
</AdditionalOptions> |
||||||
|
</LaunchAction> |
||||||
|
<ProfileAction |
||||||
|
savedToolIdentifier = "" |
||||||
|
useCustomWorkingDirectory = "NO" |
||||||
|
debugDocumentVersioning = "YES" |
||||||
|
buildConfiguration = "Release" |
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES"> |
||||||
|
</ProfileAction> |
||||||
|
<AnalyzeAction |
||||||
|
buildConfiguration = "Debug"> |
||||||
|
</AnalyzeAction> |
||||||
|
<ArchiveAction |
||||||
|
buildConfiguration = "Release" |
||||||
|
revealArchiveInOrganizer = "YES"> |
||||||
|
</ArchiveAction> |
||||||
|
</Scheme> |
@ -0,0 +1,81 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> |
||||||
|
<plist version="1.0"> |
||||||
|
<dict> |
||||||
|
<key>SchemeUserState</key> |
||||||
|
<dict> |
||||||
|
<key>AFNetworking.xcscheme</key> |
||||||
|
<dict> |
||||||
|
<key>isShown</key> |
||||||
|
<false/> |
||||||
|
</dict> |
||||||
|
<key>Bugly.xcscheme</key> |
||||||
|
<dict> |
||||||
|
<key>isShown</key> |
||||||
|
<false/> |
||||||
|
</dict> |
||||||
|
<key>FLAnimatedImage.xcscheme</key> |
||||||
|
<dict> |
||||||
|
<key>isShown</key> |
||||||
|
<false/> |
||||||
|
</dict> |
||||||
|
<key>Masonry.xcscheme</key> |
||||||
|
<dict> |
||||||
|
<key>isShown</key> |
||||||
|
<false/> |
||||||
|
</dict> |
||||||
|
<key>Pods-WXReader.xcscheme</key> |
||||||
|
<dict> |
||||||
|
<key>isShown</key> |
||||||
|
<false/> |
||||||
|
</dict> |
||||||
|
<key>UITableView+FDTemplateLayoutCell.xcscheme</key> |
||||||
|
<dict> |
||||||
|
<key>isShown</key> |
||||||
|
<false/> |
||||||
|
</dict> |
||||||
|
<key>UMCAnalytics.xcscheme</key> |
||||||
|
<dict> |
||||||
|
<key>isShown</key> |
||||||
|
<false/> |
||||||
|
</dict> |
||||||
|
<key>UMCCommon.xcscheme</key> |
||||||
|
<dict> |
||||||
|
<key>isShown</key> |
||||||
|
<false/> |
||||||
|
</dict> |
||||||
|
<key>UMCSecurityPlugins.xcscheme</key> |
||||||
|
<dict> |
||||||
|
<key>isShown</key> |
||||||
|
<false/> |
||||||
|
</dict> |
||||||
|
<key>UMCShare.xcscheme</key> |
||||||
|
<dict> |
||||||
|
<key>isShown</key> |
||||||
|
<false/> |
||||||
|
</dict> |
||||||
|
<key>XHLaunchAd.xcscheme</key> |
||||||
|
<dict> |
||||||
|
<key>isShown</key> |
||||||
|
<false/> |
||||||
|
</dict> |
||||||
|
<key>XHNetworkCache.xcscheme</key> |
||||||
|
<dict> |
||||||
|
<key>isShown</key> |
||||||
|
<false/> |
||||||
|
</dict> |
||||||
|
<key>YYKit.xcscheme</key> |
||||||
|
<dict> |
||||||
|
<key>isShown</key> |
||||||
|
<false/> |
||||||
|
</dict> |
||||||
|
<key>pop.xcscheme</key> |
||||||
|
<dict> |
||||||
|
<key>isShown</key> |
||||||
|
<false/> |
||||||
|
</dict> |
||||||
|
</dict> |
||||||
|
<key>SuppressBuildableAutocreation</key> |
||||||
|
<dict/> |
||||||
|
</dict> |
||||||
|
</plist> |
@ -0,0 +1,109 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> |
||||||
|
<plist version="1.0"> |
||||||
|
<dict> |
||||||
|
<key>SchemeUserState</key> |
||||||
|
<dict> |
||||||
|
<key>AFNetworking.xcscheme_^#shared#^_</key> |
||||||
|
<dict> |
||||||
|
<key>orderHint</key> |
||||||
|
<integer>18</integer> |
||||||
|
</dict> |
||||||
|
<key>AppAuth.xcscheme_^#shared#^_</key> |
||||||
|
<dict> |
||||||
|
<key>orderHint</key> |
||||||
|
<integer>15</integer> |
||||||
|
</dict> |
||||||
|
<key>Bugly.xcscheme_^#shared#^_</key> |
||||||
|
<dict> |
||||||
|
<key>orderHint</key> |
||||||
|
<integer>14</integer> |
||||||
|
</dict> |
||||||
|
<key>GTMAppAuth.xcscheme_^#shared#^_</key> |
||||||
|
<dict> |
||||||
|
<key>orderHint</key> |
||||||
|
<integer>2</integer> |
||||||
|
</dict> |
||||||
|
<key>GTMSessionFetcher.xcscheme_^#shared#^_</key> |
||||||
|
<dict> |
||||||
|
<key>orderHint</key> |
||||||
|
<integer>1</integer> |
||||||
|
</dict> |
||||||
|
<key>GoogleSignIn.xcscheme_^#shared#^_</key> |
||||||
|
<dict> |
||||||
|
<key>orderHint</key> |
||||||
|
<integer>10</integer> |
||||||
|
</dict> |
||||||
|
<key>MOBFoundation.xcscheme_^#shared#^_</key> |
||||||
|
<dict> |
||||||
|
<key>orderHint</key> |
||||||
|
<integer>11</integer> |
||||||
|
</dict> |
||||||
|
<key>Masonry.xcscheme_^#shared#^_</key> |
||||||
|
<dict> |
||||||
|
<key>orderHint</key> |
||||||
|
<integer>16</integer> |
||||||
|
</dict> |
||||||
|
<key>Pods-WXReader.xcscheme_^#shared#^_</key> |
||||||
|
<dict> |
||||||
|
<key>orderHint</key> |
||||||
|
<integer>19</integer> |
||||||
|
</dict> |
||||||
|
<key>Reveal-SDK.xcscheme_^#shared#^_</key> |
||||||
|
<dict> |
||||||
|
<key>orderHint</key> |
||||||
|
<integer>12</integer> |
||||||
|
</dict> |
||||||
|
<key>UMCAnalytics.xcscheme_^#shared#^_</key> |
||||||
|
<dict> |
||||||
|
<key>orderHint</key> |
||||||
|
<integer>9</integer> |
||||||
|
</dict> |
||||||
|
<key>UMCCommon.xcscheme_^#shared#^_</key> |
||||||
|
<dict> |
||||||
|
<key>orderHint</key> |
||||||
|
<integer>8</integer> |
||||||
|
</dict> |
||||||
|
<key>UMCSecurityPlugins.xcscheme_^#shared#^_</key> |
||||||
|
<dict> |
||||||
|
<key>orderHint</key> |
||||||
|
<integer>6</integer> |
||||||
|
</dict> |
||||||
|
<key>XHNetworkCache.xcscheme_^#shared#^_</key> |
||||||
|
<dict> |
||||||
|
<key>orderHint</key> |
||||||
|
<integer>3</integer> |
||||||
|
</dict> |
||||||
|
<key>YYKit.xcscheme_^#shared#^_</key> |
||||||
|
<dict> |
||||||
|
<key>orderHint</key> |
||||||
|
<integer>13</integer> |
||||||
|
</dict> |
||||||
|
<key>mob_pushsdk.xcscheme_^#shared#^_</key> |
||||||
|
<dict> |
||||||
|
<key>orderHint</key> |
||||||
|
<integer>17</integer> |
||||||
|
</dict> |
||||||
|
<key>mob_sharesdk-ShareSDK.xcscheme_^#shared#^_</key> |
||||||
|
<dict> |
||||||
|
<key>orderHint</key> |
||||||
|
<integer>5</integer> |
||||||
|
</dict> |
||||||
|
<key>mob_sharesdk-ShareSDK_JS_Facebook.xcscheme_^#shared#^_</key> |
||||||
|
<dict> |
||||||
|
<key>orderHint</key> |
||||||
|
<integer>7</integer> |
||||||
|
</dict> |
||||||
|
<key>mob_sharesdk.xcscheme_^#shared#^_</key> |
||||||
|
<dict> |
||||||
|
<key>orderHint</key> |
||||||
|
<integer>4</integer> |
||||||
|
</dict> |
||||||
|
<key>pop.xcscheme_^#shared#^_</key> |
||||||
|
<dict> |
||||||
|
<key>orderHint</key> |
||||||
|
<integer>20</integer> |
||||||
|
</dict> |
||||||
|
</dict> |
||||||
|
</dict> |
||||||
|
</plist> |
@ -0,0 +1,60 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<Scheme |
||||||
|
LastUpgradeVersion = "1100" |
||||||
|
version = "1.3"> |
||||||
|
<BuildAction |
||||||
|
parallelizeBuildables = "YES" |
||||||
|
buildImplicitDependencies = "YES"> |
||||||
|
<BuildActionEntries> |
||||||
|
<BuildActionEntry |
||||||
|
buildForAnalyzing = "YES" |
||||||
|
buildForTesting = "YES" |
||||||
|
buildForRunning = "YES" |
||||||
|
buildForProfiling = "YES" |
||||||
|
buildForArchiving = "YES"> |
||||||
|
<BuildableReference |
||||||
|
BuildableIdentifier = "primary" |
||||||
|
BlueprintIdentifier = "0130B3724283586C0E9D2A112D4F2AA1" |
||||||
|
BuildableName = "libAFNetworking.a" |
||||||
|
BlueprintName = "AFNetworking" |
||||||
|
ReferencedContainer = "container:Pods.xcodeproj"> |
||||||
|
</BuildableReference> |
||||||
|
</BuildActionEntry> |
||||||
|
</BuildActionEntries> |
||||||
|
</BuildAction> |
||||||
|
<TestAction |
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES" |
||||||
|
buildConfiguration = "Debug"> |
||||||
|
<AdditionalOptions> |
||||||
|
</AdditionalOptions> |
||||||
|
</TestAction> |
||||||
|
<LaunchAction |
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||||
|
launchStyle = "0" |
||||||
|
useCustomWorkingDirectory = "NO" |
||||||
|
ignoresPersistentStateOnLaunch = "NO" |
||||||
|
debugDocumentVersioning = "YES" |
||||||
|
debugServiceExtension = "internal" |
||||||
|
buildConfiguration = "Debug" |
||||||
|
allowLocationSimulation = "YES"> |
||||||
|
<AdditionalOptions> |
||||||
|
</AdditionalOptions> |
||||||
|
</LaunchAction> |
||||||
|
<ProfileAction |
||||||
|
savedToolIdentifier = "" |
||||||
|
useCustomWorkingDirectory = "NO" |
||||||
|
debugDocumentVersioning = "YES" |
||||||
|
buildConfiguration = "Release" |
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES"> |
||||||
|
</ProfileAction> |
||||||
|
<AnalyzeAction |
||||||
|
buildConfiguration = "Debug"> |
||||||
|
</AnalyzeAction> |
||||||
|
<ArchiveAction |
||||||
|
buildConfiguration = "Release" |
||||||
|
revealArchiveInOrganizer = "YES"> |
||||||
|
</ArchiveAction> |
||||||
|
</Scheme> |
@ -0,0 +1,60 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<Scheme |
||||||
|
LastUpgradeVersion = "1100" |
||||||
|
version = "1.3"> |
||||||
|
<BuildAction |
||||||
|
parallelizeBuildables = "YES" |
||||||
|
buildImplicitDependencies = "YES"> |
||||||
|
<BuildActionEntries> |
||||||
|
<BuildActionEntry |
||||||
|
buildForAnalyzing = "YES" |
||||||
|
buildForTesting = "YES" |
||||||
|
buildForRunning = "YES" |
||||||
|
buildForProfiling = "YES" |
||||||
|
buildForArchiving = "YES"> |
||||||
|
<BuildableReference |
||||||
|
BuildableIdentifier = "primary" |
||||||
|
BlueprintIdentifier = "4A68CFD979D413A619DF631BB121D98F" |
||||||
|
BuildableName = "Bugly" |
||||||
|
BlueprintName = "Bugly" |
||||||
|
ReferencedContainer = "container:Pods.xcodeproj"> |
||||||
|
</BuildableReference> |
||||||
|
</BuildActionEntry> |
||||||
|
</BuildActionEntries> |
||||||
|
</BuildAction> |
||||||
|
<TestAction |
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES" |
||||||
|
buildConfiguration = "Debug"> |
||||||
|
<AdditionalOptions> |
||||||
|
</AdditionalOptions> |
||||||
|
</TestAction> |
||||||
|
<LaunchAction |
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||||
|
launchStyle = "0" |
||||||
|
useCustomWorkingDirectory = "NO" |
||||||
|
ignoresPersistentStateOnLaunch = "NO" |
||||||
|
debugDocumentVersioning = "YES" |
||||||
|
debugServiceExtension = "internal" |
||||||
|
buildConfiguration = "Debug" |
||||||
|
allowLocationSimulation = "YES"> |
||||||
|
<AdditionalOptions> |
||||||
|
</AdditionalOptions> |
||||||
|
</LaunchAction> |
||||||
|
<ProfileAction |
||||||
|
savedToolIdentifier = "" |
||||||
|
useCustomWorkingDirectory = "NO" |
||||||
|
debugDocumentVersioning = "YES" |
||||||
|
buildConfiguration = "Release" |
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES"> |
||||||
|
</ProfileAction> |
||||||
|
<AnalyzeAction |
||||||
|
buildConfiguration = "Debug"> |
||||||
|
</AnalyzeAction> |
||||||
|
<ArchiveAction |
||||||
|
buildConfiguration = "Release" |
||||||
|
revealArchiveInOrganizer = "YES"> |
||||||
|
</ArchiveAction> |
||||||
|
</Scheme> |
@ -0,0 +1,60 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<Scheme |
||||||
|
LastUpgradeVersion = "1100" |
||||||
|
version = "1.3"> |
||||||
|
<BuildAction |
||||||
|
parallelizeBuildables = "YES" |
||||||
|
buildImplicitDependencies = "YES"> |
||||||
|
<BuildActionEntries> |
||||||
|
<BuildActionEntry |
||||||
|
buildForAnalyzing = "YES" |
||||||
|
buildForTesting = "YES" |
||||||
|
buildForRunning = "YES" |
||||||
|
buildForProfiling = "YES" |
||||||
|
buildForArchiving = "YES"> |
||||||
|
<BuildableReference |
||||||
|
BuildableIdentifier = "primary" |
||||||
|
BlueprintIdentifier = "55AF53E6C77A10ED4985E04D74A8878E" |
||||||
|
BuildableName = "libMasonry.a" |
||||||
|
BlueprintName = "Masonry" |
||||||
|
ReferencedContainer = "container:Pods.xcodeproj"> |
||||||
|
</BuildableReference> |
||||||
|
</BuildActionEntry> |
||||||
|
</BuildActionEntries> |
||||||
|
</BuildAction> |
||||||
|
<TestAction |
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES" |
||||||
|
buildConfiguration = "Debug"> |
||||||
|
<AdditionalOptions> |
||||||
|
</AdditionalOptions> |
||||||
|
</TestAction> |
||||||
|
<LaunchAction |
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||||
|
launchStyle = "0" |
||||||
|
useCustomWorkingDirectory = "NO" |
||||||
|
ignoresPersistentStateOnLaunch = "NO" |
||||||
|
debugDocumentVersioning = "YES" |
||||||
|
debugServiceExtension = "internal" |
||||||
|
buildConfiguration = "Debug" |
||||||
|
allowLocationSimulation = "YES"> |
||||||
|
<AdditionalOptions> |
||||||
|
</AdditionalOptions> |
||||||
|
</LaunchAction> |
||||||
|
<ProfileAction |
||||||
|
savedToolIdentifier = "" |
||||||
|
useCustomWorkingDirectory = "NO" |
||||||
|
debugDocumentVersioning = "YES" |
||||||
|
buildConfiguration = "Release" |
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES"> |
||||||
|
</ProfileAction> |
||||||
|
<AnalyzeAction |
||||||
|
buildConfiguration = "Debug"> |
||||||
|
</AnalyzeAction> |
||||||
|
<ArchiveAction |
||||||
|
buildConfiguration = "Release" |
||||||
|
revealArchiveInOrganizer = "YES"> |
||||||
|
</ArchiveAction> |
||||||
|
</Scheme> |
@ -0,0 +1,60 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<Scheme |
||||||
|
LastUpgradeVersion = "1100" |
||||||
|
version = "1.3"> |
||||||
|
<BuildAction |
||||||
|
parallelizeBuildables = "YES" |
||||||
|
buildImplicitDependencies = "YES"> |
||||||
|
<BuildActionEntries> |
||||||
|
<BuildActionEntry |
||||||
|
buildForAnalyzing = "YES" |
||||||
|
buildForTesting = "YES" |
||||||
|
buildForRunning = "YES" |
||||||
|
buildForProfiling = "YES" |
||||||
|
buildForArchiving = "YES"> |
||||||
|
<BuildableReference |
||||||
|
BuildableIdentifier = "primary" |
||||||
|
BlueprintIdentifier = "4B97CCAAA2A8F1590093B5FA1B2BF668" |
||||||
|
BuildableName = "libPods-WXReader.a" |
||||||
|
BlueprintName = "Pods-WXReader" |
||||||
|
ReferencedContainer = "container:Pods.xcodeproj"> |
||||||
|
</BuildableReference> |
||||||
|
</BuildActionEntry> |
||||||
|
</BuildActionEntries> |
||||||
|
</BuildAction> |
||||||
|
<TestAction |
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES" |
||||||
|
buildConfiguration = "Debug"> |
||||||
|
<AdditionalOptions> |
||||||
|
</AdditionalOptions> |
||||||
|
</TestAction> |
||||||
|
<LaunchAction |
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||||
|
launchStyle = "0" |
||||||
|
useCustomWorkingDirectory = "NO" |
||||||
|
ignoresPersistentStateOnLaunch = "NO" |
||||||
|
debugDocumentVersioning = "YES" |
||||||
|
debugServiceExtension = "internal" |
||||||
|
buildConfiguration = "Debug" |
||||||
|
allowLocationSimulation = "YES"> |
||||||
|
<AdditionalOptions> |
||||||
|
</AdditionalOptions> |
||||||
|
</LaunchAction> |
||||||
|
<ProfileAction |
||||||
|
savedToolIdentifier = "" |
||||||
|
useCustomWorkingDirectory = "NO" |
||||||
|
debugDocumentVersioning = "YES" |
||||||
|
buildConfiguration = "Release" |
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES"> |
||||||
|
</ProfileAction> |
||||||
|
<AnalyzeAction |
||||||
|
buildConfiguration = "Debug"> |
||||||
|
</AnalyzeAction> |
||||||
|
<ArchiveAction |
||||||
|
buildConfiguration = "Release" |
||||||
|
revealArchiveInOrganizer = "YES"> |
||||||
|
</ArchiveAction> |
||||||
|
</Scheme> |
@ -0,0 +1,60 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<Scheme |
||||||
|
LastUpgradeVersion = "1100" |
||||||
|
version = "1.3"> |
||||||
|
<BuildAction |
||||||
|
parallelizeBuildables = "YES" |
||||||
|
buildImplicitDependencies = "YES"> |
||||||
|
<BuildActionEntries> |
||||||
|
<BuildActionEntry |
||||||
|
buildForAnalyzing = "YES" |
||||||
|
buildForTesting = "YES" |
||||||
|
buildForRunning = "YES" |
||||||
|
buildForProfiling = "YES" |
||||||
|
buildForArchiving = "YES"> |
||||||
|
<BuildableReference |
||||||
|
BuildableIdentifier = "primary" |
||||||
|
BlueprintIdentifier = "DD0B0FC4388FC5A75BAC950EECAB2864" |
||||||
|
BuildableName = "Reveal-SDK" |
||||||
|
BlueprintName = "Reveal-SDK" |
||||||
|
ReferencedContainer = "container:Pods.xcodeproj"> |
||||||
|
</BuildableReference> |
||||||
|
</BuildActionEntry> |
||||||
|
</BuildActionEntries> |
||||||
|
</BuildAction> |
||||||
|
<TestAction |
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES" |
||||||
|
buildConfiguration = "Debug"> |
||||||
|
<AdditionalOptions> |
||||||
|
</AdditionalOptions> |
||||||
|
</TestAction> |
||||||
|
<LaunchAction |
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||||
|
launchStyle = "0" |
||||||
|
useCustomWorkingDirectory = "NO" |
||||||
|
ignoresPersistentStateOnLaunch = "NO" |
||||||
|
debugDocumentVersioning = "YES" |
||||||
|
debugServiceExtension = "internal" |
||||||
|
buildConfiguration = "Debug" |
||||||
|
allowLocationSimulation = "YES"> |
||||||
|
<AdditionalOptions> |
||||||
|
</AdditionalOptions> |
||||||
|
</LaunchAction> |
||||||
|
<ProfileAction |
||||||
|
savedToolIdentifier = "" |
||||||
|
useCustomWorkingDirectory = "NO" |
||||||
|
debugDocumentVersioning = "YES" |
||||||
|
buildConfiguration = "Release" |
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES"> |
||||||
|
</ProfileAction> |
||||||
|
<AnalyzeAction |
||||||
|
buildConfiguration = "Debug"> |
||||||
|
</AnalyzeAction> |
||||||
|
<ArchiveAction |
||||||
|
buildConfiguration = "Release" |
||||||
|
revealArchiveInOrganizer = "YES"> |
||||||
|
</ArchiveAction> |
||||||
|
</Scheme> |
@ -0,0 +1,60 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<Scheme |
||||||
|
LastUpgradeVersion = "1100" |
||||||
|
version = "1.3"> |
||||||
|
<BuildAction |
||||||
|
parallelizeBuildables = "YES" |
||||||
|
buildImplicitDependencies = "YES"> |
||||||
|
<BuildActionEntries> |
||||||
|
<BuildActionEntry |
||||||
|
buildForAnalyzing = "YES" |
||||||
|
buildForTesting = "YES" |
||||||
|
buildForRunning = "YES" |
||||||
|
buildForProfiling = "YES" |
||||||
|
buildForArchiving = "YES"> |
||||||
|
<BuildableReference |
||||||
|
BuildableIdentifier = "primary" |
||||||
|
BlueprintIdentifier = "FD2E8643412994484A50DA7D3BFB1EFC" |
||||||
|
BuildableName = "UMCAnalytics" |
||||||
|
BlueprintName = "UMCAnalytics" |
||||||
|
ReferencedContainer = "container:Pods.xcodeproj"> |
||||||
|
</BuildableReference> |
||||||
|
</BuildActionEntry> |
||||||
|
</BuildActionEntries> |
||||||
|
</BuildAction> |
||||||
|
<TestAction |
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES" |
||||||
|
buildConfiguration = "Debug"> |
||||||
|
<AdditionalOptions> |
||||||
|
</AdditionalOptions> |
||||||
|
</TestAction> |
||||||
|
<LaunchAction |
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||||
|
launchStyle = "0" |
||||||
|
useCustomWorkingDirectory = "NO" |
||||||
|
ignoresPersistentStateOnLaunch = "NO" |
||||||
|
debugDocumentVersioning = "YES" |
||||||
|
debugServiceExtension = "internal" |
||||||
|
buildConfiguration = "Debug" |
||||||
|
allowLocationSimulation = "YES"> |
||||||
|
<AdditionalOptions> |
||||||
|
</AdditionalOptions> |
||||||
|
</LaunchAction> |
||||||
|
<ProfileAction |
||||||
|
savedToolIdentifier = "" |
||||||
|
useCustomWorkingDirectory = "NO" |
||||||
|
debugDocumentVersioning = "YES" |
||||||
|
buildConfiguration = "Release" |
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES"> |
||||||
|
</ProfileAction> |
||||||
|
<AnalyzeAction |
||||||
|
buildConfiguration = "Debug"> |
||||||
|
</AnalyzeAction> |
||||||
|
<ArchiveAction |
||||||
|
buildConfiguration = "Release" |
||||||
|
revealArchiveInOrganizer = "YES"> |
||||||
|
</ArchiveAction> |
||||||
|
</Scheme> |
@ -0,0 +1,60 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<Scheme |
||||||
|
LastUpgradeVersion = "1100" |
||||||
|
version = "1.3"> |
||||||
|
<BuildAction |
||||||
|
parallelizeBuildables = "YES" |
||||||
|
buildImplicitDependencies = "YES"> |
||||||
|
<BuildActionEntries> |
||||||
|
<BuildActionEntry |
||||||
|
buildForAnalyzing = "YES" |
||||||
|
buildForTesting = "YES" |
||||||
|
buildForRunning = "YES" |
||||||
|
buildForProfiling = "YES" |
||||||
|
buildForArchiving = "YES"> |
||||||
|
<BuildableReference |
||||||
|
BuildableIdentifier = "primary" |
||||||
|
BlueprintIdentifier = "6F6B630FA5213AB083E7CEF1F986FE44" |
||||||
|
BuildableName = "UMCCommon" |
||||||
|
BlueprintName = "UMCCommon" |
||||||
|
ReferencedContainer = "container:Pods.xcodeproj"> |
||||||
|
</BuildableReference> |
||||||
|
</BuildActionEntry> |
||||||
|
</BuildActionEntries> |
||||||
|
</BuildAction> |
||||||
|
<TestAction |
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES" |
||||||
|
buildConfiguration = "Debug"> |
||||||
|
<AdditionalOptions> |
||||||
|
</AdditionalOptions> |
||||||
|
</TestAction> |
||||||
|
<LaunchAction |
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||||
|
launchStyle = "0" |
||||||
|
useCustomWorkingDirectory = "NO" |
||||||
|
ignoresPersistentStateOnLaunch = "NO" |
||||||
|
debugDocumentVersioning = "YES" |
||||||
|
debugServiceExtension = "internal" |
||||||
|
buildConfiguration = "Debug" |
||||||
|
allowLocationSimulation = "YES"> |
||||||
|
<AdditionalOptions> |
||||||
|
</AdditionalOptions> |
||||||
|
</LaunchAction> |
||||||
|
<ProfileAction |
||||||
|
savedToolIdentifier = "" |
||||||
|
useCustomWorkingDirectory = "NO" |
||||||
|
debugDocumentVersioning = "YES" |
||||||
|
buildConfiguration = "Release" |
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES"> |
||||||
|
</ProfileAction> |
||||||
|
<AnalyzeAction |
||||||
|
buildConfiguration = "Debug"> |
||||||
|
</AnalyzeAction> |
||||||
|
<ArchiveAction |
||||||
|
buildConfiguration = "Release" |
||||||
|
revealArchiveInOrganizer = "YES"> |
||||||
|
</ArchiveAction> |
||||||
|
</Scheme> |
@ -0,0 +1,60 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<Scheme |
||||||
|
LastUpgradeVersion = "1100" |
||||||
|
version = "1.3"> |
||||||
|
<BuildAction |
||||||
|
parallelizeBuildables = "YES" |
||||||
|
buildImplicitDependencies = "YES"> |
||||||
|
<BuildActionEntries> |
||||||
|
<BuildActionEntry |
||||||
|
buildForAnalyzing = "YES" |
||||||
|
buildForTesting = "YES" |
||||||
|
buildForRunning = "YES" |
||||||
|
buildForProfiling = "YES" |
||||||
|
buildForArchiving = "YES"> |
||||||
|
<BuildableReference |
||||||
|
BuildableIdentifier = "primary" |
||||||
|
BlueprintIdentifier = "8B5BB4D9C85FBB3B774B6C624239821A" |
||||||
|
BuildableName = "UMCSecurityPlugins" |
||||||
|
BlueprintName = "UMCSecurityPlugins" |
||||||
|
ReferencedContainer = "container:Pods.xcodeproj"> |
||||||
|
</BuildableReference> |
||||||
|
</BuildActionEntry> |
||||||
|
</BuildActionEntries> |
||||||
|
</BuildAction> |
||||||
|
<TestAction |
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES" |
||||||
|
buildConfiguration = "Debug"> |
||||||
|
<AdditionalOptions> |
||||||
|
</AdditionalOptions> |
||||||
|
</TestAction> |
||||||
|
<LaunchAction |
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||||
|
launchStyle = "0" |
||||||
|
useCustomWorkingDirectory = "NO" |
||||||
|
ignoresPersistentStateOnLaunch = "NO" |
||||||
|
debugDocumentVersioning = "YES" |
||||||
|
debugServiceExtension = "internal" |
||||||
|
buildConfiguration = "Debug" |
||||||
|
allowLocationSimulation = "YES"> |
||||||
|
<AdditionalOptions> |
||||||
|
</AdditionalOptions> |
||||||
|
</LaunchAction> |
||||||
|
<ProfileAction |
||||||
|
savedToolIdentifier = "" |
||||||
|
useCustomWorkingDirectory = "NO" |
||||||
|
debugDocumentVersioning = "YES" |
||||||
|
buildConfiguration = "Release" |
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES"> |
||||||
|
</ProfileAction> |
||||||
|
<AnalyzeAction |
||||||
|
buildConfiguration = "Debug"> |
||||||
|
</AnalyzeAction> |
||||||
|
<ArchiveAction |
||||||
|
buildConfiguration = "Release" |
||||||
|
revealArchiveInOrganizer = "YES"> |
||||||
|
</ArchiveAction> |
||||||
|
</Scheme> |
@ -0,0 +1,60 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<Scheme |
||||||
|
LastUpgradeVersion = "1100" |
||||||
|
version = "1.3"> |
||||||
|
<BuildAction |
||||||
|
parallelizeBuildables = "YES" |
||||||
|
buildImplicitDependencies = "YES"> |
||||||
|
<BuildActionEntries> |
||||||
|
<BuildActionEntry |
||||||
|
buildForAnalyzing = "YES" |
||||||
|
buildForTesting = "YES" |
||||||
|
buildForRunning = "YES" |
||||||
|
buildForProfiling = "YES" |
||||||
|
buildForArchiving = "YES"> |
||||||
|
<BuildableReference |
||||||
|
BuildableIdentifier = "primary" |
||||||
|
BlueprintIdentifier = "08797F46251C64100F721EEF64AAD344" |
||||||
|
BuildableName = "UMCShare" |
||||||
|
BlueprintName = "UMCShare" |
||||||
|
ReferencedContainer = "container:Pods.xcodeproj"> |
||||||
|
</BuildableReference> |
||||||
|
</BuildActionEntry> |
||||||
|
</BuildActionEntries> |
||||||
|
</BuildAction> |
||||||
|
<TestAction |
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES" |
||||||
|
buildConfiguration = "Debug"> |
||||||
|
<AdditionalOptions> |
||||||
|
</AdditionalOptions> |
||||||
|
</TestAction> |
||||||
|
<LaunchAction |
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||||
|
launchStyle = "0" |
||||||
|
useCustomWorkingDirectory = "NO" |
||||||
|
ignoresPersistentStateOnLaunch = "NO" |
||||||
|
debugDocumentVersioning = "YES" |
||||||
|
debugServiceExtension = "internal" |
||||||
|
buildConfiguration = "Debug" |
||||||
|
allowLocationSimulation = "YES"> |
||||||
|
<AdditionalOptions> |
||||||
|
</AdditionalOptions> |
||||||
|
</LaunchAction> |
||||||
|
<ProfileAction |
||||||
|
savedToolIdentifier = "" |
||||||
|
useCustomWorkingDirectory = "NO" |
||||||
|
debugDocumentVersioning = "YES" |
||||||
|
buildConfiguration = "Release" |
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES"> |
||||||
|
</ProfileAction> |
||||||
|
<AnalyzeAction |
||||||
|
buildConfiguration = "Debug"> |
||||||
|
</AnalyzeAction> |
||||||
|
<ArchiveAction |
||||||
|
buildConfiguration = "Release" |
||||||
|
revealArchiveInOrganizer = "YES"> |
||||||
|
</ArchiveAction> |
||||||
|
</Scheme> |
@ -0,0 +1,60 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<Scheme |
||||||
|
LastUpgradeVersion = "1100" |
||||||
|
version = "1.3"> |
||||||
|
<BuildAction |
||||||
|
parallelizeBuildables = "YES" |
||||||
|
buildImplicitDependencies = "YES"> |
||||||
|
<BuildActionEntries> |
||||||
|
<BuildActionEntry |
||||||
|
buildForAnalyzing = "YES" |
||||||
|
buildForTesting = "YES" |
||||||
|
buildForRunning = "YES" |
||||||
|
buildForProfiling = "YES" |
||||||
|
buildForArchiving = "YES"> |
||||||
|
<BuildableReference |
||||||
|
BuildableIdentifier = "primary" |
||||||
|
BlueprintIdentifier = "80F536C18306828DCAB547A623142DA3" |
||||||
|
BuildableName = "libXHNetworkCache.a" |
||||||
|
BlueprintName = "XHNetworkCache" |
||||||
|
ReferencedContainer = "container:Pods.xcodeproj"> |
||||||
|
</BuildableReference> |
||||||
|
</BuildActionEntry> |
||||||
|
</BuildActionEntries> |
||||||
|
</BuildAction> |
||||||
|
<TestAction |
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES" |
||||||
|
buildConfiguration = "Debug"> |
||||||
|
<AdditionalOptions> |
||||||
|
</AdditionalOptions> |
||||||
|
</TestAction> |
||||||
|
<LaunchAction |
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||||
|
launchStyle = "0" |
||||||
|
useCustomWorkingDirectory = "NO" |
||||||
|
ignoresPersistentStateOnLaunch = "NO" |
||||||
|
debugDocumentVersioning = "YES" |
||||||
|
debugServiceExtension = "internal" |
||||||
|
buildConfiguration = "Debug" |
||||||
|
allowLocationSimulation = "YES"> |
||||||
|
<AdditionalOptions> |
||||||
|
</AdditionalOptions> |
||||||
|
</LaunchAction> |
||||||
|
<ProfileAction |
||||||
|
savedToolIdentifier = "" |
||||||
|
useCustomWorkingDirectory = "NO" |
||||||
|
debugDocumentVersioning = "YES" |
||||||
|
buildConfiguration = "Release" |
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES"> |
||||||
|
</ProfileAction> |
||||||
|
<AnalyzeAction |
||||||
|
buildConfiguration = "Debug"> |
||||||
|
</AnalyzeAction> |
||||||
|
<ArchiveAction |
||||||
|
buildConfiguration = "Release" |
||||||
|
revealArchiveInOrganizer = "YES"> |
||||||
|
</ArchiveAction> |
||||||
|
</Scheme> |
@ -0,0 +1,60 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<Scheme |
||||||
|
LastUpgradeVersion = "1100" |
||||||
|
version = "1.3"> |
||||||
|
<BuildAction |
||||||
|
parallelizeBuildables = "YES" |
||||||
|
buildImplicitDependencies = "YES"> |
||||||
|
<BuildActionEntries> |
||||||
|
<BuildActionEntry |
||||||
|
buildForAnalyzing = "YES" |
||||||
|
buildForTesting = "YES" |
||||||
|
buildForRunning = "YES" |
||||||
|
buildForProfiling = "YES" |
||||||
|
buildForArchiving = "YES"> |
||||||
|
<BuildableReference |
||||||
|
BuildableIdentifier = "primary" |
||||||
|
BlueprintIdentifier = "0015D99E4D861A08F3CD42DA521AEF40" |
||||||
|
BuildableName = "libYYKit.a" |
||||||
|
BlueprintName = "YYKit" |
||||||
|
ReferencedContainer = "container:Pods.xcodeproj"> |
||||||
|
</BuildableReference> |
||||||
|
</BuildActionEntry> |
||||||
|
</BuildActionEntries> |
||||||
|
</BuildAction> |
||||||
|
<TestAction |
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES" |
||||||
|
buildConfiguration = "Debug"> |
||||||
|
<AdditionalOptions> |
||||||
|
</AdditionalOptions> |
||||||
|
</TestAction> |
||||||
|
<LaunchAction |
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||||
|
launchStyle = "0" |
||||||
|
useCustomWorkingDirectory = "NO" |
||||||
|
ignoresPersistentStateOnLaunch = "NO" |
||||||
|
debugDocumentVersioning = "YES" |
||||||
|
debugServiceExtension = "internal" |
||||||
|
buildConfiguration = "Debug" |
||||||
|
allowLocationSimulation = "YES"> |
||||||
|
<AdditionalOptions> |
||||||
|
</AdditionalOptions> |
||||||
|
</LaunchAction> |
||||||
|
<ProfileAction |
||||||
|
savedToolIdentifier = "" |
||||||
|
useCustomWorkingDirectory = "NO" |
||||||
|
debugDocumentVersioning = "YES" |
||||||
|
buildConfiguration = "Release" |
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES"> |
||||||
|
</ProfileAction> |
||||||
|
<AnalyzeAction |
||||||
|
buildConfiguration = "Debug"> |
||||||
|
</AnalyzeAction> |
||||||
|
<ArchiveAction |
||||||
|
buildConfiguration = "Release" |
||||||
|
revealArchiveInOrganizer = "YES"> |
||||||
|
</ArchiveAction> |
||||||
|
</Scheme> |
@ -0,0 +1,60 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<Scheme |
||||||
|
LastUpgradeVersion = "1100" |
||||||
|
version = "1.3"> |
||||||
|
<BuildAction |
||||||
|
parallelizeBuildables = "YES" |
||||||
|
buildImplicitDependencies = "YES"> |
||||||
|
<BuildActionEntries> |
||||||
|
<BuildActionEntry |
||||||
|
buildForAnalyzing = "YES" |
||||||
|
buildForTesting = "YES" |
||||||
|
buildForRunning = "YES" |
||||||
|
buildForProfiling = "YES" |
||||||
|
buildForArchiving = "YES"> |
||||||
|
<BuildableReference |
||||||
|
BuildableIdentifier = "primary" |
||||||
|
BlueprintIdentifier = "8F002FD735595D0187EED3DED62221EB" |
||||||
|
BuildableName = "libOpenInstallSDK" |
||||||
|
BlueprintName = "libOpenInstallSDK" |
||||||
|
ReferencedContainer = "container:Pods.xcodeproj"> |
||||||
|
</BuildableReference> |
||||||
|
</BuildActionEntry> |
||||||
|
</BuildActionEntries> |
||||||
|
</BuildAction> |
||||||
|
<TestAction |
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES" |
||||||
|
buildConfiguration = "Debug"> |
||||||
|
<AdditionalOptions> |
||||||
|
</AdditionalOptions> |
||||||
|
</TestAction> |
||||||
|
<LaunchAction |
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||||
|
launchStyle = "0" |
||||||
|
useCustomWorkingDirectory = "NO" |
||||||
|
ignoresPersistentStateOnLaunch = "NO" |
||||||
|
debugDocumentVersioning = "YES" |
||||||
|
debugServiceExtension = "internal" |
||||||
|
buildConfiguration = "Debug" |
||||||
|
allowLocationSimulation = "YES"> |
||||||
|
<AdditionalOptions> |
||||||
|
</AdditionalOptions> |
||||||
|
</LaunchAction> |
||||||
|
<ProfileAction |
||||||
|
savedToolIdentifier = "" |
||||||
|
useCustomWorkingDirectory = "NO" |
||||||
|
debugDocumentVersioning = "YES" |
||||||
|
buildConfiguration = "Release" |
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES"> |
||||||
|
</ProfileAction> |
||||||
|
<AnalyzeAction |
||||||
|
buildConfiguration = "Debug"> |
||||||
|
</AnalyzeAction> |
||||||
|
<ArchiveAction |
||||||
|
buildConfiguration = "Release" |
||||||
|
revealArchiveInOrganizer = "YES"> |
||||||
|
</ArchiveAction> |
||||||
|
</Scheme> |
@ -0,0 +1,60 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<Scheme |
||||||
|
LastUpgradeVersion = "1100" |
||||||
|
version = "1.3"> |
||||||
|
<BuildAction |
||||||
|
parallelizeBuildables = "YES" |
||||||
|
buildImplicitDependencies = "YES"> |
||||||
|
<BuildActionEntries> |
||||||
|
<BuildActionEntry |
||||||
|
buildForAnalyzing = "YES" |
||||||
|
buildForTesting = "YES" |
||||||
|
buildForRunning = "YES" |
||||||
|
buildForProfiling = "YES" |
||||||
|
buildForArchiving = "YES"> |
||||||
|
<BuildableReference |
||||||
|
BuildableIdentifier = "primary" |
||||||
|
BlueprintIdentifier = "0483D7F620C992E5C4BD62A7266EABB4" |
||||||
|
BuildableName = "libpop.a" |
||||||
|
BlueprintName = "pop" |
||||||
|
ReferencedContainer = "container:Pods.xcodeproj"> |
||||||
|
</BuildableReference> |
||||||
|
</BuildActionEntry> |
||||||
|
</BuildActionEntries> |
||||||
|
</BuildAction> |
||||||
|
<TestAction |
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES" |
||||||
|
buildConfiguration = "Debug"> |
||||||
|
<AdditionalOptions> |
||||||
|
</AdditionalOptions> |
||||||
|
</TestAction> |
||||||
|
<LaunchAction |
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||||
|
launchStyle = "0" |
||||||
|
useCustomWorkingDirectory = "NO" |
||||||
|
ignoresPersistentStateOnLaunch = "NO" |
||||||
|
debugDocumentVersioning = "YES" |
||||||
|
debugServiceExtension = "internal" |
||||||
|
buildConfiguration = "Debug" |
||||||
|
allowLocationSimulation = "YES"> |
||||||
|
<AdditionalOptions> |
||||||
|
</AdditionalOptions> |
||||||
|
</LaunchAction> |
||||||
|
<ProfileAction |
||||||
|
savedToolIdentifier = "" |
||||||
|
useCustomWorkingDirectory = "NO" |
||||||
|
debugDocumentVersioning = "YES" |
||||||
|
buildConfiguration = "Release" |
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES"> |
||||||
|
</ProfileAction> |
||||||
|
<AnalyzeAction |
||||||
|
buildConfiguration = "Debug"> |
||||||
|
</AnalyzeAction> |
||||||
|
<ArchiveAction |
||||||
|
buildConfiguration = "Release" |
||||||
|
revealArchiveInOrganizer = "YES"> |
||||||
|
</ArchiveAction> |
||||||
|
</Scheme> |
@ -0,0 +1,222 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> |
||||||
|
<plist version="1.0"> |
||||||
|
<dict> |
||||||
|
<key>SchemeUserState</key> |
||||||
|
<dict> |
||||||
|
<key>AFNetworking.xcscheme</key> |
||||||
|
<dict> |
||||||
|
<key>isShown</key> |
||||||
|
<false/> |
||||||
|
<key>orderHint</key> |
||||||
|
<integer>1</integer> |
||||||
|
</dict> |
||||||
|
<key>AppAuth.xcscheme_^#shared#^_</key> |
||||||
|
<dict> |
||||||
|
<key>orderHint</key> |
||||||
|
<integer>19</integer> |
||||||
|
</dict> |
||||||
|
<key>Bugly.xcscheme</key> |
||||||
|
<dict> |
||||||
|
<key>isShown</key> |
||||||
|
<false/> |
||||||
|
<key>orderHint</key> |
||||||
|
<integer>2</integer> |
||||||
|
</dict> |
||||||
|
<key>Firebase.xcscheme_^#shared#^_</key> |
||||||
|
<dict> |
||||||
|
<key>orderHint</key> |
||||||
|
<integer>23</integer> |
||||||
|
</dict> |
||||||
|
<key>FirebaseAnalytics.xcscheme_^#shared#^_</key> |
||||||
|
<dict> |
||||||
|
<key>orderHint</key> |
||||||
|
<integer>35</integer> |
||||||
|
</dict> |
||||||
|
<key>FirebaseCore.xcscheme_^#shared#^_</key> |
||||||
|
<dict> |
||||||
|
<key>orderHint</key> |
||||||
|
<integer>26</integer> |
||||||
|
</dict> |
||||||
|
<key>FirebaseCoreDiagnostics.xcscheme_^#shared#^_</key> |
||||||
|
<dict> |
||||||
|
<key>orderHint</key> |
||||||
|
<integer>32</integer> |
||||||
|
</dict> |
||||||
|
<key>FirebaseInstallations.xcscheme_^#shared#^_</key> |
||||||
|
<dict> |
||||||
|
<key>orderHint</key> |
||||||
|
<integer>18</integer> |
||||||
|
</dict> |
||||||
|
<key>GTMAppAuth.xcscheme_^#shared#^_</key> |
||||||
|
<dict> |
||||||
|
<key>orderHint</key> |
||||||
|
<integer>15</integer> |
||||||
|
</dict> |
||||||
|
<key>GTMSessionFetcher.xcscheme_^#shared#^_</key> |
||||||
|
<dict> |
||||||
|
<key>orderHint</key> |
||||||
|
<integer>14</integer> |
||||||
|
</dict> |
||||||
|
<key>GoogleAnalytics.xcscheme_^#shared#^_</key> |
||||||
|
<dict> |
||||||
|
<key>orderHint</key> |
||||||
|
<integer>15</integer> |
||||||
|
</dict> |
||||||
|
<key>GoogleAppMeasurement.xcscheme_^#shared#^_</key> |
||||||
|
<dict> |
||||||
|
<key>orderHint</key> |
||||||
|
<integer>34</integer> |
||||||
|
</dict> |
||||||
|
<key>GoogleDataTransport.xcscheme_^#shared#^_</key> |
||||||
|
<dict> |
||||||
|
<key>orderHint</key> |
||||||
|
<integer>30</integer> |
||||||
|
</dict> |
||||||
|
<key>GoogleDataTransportCCTSupport.xcscheme_^#shared#^_</key> |
||||||
|
<dict> |
||||||
|
<key>orderHint</key> |
||||||
|
<integer>14</integer> |
||||||
|
</dict> |
||||||
|
<key>GoogleSignIn.xcscheme_^#shared#^_</key> |
||||||
|
<dict> |
||||||
|
<key>orderHint</key> |
||||||
|
<integer>20</integer> |
||||||
|
</dict> |
||||||
|
<key>GoogleUtilities.xcscheme_^#shared#^_</key> |
||||||
|
<dict> |
||||||
|
<key>orderHint</key> |
||||||
|
<integer>22</integer> |
||||||
|
</dict> |
||||||
|
<key>MOBFoundation.xcscheme_^#shared#^_</key> |
||||||
|
<dict> |
||||||
|
<key>orderHint</key> |
||||||
|
<integer>18</integer> |
||||||
|
</dict> |
||||||
|
<key>Masonry.xcscheme</key> |
||||||
|
<dict> |
||||||
|
<key>isShown</key> |
||||||
|
<false/> |
||||||
|
<key>orderHint</key> |
||||||
|
<integer>4</integer> |
||||||
|
</dict> |
||||||
|
<key>Pods-WXReader.xcscheme</key> |
||||||
|
<dict> |
||||||
|
<key>isShown</key> |
||||||
|
<false/> |
||||||
|
<key>orderHint</key> |
||||||
|
<integer>5</integer> |
||||||
|
</dict> |
||||||
|
<key>PromisesObjC.xcscheme_^#shared#^_</key> |
||||||
|
<dict> |
||||||
|
<key>orderHint</key> |
||||||
|
<integer>31</integer> |
||||||
|
</dict> |
||||||
|
<key>Reveal-SDK.xcscheme</key> |
||||||
|
<dict> |
||||||
|
<key>isShown</key> |
||||||
|
<false/> |
||||||
|
<key>orderHint</key> |
||||||
|
<integer>7</integer> |
||||||
|
</dict> |
||||||
|
<key>SFImageMaker.xcscheme_^#shared#^_</key> |
||||||
|
<dict> |
||||||
|
<key>orderHint</key> |
||||||
|
<integer>14</integer> |
||||||
|
</dict> |
||||||
|
<key>UITableView+FDTemplateLayoutCell.xcscheme_^#shared#^_</key> |
||||||
|
<dict> |
||||||
|
<key>orderHint</key> |
||||||
|
<integer>14</integer> |
||||||
|
</dict> |
||||||
|
<key>UMCAnalytics.xcscheme</key> |
||||||
|
<dict> |
||||||
|
<key>isShown</key> |
||||||
|
<false/> |
||||||
|
<key>orderHint</key> |
||||||
|
<integer>8</integer> |
||||||
|
</dict> |
||||||
|
<key>UMCCommon.xcscheme</key> |
||||||
|
<dict> |
||||||
|
<key>isShown</key> |
||||||
|
<false/> |
||||||
|
<key>orderHint</key> |
||||||
|
<integer>9</integer> |
||||||
|
</dict> |
||||||
|
<key>UMCSecurityPlugins.xcscheme</key> |
||||||
|
<dict> |
||||||
|
<key>isShown</key> |
||||||
|
<false/> |
||||||
|
<key>orderHint</key> |
||||||
|
<integer>10</integer> |
||||||
|
</dict> |
||||||
|
<key>UMCShare.xcscheme</key> |
||||||
|
<dict> |
||||||
|
<key>isShown</key> |
||||||
|
<false/> |
||||||
|
<key>orderHint</key> |
||||||
|
<integer>11</integer> |
||||||
|
</dict> |
||||||
|
<key>XHNetworkCache.xcscheme</key> |
||||||
|
<dict> |
||||||
|
<key>isShown</key> |
||||||
|
<false/> |
||||||
|
<key>orderHint</key> |
||||||
|
<integer>12</integer> |
||||||
|
</dict> |
||||||
|
<key>YYKit.xcscheme</key> |
||||||
|
<dict> |
||||||
|
<key>isShown</key> |
||||||
|
<false/> |
||||||
|
<key>orderHint</key> |
||||||
|
<integer>13</integer> |
||||||
|
</dict> |
||||||
|
<key>libOpenInstallSDK.xcscheme</key> |
||||||
|
<dict> |
||||||
|
<key>isShown</key> |
||||||
|
<false/> |
||||||
|
<key>orderHint</key> |
||||||
|
<integer>3</integer> |
||||||
|
</dict> |
||||||
|
<key>mob_pushsdk.xcscheme_^#shared#^_</key> |
||||||
|
<dict> |
||||||
|
<key>orderHint</key> |
||||||
|
<integer>21</integer> |
||||||
|
</dict> |
||||||
|
<key>mob_sharesdk-ShareSDK.xcscheme_^#shared#^_</key> |
||||||
|
<dict> |
||||||
|
<key>orderHint</key> |
||||||
|
<integer>17</integer> |
||||||
|
</dict> |
||||||
|
<key>mob_sharesdk-ShareSDK_JS_Facebook.xcscheme_^#shared#^_</key> |
||||||
|
<dict> |
||||||
|
<key>orderHint</key> |
||||||
|
<integer>22</integer> |
||||||
|
</dict> |
||||||
|
<key>mob_sharesdk-ShareSDK_JS_Line.xcscheme_^#shared#^_</key> |
||||||
|
<dict> |
||||||
|
<key>orderHint</key> |
||||||
|
<integer>20</integer> |
||||||
|
</dict> |
||||||
|
<key>mob_sharesdk.xcscheme_^#shared#^_</key> |
||||||
|
<dict> |
||||||
|
<key>orderHint</key> |
||||||
|
<integer>16</integer> |
||||||
|
</dict> |
||||||
|
<key>nanopb.xcscheme_^#shared#^_</key> |
||||||
|
<dict> |
||||||
|
<key>orderHint</key> |
||||||
|
<integer>28</integer> |
||||||
|
</dict> |
||||||
|
<key>pop.xcscheme</key> |
||||||
|
<dict> |
||||||
|
<key>isShown</key> |
||||||
|
<false/> |
||||||
|
<key>orderHint</key> |
||||||
|
<integer>6</integer> |
||||||
|
</dict> |
||||||
|
</dict> |
||||||
|
<key>SuppressBuildableAutocreation</key> |
||||||
|
<dict/> |
||||||
|
</dict> |
||||||
|
</plist> |
@ -0,0 +1,60 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<Scheme |
||||||
|
LastUpgradeVersion = "1100" |
||||||
|
version = "1.3"> |
||||||
|
<BuildAction |
||||||
|
parallelizeBuildables = "YES" |
||||||
|
buildImplicitDependencies = "YES"> |
||||||
|
<BuildActionEntries> |
||||||
|
<BuildActionEntry |
||||||
|
buildForAnalyzing = "YES" |
||||||
|
buildForTesting = "YES" |
||||||
|
buildForRunning = "YES" |
||||||
|
buildForProfiling = "YES" |
||||||
|
buildForArchiving = "YES"> |
||||||
|
<BuildableReference |
||||||
|
BuildableIdentifier = "primary" |
||||||
|
BlueprintIdentifier = "80656BB455724E85A3D65710CD4AF1D7" |
||||||
|
BuildableName = "libPods-TFReader.a" |
||||||
|
BlueprintName = "Pods-TFReader" |
||||||
|
ReferencedContainer = "container:Pods.xcodeproj"> |
||||||
|
</BuildableReference> |
||||||
|
</BuildActionEntry> |
||||||
|
</BuildActionEntries> |
||||||
|
</BuildAction> |
||||||
|
<TestAction |
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES" |
||||||
|
buildConfiguration = "Debug"> |
||||||
|
<AdditionalOptions> |
||||||
|
</AdditionalOptions> |
||||||
|
</TestAction> |
||||||
|
<LaunchAction |
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||||
|
launchStyle = "0" |
||||||
|
useCustomWorkingDirectory = "NO" |
||||||
|
ignoresPersistentStateOnLaunch = "NO" |
||||||
|
debugDocumentVersioning = "YES" |
||||||
|
debugServiceExtension = "internal" |
||||||
|
buildConfiguration = "Debug" |
||||||
|
allowLocationSimulation = "YES"> |
||||||
|
<AdditionalOptions> |
||||||
|
</AdditionalOptions> |
||||||
|
</LaunchAction> |
||||||
|
<ProfileAction |
||||||
|
savedToolIdentifier = "" |
||||||
|
useCustomWorkingDirectory = "NO" |
||||||
|
debugDocumentVersioning = "YES" |
||||||
|
buildConfiguration = "Release" |
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES"> |
||||||
|
</ProfileAction> |
||||||
|
<AnalyzeAction |
||||||
|
buildConfiguration = "Debug"> |
||||||
|
</AnalyzeAction> |
||||||
|
<ArchiveAction |
||||||
|
buildConfiguration = "Release" |
||||||
|
revealArchiveInOrganizer = "YES"> |
||||||
|
</ArchiveAction> |
||||||
|
</Scheme> |
@ -0,0 +1,16 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> |
||||||
|
<plist version="1.0"> |
||||||
|
<dict> |
||||||
|
<key>SchemeUserState</key> |
||||||
|
<dict> |
||||||
|
<key>Pods-TFReader.xcscheme</key> |
||||||
|
<dict> |
||||||
|
<key>isShown</key> |
||||||
|
<false/> |
||||||
|
</dict> |
||||||
|
</dict> |
||||||
|
<key>SuppressBuildableAutocreation</key> |
||||||
|
<dict/> |
||||||
|
</dict> |
||||||
|
</plist> |
@ -0,0 +1,3 @@ |
|||||||
|
# Acknowledgements |
||||||
|
This application makes use of the following third party libraries: |
||||||
|
Generated by CocoaPods - https://cocoapods.org |
@ -0,0 +1,29 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> |
||||||
|
<plist version="1.0"> |
||||||
|
<dict> |
||||||
|
<key>PreferenceSpecifiers</key> |
||||||
|
<array> |
||||||
|
<dict> |
||||||
|
<key>FooterText</key> |
||||||
|
<string>This application makes use of the following third party libraries:</string> |
||||||
|
<key>Title</key> |
||||||
|
<string>Acknowledgements</string> |
||||||
|
<key>Type</key> |
||||||
|
<string>PSGroupSpecifier</string> |
||||||
|
</dict> |
||||||
|
<dict> |
||||||
|
<key>FooterText</key> |
||||||
|
<string>Generated by CocoaPods - https://cocoapods.org</string> |
||||||
|
<key>Title</key> |
||||||
|
<string></string> |
||||||
|
<key>Type</key> |
||||||
|
<string>PSGroupSpecifier</string> |
||||||
|
</dict> |
||||||
|
</array> |
||||||
|
<key>StringsTable</key> |
||||||
|
<string>Acknowledgements</string> |
||||||
|
<key>Title</key> |
||||||
|
<string>Acknowledgements</string> |
||||||
|
</dict> |
||||||
|
</plist> |
@ -0,0 +1,5 @@ |
|||||||
|
#import <Foundation/Foundation.h> |
||||||
|
@interface PodsDummy_Pods_TFReader : NSObject |
||||||
|
@end |
||||||
|
@implementation PodsDummy_Pods_TFReader |
||||||
|
@end |
@ -0,0 +1,168 @@ |
|||||||
|
#!/bin/sh |
||||||
|
set -e |
||||||
|
set -u |
||||||
|
set -o pipefail |
||||||
|
|
||||||
|
function on_error { |
||||||
|
echo "$(realpath -mq "${0}"):$1: error: Unexpected failure" |
||||||
|
} |
||||||
|
trap 'on_error $LINENO' ERR |
||||||
|
|
||||||
|
if [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then |
||||||
|
# If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy |
||||||
|
# frameworks to, so exit 0 (signalling the script phase was successful). |
||||||
|
exit 0 |
||||||
|
fi |
||||||
|
|
||||||
|
echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" |
||||||
|
mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" |
||||||
|
|
||||||
|
COCOAPODS_PARALLEL_CODE_SIGN="${COCOAPODS_PARALLEL_CODE_SIGN:-false}" |
||||||
|
SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" |
||||||
|
|
||||||
|
# Used as a return value for each invocation of `strip_invalid_archs` function. |
||||||
|
STRIP_BINARY_RETVAL=0 |
||||||
|
|
||||||
|
# This protects against multiple targets copying the same framework dependency at the same time. The solution |
||||||
|
# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html |
||||||
|
RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") |
||||||
|
|
||||||
|
# Copies and strips a vendored framework |
||||||
|
install_framework() |
||||||
|
{ |
||||||
|
if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then |
||||||
|
local source="${BUILT_PRODUCTS_DIR}/$1" |
||||||
|
elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then |
||||||
|
local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")" |
||||||
|
elif [ -r "$1" ]; then |
||||||
|
local source="$1" |
||||||
|
fi |
||||||
|
|
||||||
|
local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" |
||||||
|
|
||||||
|
if [ -L "${source}" ]; then |
||||||
|
echo "Symlinked..." |
||||||
|
source="$(readlink "${source}")" |
||||||
|
fi |
||||||
|
|
||||||
|
# Use filter instead of exclude so missing patterns don't throw errors. |
||||||
|
echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" |
||||||
|
rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" |
||||||
|
|
||||||
|
local basename |
||||||
|
basename="$(basename -s .framework "$1")" |
||||||
|
binary="${destination}/${basename}.framework/${basename}" |
||||||
|
|
||||||
|
if ! [ -r "$binary" ]; then |
||||||
|
binary="${destination}/${basename}" |
||||||
|
elif [ -L "${binary}" ]; then |
||||||
|
echo "Destination binary is symlinked..." |
||||||
|
dirname="$(dirname "${binary}")" |
||||||
|
binary="${dirname}/$(readlink "${binary}")" |
||||||
|
fi |
||||||
|
|
||||||
|
# Strip invalid architectures so "fat" simulator / device frameworks work on device |
||||||
|
if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then |
||||||
|
strip_invalid_archs "$binary" |
||||||
|
fi |
||||||
|
|
||||||
|
# Resign the code if required by the build settings to avoid unstable apps |
||||||
|
code_sign_if_enabled "${destination}/$(basename "$1")" |
||||||
|
|
||||||
|
# Embed linked Swift runtime libraries. No longer necessary as of Xcode 7. |
||||||
|
if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then |
||||||
|
local swift_runtime_libs |
||||||
|
swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u) |
||||||
|
for lib in $swift_runtime_libs; do |
||||||
|
echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" |
||||||
|
rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" |
||||||
|
code_sign_if_enabled "${destination}/${lib}" |
||||||
|
done |
||||||
|
fi |
||||||
|
} |
||||||
|
|
||||||
|
# Copies and strips a vendored dSYM |
||||||
|
install_dsym() { |
||||||
|
local source="$1" |
||||||
|
if [ -r "$source" ]; then |
||||||
|
# Copy the dSYM into a the targets temp dir. |
||||||
|
echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DERIVED_FILES_DIR}\"" |
||||||
|
rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DERIVED_FILES_DIR}" |
||||||
|
|
||||||
|
local basename |
||||||
|
basename="$(basename -s .framework.dSYM "$source")" |
||||||
|
binary="${DERIVED_FILES_DIR}/${basename}.framework.dSYM/Contents/Resources/DWARF/${basename}" |
||||||
|
|
||||||
|
# Strip invalid architectures so "fat" simulator / device frameworks work on device |
||||||
|
if [[ "$(file "$binary")" == *"Mach-O "*"dSYM companion"* ]]; then |
||||||
|
strip_invalid_archs "$binary" |
||||||
|
fi |
||||||
|
|
||||||
|
if [[ $STRIP_BINARY_RETVAL == 1 ]]; then |
||||||
|
# Move the stripped file into its final destination. |
||||||
|
echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\"" |
||||||
|
rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.framework.dSYM" "${DWARF_DSYM_FOLDER_PATH}" |
||||||
|
else |
||||||
|
# The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing. |
||||||
|
touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.framework.dSYM" |
||||||
|
fi |
||||||
|
fi |
||||||
|
} |
||||||
|
|
||||||
|
# Copies the bcsymbolmap files of a vendored framework |
||||||
|
install_bcsymbolmap() { |
||||||
|
local bcsymbolmap_path="$1" |
||||||
|
local destination="${BUILT_PRODUCTS_DIR}" |
||||||
|
echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}"" |
||||||
|
rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}" |
||||||
|
} |
||||||
|
|
||||||
|
# Signs a framework with the provided identity |
||||||
|
code_sign_if_enabled() { |
||||||
|
if [ -n "${EXPANDED_CODE_SIGN_IDENTITY:-}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then |
||||||
|
# Use the current code_sign_identity |
||||||
|
echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" |
||||||
|
local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'" |
||||||
|
|
||||||
|
if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then |
||||||
|
code_sign_cmd="$code_sign_cmd &" |
||||||
|
fi |
||||||
|
echo "$code_sign_cmd" |
||||||
|
eval "$code_sign_cmd" |
||||||
|
fi |
||||||
|
} |
||||||
|
|
||||||
|
# Strip invalid architectures |
||||||
|
strip_invalid_archs() { |
||||||
|
binary="$1" |
||||||
|
# Get architectures for current target binary |
||||||
|
binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)" |
||||||
|
# Intersect them with the architectures we are building for |
||||||
|
intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)" |
||||||
|
# If there are no archs supported by this binary then warn the user |
||||||
|
if [[ -z "$intersected_archs" ]]; then |
||||||
|
echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)." |
||||||
|
STRIP_BINARY_RETVAL=0 |
||||||
|
return |
||||||
|
fi |
||||||
|
stripped="" |
||||||
|
for arch in $binary_archs; do |
||||||
|
if ! [[ "${ARCHS}" == *"$arch"* ]]; then |
||||||
|
# Strip non-valid architectures in-place |
||||||
|
lipo -remove "$arch" -output "$binary" "$binary" |
||||||
|
stripped="$stripped $arch" |
||||||
|
fi |
||||||
|
done |
||||||
|
if [[ "$stripped" ]]; then |
||||||
|
echo "Stripped $binary of architectures:$stripped" |
||||||
|
fi |
||||||
|
STRIP_BINARY_RETVAL=1 |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
if [[ "$CONFIGURATION" == "Debug" ]]; then |
||||||
|
install_framework "${PODS_ROOT}/Reveal-SDK/RevealServer/iOS/RevealServer.framework" |
||||||
|
fi |
||||||
|
if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then |
||||||
|
wait |
||||||
|
fi |
@ -0,0 +1,135 @@ |
|||||||
|
#!/bin/sh |
||||||
|
set -e |
||||||
|
set -u |
||||||
|
set -o pipefail |
||||||
|
|
||||||
|
function on_error { |
||||||
|
echo "$(realpath -mq "${0}"):$1: error: Unexpected failure" |
||||||
|
} |
||||||
|
trap 'on_error $LINENO' ERR |
||||||
|
|
||||||
|
if [ -z ${UNLOCALIZED_RESOURCES_FOLDER_PATH+x} ]; then |
||||||
|
# If UNLOCALIZED_RESOURCES_FOLDER_PATH is not set, then there's nowhere for us to copy |
||||||
|
# resources to, so exit 0 (signalling the script phase was successful). |
||||||
|
exit 0 |
||||||
|
fi |
||||||
|
|
||||||
|
mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" |
||||||
|
|
||||||
|
RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt |
||||||
|
> "$RESOURCES_TO_COPY" |
||||||
|
|
||||||
|
XCASSET_FILES=() |
||||||
|
|
||||||
|
# This protects against multiple targets copying the same framework dependency at the same time. The solution |
||||||
|
# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html |
||||||
|
RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") |
||||||
|
|
||||||
|
case "${TARGETED_DEVICE_FAMILY:-}" in |
||||||
|
1,2) |
||||||
|
TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" |
||||||
|
;; |
||||||
|
1) |
||||||
|
TARGET_DEVICE_ARGS="--target-device iphone" |
||||||
|
;; |
||||||
|
2) |
||||||
|
TARGET_DEVICE_ARGS="--target-device ipad" |
||||||
|
;; |
||||||
|
3) |
||||||
|
TARGET_DEVICE_ARGS="--target-device tv" |
||||||
|
;; |
||||||
|
4) |
||||||
|
TARGET_DEVICE_ARGS="--target-device watch" |
||||||
|
;; |
||||||
|
*) |
||||||
|
TARGET_DEVICE_ARGS="--target-device mac" |
||||||
|
;; |
||||||
|
esac |
||||||
|
|
||||||
|
install_resource() |
||||||
|
{ |
||||||
|
if [[ "$1" = /* ]] ; then |
||||||
|
RESOURCE_PATH="$1" |
||||||
|
else |
||||||
|
RESOURCE_PATH="${PODS_ROOT}/$1" |
||||||
|
fi |
||||||
|
if [[ ! -e "$RESOURCE_PATH" ]] ; then |
||||||
|
cat << EOM |
||||||
|
error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script. |
||||||
|
EOM |
||||||
|
exit 1 |
||||||
|
fi |
||||||
|
case $RESOURCE_PATH in |
||||||
|
*.storyboard) |
||||||
|
echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true |
||||||
|
ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} |
||||||
|
;; |
||||||
|
*.xib) |
||||||
|
echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true |
||||||
|
ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} |
||||||
|
;; |
||||||
|
*.framework) |
||||||
|
echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true |
||||||
|
mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" |
||||||
|
echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true |
||||||
|
rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" |
||||||
|
;; |
||||||
|
*.xcdatamodel) |
||||||
|
echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" || true |
||||||
|
xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom" |
||||||
|
;; |
||||||
|
*.xcdatamodeld) |
||||||
|
echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" || true |
||||||
|
xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd" |
||||||
|
;; |
||||||
|
*.xcmappingmodel) |
||||||
|
echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" || true |
||||||
|
xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm" |
||||||
|
;; |
||||||
|
*.xcassets) |
||||||
|
ABSOLUTE_XCASSET_FILE="$RESOURCE_PATH" |
||||||
|
XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") |
||||||
|
;; |
||||||
|
*) |
||||||
|
echo "$RESOURCE_PATH" || true |
||||||
|
echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY" |
||||||
|
;; |
||||||
|
esac |
||||||
|
} |
||||||
|
if [[ "$CONFIGURATION" == "Debug" ]]; then |
||||||
|
install_resource "${PODS_ROOT}/MJRefresh/MJRefresh/MJRefresh.bundle" |
||||||
|
install_resource "${PODS_CONFIGURATION_BUILD_DIR}/mob_sharesdk/ShareSDK.bundle" |
||||||
|
install_resource "${PODS_CONFIGURATION_BUILD_DIR}/mob_sharesdk/ShareSDK_JS_QQ.bundle" |
||||||
|
install_resource "${PODS_CONFIGURATION_BUILD_DIR}/mob_sharesdk/ShareSDK_JS_WeChat.bundle" |
||||||
|
fi |
||||||
|
if [[ "$CONFIGURATION" == "Release" ]]; then |
||||||
|
install_resource "${PODS_ROOT}/MJRefresh/MJRefresh/MJRefresh.bundle" |
||||||
|
install_resource "${PODS_CONFIGURATION_BUILD_DIR}/mob_sharesdk/ShareSDK.bundle" |
||||||
|
install_resource "${PODS_CONFIGURATION_BUILD_DIR}/mob_sharesdk/ShareSDK_JS_QQ.bundle" |
||||||
|
install_resource "${PODS_CONFIGURATION_BUILD_DIR}/mob_sharesdk/ShareSDK_JS_WeChat.bundle" |
||||||
|
fi |
||||||
|
|
||||||
|
mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" |
||||||
|
rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" |
||||||
|
if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then |
||||||
|
mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" |
||||||
|
rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" |
||||||
|
fi |
||||||
|
rm -f "$RESOURCES_TO_COPY" |
||||||
|
|
||||||
|
if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "${XCASSET_FILES:-}" ] |
||||||
|
then |
||||||
|
# Find all other xcassets (this unfortunately includes those of path pods and other targets). |
||||||
|
OTHER_XCASSETS=$(find -L "$PWD" -iname "*.xcassets" -type d) |
||||||
|
while read line; do |
||||||
|
if [[ $line != "${PODS_ROOT}*" ]]; then |
||||||
|
XCASSET_FILES+=("$line") |
||||||
|
fi |
||||||
|
done <<<"$OTHER_XCASSETS" |
||||||
|
|
||||||
|
if [ -z ${ASSETCATALOG_COMPILER_APPICON_NAME+x} ]; then |
||||||
|
printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" |
||||||
|
else |
||||||
|
printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" --app-icon "${ASSETCATALOG_COMPILER_APPICON_NAME}" --output-partial-info-plist "${TARGET_TEMP_DIR}/assetcatalog_generated_info_cocoapods.plist" |
||||||
|
fi |
||||||
|
fi |
@ -0,0 +1,8 @@ |
|||||||
|
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO |
||||||
|
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 |
||||||
|
PODS_BUILD_DIR = ${BUILD_DIR} |
||||||
|
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) |
||||||
|
PODS_PODFILE_DIR_PATH = ${SRCROOT}/. |
||||||
|
PODS_ROOT = ${SRCROOT}/Pods |
||||||
|
PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates |
||||||
|
USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES |
@ -0,0 +1,8 @@ |
|||||||
|
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO |
||||||
|
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 |
||||||
|
PODS_BUILD_DIR = ${BUILD_DIR} |
||||||
|
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) |
||||||
|
PODS_PODFILE_DIR_PATH = ${SRCROOT}/. |
||||||
|
PODS_ROOT = ${SRCROOT}/Pods |
||||||
|
PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates |
||||||
|
USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES |
@ -0,0 +1,7 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<Workspace |
||||||
|
version = "1.0"> |
||||||
|
<FileRef |
||||||
|
location = "self:WXReader.xcodeproj"> |
||||||
|
</FileRef> |
||||||
|
</Workspace> |
@ -0,0 +1,8 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> |
||||||
|
<plist version="1.0"> |
||||||
|
<dict> |
||||||
|
<key>IDEDidComputeMac32BitWarning</key> |
||||||
|
<true/> |
||||||
|
</dict> |
||||||
|
</plist> |
@ -0,0 +1,78 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<Scheme |
||||||
|
LastUpgradeVersion = "1220" |
||||||
|
version = "1.3"> |
||||||
|
<BuildAction |
||||||
|
parallelizeBuildables = "YES" |
||||||
|
buildImplicitDependencies = "YES"> |
||||||
|
<BuildActionEntries> |
||||||
|
<BuildActionEntry |
||||||
|
buildForTesting = "YES" |
||||||
|
buildForRunning = "YES" |
||||||
|
buildForProfiling = "YES" |
||||||
|
buildForArchiving = "YES" |
||||||
|
buildForAnalyzing = "YES"> |
||||||
|
<BuildableReference |
||||||
|
BuildableIdentifier = "primary" |
||||||
|
BlueprintIdentifier = "496E54E820A9602300EEEC01" |
||||||
|
BuildableName = "小说绘.app" |
||||||
|
BlueprintName = "TFReader" |
||||||
|
ReferencedContainer = "container:TFReader.xcodeproj"> |
||||||
|
</BuildableReference> |
||||||
|
</BuildActionEntry> |
||||||
|
</BuildActionEntries> |
||||||
|
</BuildAction> |
||||||
|
<TestAction |
||||||
|
buildConfiguration = "Debug" |
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES"> |
||||||
|
<Testables> |
||||||
|
</Testables> |
||||||
|
</TestAction> |
||||||
|
<LaunchAction |
||||||
|
buildConfiguration = "Debug" |
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||||
|
launchStyle = "0" |
||||||
|
useCustomWorkingDirectory = "NO" |
||||||
|
ignoresPersistentStateOnLaunch = "NO" |
||||||
|
debugDocumentVersioning = "YES" |
||||||
|
debugServiceExtension = "internal" |
||||||
|
allowLocationSimulation = "YES"> |
||||||
|
<BuildableProductRunnable |
||||||
|
runnableDebuggingMode = "0"> |
||||||
|
<BuildableReference |
||||||
|
BuildableIdentifier = "primary" |
||||||
|
BlueprintIdentifier = "496E54E820A9602300EEEC01" |
||||||
|
BuildableName = "小说绘.app" |
||||||
|
BlueprintName = "TFReader" |
||||||
|
ReferencedContainer = "container:TFReader.xcodeproj"> |
||||||
|
</BuildableReference> |
||||||
|
</BuildableProductRunnable> |
||||||
|
</LaunchAction> |
||||||
|
<ProfileAction |
||||||
|
buildConfiguration = "Release" |
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES" |
||||||
|
savedToolIdentifier = "" |
||||||
|
useCustomWorkingDirectory = "NO" |
||||||
|
debugDocumentVersioning = "YES"> |
||||||
|
<BuildableProductRunnable |
||||||
|
runnableDebuggingMode = "0"> |
||||||
|
<BuildableReference |
||||||
|
BuildableIdentifier = "primary" |
||||||
|
BlueprintIdentifier = "496E54E820A9602300EEEC01" |
||||||
|
BuildableName = "小说绘.app" |
||||||
|
BlueprintName = "TFReader" |
||||||
|
ReferencedContainer = "container:TFReader.xcodeproj"> |
||||||
|
</BuildableReference> |
||||||
|
</BuildableProductRunnable> |
||||||
|
</ProfileAction> |
||||||
|
<AnalyzeAction |
||||||
|
buildConfiguration = "Debug"> |
||||||
|
</AnalyzeAction> |
||||||
|
<ArchiveAction |
||||||
|
buildConfiguration = "Release" |
||||||
|
revealArchiveInOrganizer = "YES"> |
||||||
|
</ArchiveAction> |
||||||
|
</Scheme> |
@ -0,0 +1,22 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> |
||||||
|
<plist version="1.0"> |
||||||
|
<dict> |
||||||
|
<key>SchemeUserState</key> |
||||||
|
<dict> |
||||||
|
<key>WXReader.xcscheme_^#shared#^_</key> |
||||||
|
<dict> |
||||||
|
<key>orderHint</key> |
||||||
|
<integer>0</integer> |
||||||
|
</dict> |
||||||
|
</dict> |
||||||
|
<key>SuppressBuildableAutocreation</key> |
||||||
|
<dict> |
||||||
|
<key>496E54E820A9602300EEEC01</key> |
||||||
|
<dict> |
||||||
|
<key>primary</key> |
||||||
|
<true/> |
||||||
|
</dict> |
||||||
|
</dict> |
||||||
|
</dict> |
||||||
|
</plist> |
@ -0,0 +1,14 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> |
||||||
|
<plist version="1.0"> |
||||||
|
<dict> |
||||||
|
<key>SchemeUserState</key> |
||||||
|
<dict> |
||||||
|
<key>WXReader.xcscheme_^#shared#^_</key> |
||||||
|
<dict> |
||||||
|
<key>orderHint</key> |
||||||
|
<integer>0</integer> |
||||||
|
</dict> |
||||||
|
</dict> |
||||||
|
</dict> |
||||||
|
</plist> |
@ -0,0 +1,14 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> |
||||||
|
<plist version="1.0"> |
||||||
|
<dict> |
||||||
|
<key>SchemeUserState</key> |
||||||
|
<dict> |
||||||
|
<key>WXReader.xcscheme_^#shared#^_</key> |
||||||
|
<dict> |
||||||
|
<key>orderHint</key> |
||||||
|
<integer>0</integer> |
||||||
|
</dict> |
||||||
|
</dict> |
||||||
|
</dict> |
||||||
|
</plist> |
@ -0,0 +1,14 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> |
||||||
|
<plist version="1.0"> |
||||||
|
<dict> |
||||||
|
<key>SchemeUserState</key> |
||||||
|
<dict> |
||||||
|
<key>WXReader.xcscheme_^#shared#^_</key> |
||||||
|
<dict> |
||||||
|
<key>orderHint</key> |
||||||
|
<integer>0</integer> |
||||||
|
</dict> |
||||||
|
</dict> |
||||||
|
</dict> |
||||||
|
</plist> |
@ -0,0 +1,22 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> |
||||||
|
<plist version="1.0"> |
||||||
|
<dict> |
||||||
|
<key>SchemeUserState</key> |
||||||
|
<dict> |
||||||
|
<key>TFReader.xcscheme_^#shared#^_</key> |
||||||
|
<dict> |
||||||
|
<key>orderHint</key> |
||||||
|
<integer>21</integer> |
||||||
|
</dict> |
||||||
|
</dict> |
||||||
|
<key>SuppressBuildableAutocreation</key> |
||||||
|
<dict> |
||||||
|
<key>496E54E820A9602300EEEC01</key> |
||||||
|
<dict> |
||||||
|
<key>primary</key> |
||||||
|
<true/> |
||||||
|
</dict> |
||||||
|
</dict> |
||||||
|
</dict> |
||||||
|
</plist> |
@ -0,0 +1,10 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<Workspace |
||||||
|
version = "1.0"> |
||||||
|
<FileRef |
||||||
|
location = "group:TFReader.xcodeproj"> |
||||||
|
</FileRef> |
||||||
|
<FileRef |
||||||
|
location = "group:Pods/Pods.xcodeproj"> |
||||||
|
</FileRef> |
||||||
|
</Workspace> |
@ -0,0 +1,8 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> |
||||||
|
<plist version="1.0"> |
||||||
|
<dict> |
||||||
|
<key>IDEDidComputeMac32BitWarning</key> |
||||||
|
<true/> |
||||||
|
</dict> |
||||||
|
</plist> |
@ -0,0 +1,8 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> |
||||||
|
<plist version="1.0"> |
||||||
|
<dict> |
||||||
|
<key>PreviewsEnabled</key> |
||||||
|
<false/> |
||||||
|
</dict> |
||||||
|
</plist> |
@ -0,0 +1,5 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> |
||||||
|
<plist version="1.0"> |
||||||
|
<array/> |
||||||
|
</plist> |
@ -0,0 +1,18 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> |
||||||
|
<plist version="1.0"> |
||||||
|
<dict> |
||||||
|
<key>BuildLocationStyle</key> |
||||||
|
<string>UseAppPreferences</string> |
||||||
|
<key>CustomBuildLocationType</key> |
||||||
|
<string>RelativeToDerivedData</string> |
||||||
|
<key>DerivedDataLocationStyle</key> |
||||||
|
<string>Default</string> |
||||||
|
<key>IssueFilterStyle</key> |
||||||
|
<string>ShowActiveSchemeOnly</string> |
||||||
|
<key>LiveSourceIssuesEnabled</key> |
||||||
|
<true/> |
||||||
|
<key>ShowSharedSchemesAutomaticallyEnabled</key> |
||||||
|
<true/> |
||||||
|
</dict> |
||||||
|
</plist> |
@ -0,0 +1,6 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<Bucket |
||||||
|
uuid = "136EEE95-45B0-45F0-9545-DBF3BB381CB3" |
||||||
|
type = "0" |
||||||
|
version = "2.0"> |
||||||
|
</Bucket> |
@ -0,0 +1,68 @@ |
|||||||
|
{ |
||||||
|
"images" : [ |
||||||
|
{ |
||||||
|
"filename" : "readeriPhoneNotification_20pt@2x.png", |
||||||
|
"idiom" : "iphone", |
||||||
|
"scale" : "2x", |
||||||
|
"size" : "20x20" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"filename" : "readeriPhoneNotification_20pt@3x.png", |
||||||
|
"idiom" : "iphone", |
||||||
|
"scale" : "3x", |
||||||
|
"size" : "20x20" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"filename" : "readeriPhoneNotification_20pt@1x.png", |
||||||
|
"idiom" : "iphone", |
||||||
|
"scale" : "1x", |
||||||
|
"size" : "29x29" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"filename" : "readeriPhoneSpootlight5_29pt@2x.png", |
||||||
|
"idiom" : "iphone", |
||||||
|
"scale" : "2x", |
||||||
|
"size" : "29x29" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"filename" : "readeriPhoneSpootlight5_29pt@3x.png", |
||||||
|
"idiom" : "iphone", |
||||||
|
"scale" : "3x", |
||||||
|
"size" : "29x29" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"filename" : "readeriPhoneSpootlight7_40pt@2x.png", |
||||||
|
"idiom" : "iphone", |
||||||
|
"scale" : "2x", |
||||||
|
"size" : "40x40" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"filename" : "readeriPhoneSpootlight7_40pt@3x.png", |
||||||
|
"idiom" : "iphone", |
||||||
|
"scale" : "3x", |
||||||
|
"size" : "40x40" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"filename" : "readeriPhoneApp_60pt@2x.png", |
||||||
|
"idiom" : "iphone", |
||||||
|
"scale" : "2x", |
||||||
|
"size" : "60x60" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"filename" : "readeriPhoneApp_60pt@3x.png", |
||||||
|
"idiom" : "iphone", |
||||||
|
"scale" : "3x", |
||||||
|
"size" : "60x60" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"filename" : "readerstore_1024pt.png", |
||||||
|
"idiom" : "ios-marketing", |
||||||
|
"scale" : "1x", |
||||||
|
"size" : "1024x1024" |
||||||
|
} |
||||||
|
], |
||||||
|
"info" : { |
||||||
|
"author" : "xcode", |
||||||
|
"version" : 1 |
||||||
|
} |
||||||
|
} |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 24 KiB |
After Width: | Height: | Size: 2.6 KiB |
After Width: | Height: | Size: 2.7 KiB |
After Width: | Height: | Size: 5.1 KiB |
After Width: | Height: | Size: 4.8 KiB |
After Width: | Height: | Size: 8.8 KiB |
After Width: | Height: | Size: 7.6 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 194 KiB |
@ -0,0 +1,6 @@ |
|||||||
|
{ |
||||||
|
"info" : { |
||||||
|
"author" : "xcode", |
||||||
|
"version" : 1 |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,22 @@ |
|||||||
|
{ |
||||||
|
"images" : [ |
||||||
|
{ |
||||||
|
"idiom" : "universal", |
||||||
|
"scale" : "1x" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"filename" : "audio_book@2x.png", |
||||||
|
"idiom" : "universal", |
||||||
|
"scale" : "2x" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"filename" : "audio_book@3x.png", |
||||||
|
"idiom" : "universal", |
||||||
|
"scale" : "3x" |
||||||
|
} |
||||||
|
], |
||||||
|
"info" : { |
||||||
|
"author" : "xcode", |
||||||
|
"version" : 1 |
||||||
|
} |
||||||
|
} |
After Width: | Height: | Size: 603 B |
After Width: | Height: | Size: 666 B |