@ -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 |