Commit ed7a1598 authored by lmj_521aiau@163.com's avatar lmj_521aiau@163.com

GTSDK

parent 4ef993ad
No preview for this file type
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<Workspace <Workspace
version = "1.0"> version = "1.0">
<FileRef <FileRef
location = "group:/Users/mingjinli/Documents/GIT/Dolphins/Dolphins.xcodeproj"> location = "group:Dolphins.xcodeproj">
</FileRef> </FileRef>
<FileRef <FileRef
location = "group:Pods/Pods.xcodeproj"> location = "group:Pods/Pods.xcodeproj">
......
...@@ -21,6 +21,12 @@ ...@@ -21,6 +21,12 @@
#import <UMCommon/UMCommon.h> #import <UMCommon/UMCommon.h>
#import "ZJGoodsMagager.h" #import "ZJGoodsMagager.h"
#import <GTSDK/GeTuiSdk.h> // GetuiSdk头文件应用
// iOS10 及以上需导入 UserNotifications.framework
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0
#import <UserNotifications/UserNotifications.h>
#endif
@interface AppDelegate ()<WXApiDelegate> @interface AppDelegate ()<WXApiDelegate>
@end @end
...@@ -59,6 +65,11 @@ ...@@ -59,6 +65,11 @@
[self logCollection]; [self logCollection];
// 通过个推平台分配的appId、 appKey 、appSecret 启动SDK,注:该方法需要在主线程中调用
[GeTuiSdk startSdkWithAppId:kGtAppId appKey:kGtAppKey appSecret:kGtAppSecret delegate:self];
// 注册 APNs
[self registerRemoteNotification];
if (@available(iOS 13.0,*)) { if (@available(iOS 13.0,*)) {
}else{ }else{
...@@ -79,6 +90,36 @@ ...@@ -79,6 +90,36 @@
return YES; return YES;
} }
/**
* [ 参考代码,开发者注意根据实际需求自行修改 ] 注册远程通知
*
* 警告:Xcode8及以上版本需要手动开启“TARGETS -> Capabilities -> Push Notifications”
* 警告:该方法需要开发者自定义,以下代码根据APP支持的iOS系统不同,代码可以对应修改。以下为参考代码
* 注意根据实际需要修改,注意测试支持的iOS系统都能获取到DeviceToken
*
*/
- (void)registerRemoteNotification {
float iOSVersion = [[UIDevice currentDevice].systemVersion floatValue];
if (iOSVersion >= 10.0) {
UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
center.delegate = self;
[center requestAuthorizationWithOptions:(UNAuthorizationOptionBadge | UNAuthorizationOptionSound | UNAuthorizationOptionAlert | UNAuthorizationOptionCarPlay) completionHandler:^(BOOL granted, NSError *_Nullable error) {
if (!error && granted) {
NSLog(@"[ TestDemo ] iOS request authorization succeeded!");
}
}];
[[UIApplication sharedApplication] registerForRemoteNotifications];
return;
}
if (iOSVersion >= 8.0) {
UIUserNotificationType types = (UIUserNotificationTypeAlert | UIUserNotificationTypeSound | UIUserNotificationTypeBadge);
UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:types categories:nil];
[[UIApplication sharedApplication] registerUserNotificationSettings:settings];
[[UIApplication sharedApplication] registerForRemoteNotifications];
}
}
- (void)logCollection { - (void)logCollection {
NSMutableDictionary *dict = @{@"event": @"guazinovel", @"action": @"app_start", @"value": @""}.mutableCopy; NSMutableDictionary *dict = @{@"event": @"guazinovel", @"action": @"app_start", @"value": @""}.mutableCopy;
......
...@@ -28,6 +28,11 @@ ...@@ -28,6 +28,11 @@
#define desW @"uKEag1ucP2q/zekW0jT5YQ==" #define desW @"uKEag1ucP2q/zekW0jT5YQ=="
#define desT @"eJPB1HATUNI756zWUOPE+dPczxzN3HWa9DATylzXdO7FKBXnJsm8NFBd30+x6upr1wEJYuMyb3Q=" #define desT @"eJPB1HATUNI756zWUOPE+dPczxzN3HWa9DATylzXdO7FKBXnJsm8NFBd30+x6upr1wEJYuMyb3Q="
/// 个推开发者网站中申请App时,注册的AppId、AppKey、AppSecret
#define kGtAppId @"DOXzblsxdbAPrxvxJFH5a1"
#define kGtAppKey @"6bKiKrGtnv5gm313HrSxo1"
#define kGtAppSecret @"cXsoWq3JKZ6ouW3dbsuXeA"
//#if DEBUG //#if DEBUG
// //
#define ServerReport @"http://report.zhangxinhulian.com" #define ServerReport @"http://report.zhangxinhulian.com"
......
# Uncomment the next line to define a global platform for your project # Uncomment the next line to define a global platform for your project
platform :ios, '9.0' platform :ios, '9.0'
source 'https://github.com/CocoaPods/Specs.git'
target 'Dolphins' do target 'Dolphins' do
# Comment the next line if you don't want to use dynamic frameworks # Comment the next line if you don't want to use dynamic frameworks
...@@ -26,7 +27,9 @@ target 'Dolphins' do ...@@ -26,7 +27,9 @@ target 'Dolphins' do
pod 'AMap3DMap' pod 'AMap3DMap'
pod 'AMapSearch' pod 'AMapSearch'
pod 'AMapLocation' pod 'AMapLocation'
# UM统计
pod 'UMCCommon' pod 'UMCCommon'
# 个推
pod 'GTSDK'
end end
...@@ -19,23 +19,24 @@ PODS: ...@@ -19,23 +19,24 @@ PODS:
- AMapFoundation (1.6.3) - AMapFoundation (1.6.3)
- AMapLocation (2.6.5): - AMapLocation (2.6.5):
- AMapFoundation (~> 1.6.3) - AMapFoundation (~> 1.6.3)
- AMapSearch (7.4.0): - AMapSearch (7.3.0):
- AMapFoundation (~> 1.6.3) - AMapFoundation (~> 1.6.3)
- Bugly (2.5.5) - Bugly (2.5.5)
- CL_ShanYanSDK (2.3.1.2) - CL_ShanYanSDK (2.3.1.3)
- GTSDK (2.4.4.0)
- IQKeyboardManager (6.5.5) - IQKeyboardManager (6.5.5)
- Masonry (1.1.0) - Masonry (1.1.0)
- MBProgressHUD (1.2.0) - MBProgressHUD (1.2.0)
- MJExtension (3.2.2) - MJExtension (3.2.1)
- MJRefresh (3.1.15.3) - MJRefresh (3.1.15.3)
- RTRootNavigationController (0.7.2): - RTRootNavigationController (0.7.2):
- RTRootNavigationController/Core (= 0.7.2) - RTRootNavigationController/Core (= 0.7.2)
- RTRootNavigationController/Core (0.7.2) - RTRootNavigationController/Core (0.7.2)
- SDCycleScrollView (1.80): - SDCycleScrollView (1.80):
- SDWebImage (>= 5.0.0) - SDWebImage (>= 5.0.0)
- SDWebImage (5.8.4): - SDWebImage (5.8.1):
- SDWebImage/Core (= 5.8.4) - SDWebImage/Core (= 5.8.1)
- SDWebImage/Core (5.8.4) - SDWebImage/Core (5.8.1)
- SwiftyStoreKit (0.15.0) - SwiftyStoreKit (0.15.0)
- UMCCommon (7.1.0) - UMCCommon (7.1.0)
- YYModel (1.0.4) - YYModel (1.0.4)
...@@ -47,6 +48,7 @@ DEPENDENCIES: ...@@ -47,6 +48,7 @@ DEPENDENCIES:
- AMapSearch - AMapSearch
- Bugly - Bugly
- CL_ShanYanSDK - CL_ShanYanSDK
- GTSDK
- IQKeyboardManager - IQKeyboardManager
- Masonry - Masonry
- MBProgressHUD - MBProgressHUD
...@@ -60,6 +62,8 @@ DEPENDENCIES: ...@@ -60,6 +62,8 @@ DEPENDENCIES:
- YYModel - YYModel
SPEC REPOS: SPEC REPOS:
https://github.com/CocoaPods/Specs.git:
- GTSDK
trunk: trunk:
- AFNetworking - AFNetworking
- AMap3DMap - AMap3DMap
...@@ -85,21 +89,22 @@ SPEC CHECKSUMS: ...@@ -85,21 +89,22 @@ SPEC CHECKSUMS:
AMap3DMap: fc7c911f5cf079d544ad7faec256c9554cbbb202 AMap3DMap: fc7c911f5cf079d544ad7faec256c9554cbbb202
AMapFoundation: 9ed923193b357ebb30a073e9fe255d3c24054d5a AMapFoundation: 9ed923193b357ebb30a073e9fe255d3c24054d5a
AMapLocation: c566d448285cd502c1e313063d9e2460bd4d7100 AMapLocation: c566d448285cd502c1e313063d9e2460bd4d7100
AMapSearch: b7a96e6208c1d022964559ab8641644f350ab5ac AMapSearch: a048bcca3bf0b8083345070e1f193f814bd8dc01
Bugly: eded937bbb1f731cacf689c2d934ddbd9ab34f83 Bugly: eded937bbb1f731cacf689c2d934ddbd9ab34f83
CL_ShanYanSDK: 0fdb4b821bffd46c3ba381752059c920b2a9fed4 CL_ShanYanSDK: ce28039e2f7072f86c941238f104eae7269a7ddd
GTSDK: 2d7b906892fe7800c72e193e59d92067ed105e80
IQKeyboardManager: 3a8b9e603f8b0eeaf5f096a1f2b2cfcf121992ef IQKeyboardManager: 3a8b9e603f8b0eeaf5f096a1f2b2cfcf121992ef
Masonry: 678fab65091a9290e40e2832a55e7ab731aad201 Masonry: 678fab65091a9290e40e2832a55e7ab731aad201
MBProgressHUD: 3ee5efcc380f6a79a7cc9b363dd669c5e1ae7406 MBProgressHUD: 3ee5efcc380f6a79a7cc9b363dd669c5e1ae7406
MJExtension: d9b9c74cbdeb724c1e9ecbb157b318276e62e876 MJExtension: 635f2c663dcb1bf76fa4b715b2570a5710aec545
MJRefresh: b48380ae2b927b46c4ef000de9adb8dc748e1df7 MJRefresh: b48380ae2b927b46c4ef000de9adb8dc748e1df7
RTRootNavigationController: 8344c2352d6d40fa370d0366efae2c84a945213f RTRootNavigationController: 8344c2352d6d40fa370d0366efae2c84a945213f
SDCycleScrollView: b3c9a5ed840c771c4938978174c7c9d9feefeb96 SDCycleScrollView: b3c9a5ed840c771c4938978174c7c9d9feefeb96
SDWebImage: cf6922231e95550934da2ada0f20f2becf2ceba9 SDWebImage: e3eae2eda88578db0685a0c88597fdadd9433f05
SwiftyStoreKit: 033d06b6f87955405d3f844a18a7687c2438592a SwiftyStoreKit: 033d06b6f87955405d3f844a18a7687c2438592a
UMCCommon: 4e80f93492d300245683236668763dc5d0b04dbd UMCCommon: 4e80f93492d300245683236668763dc5d0b04dbd
YYModel: 2a7fdd96aaa4b86a824e26d0c517de8928c04b30 YYModel: 2a7fdd96aaa4b86a824e26d0c517de8928c04b30
PODFILE CHECKSUM: 641cec8a27c46f7c870176bab199bc309fb68e9b PODFILE CHECKSUM: 6d1bcd3249cb4a52b7de35fc28dec848d0a7ef51
COCOAPODS: 1.9.3 COCOAPODS: 1.9.3
...@@ -295,8 +295,6 @@ ...@@ -295,8 +295,6 @@
@interface AMapAddressComponent : AMapSearchObject @interface AMapAddressComponent : AMapSearchObject
///国家(since 5.7.0) ///国家(since 5.7.0)
@property (nonatomic, copy) NSString *country; @property (nonatomic, copy) NSString *country;
///国家简码(since 7.4.0)仅海外生效
@property (nonatomic, copy) NSString *countryCode;
///省/直辖市 ///省/直辖市
@property (nonatomic, copy) NSString *province; @property (nonatomic, copy) NSString *province;
///市 ///市
...@@ -362,10 +360,6 @@ ...@@ -362,10 +360,6 @@
@property (nonatomic, copy) AMapGeoPoint *location; @property (nonatomic, copy) AMapGeoPoint *location;
///匹配的等级 ///匹配的等级
@property (nonatomic, copy) NSString *level; @property (nonatomic, copy) NSString *level;
///国家(since 7.4.0)仅海外生效
@property (nonatomic, copy) NSString *country;
///国家简码(since 7.4.0)仅海外生效
@property (nonatomic, copy) NSString *postcode;
@end @end
#pragma mark - 公交查询 #pragma mark - 公交查询
...@@ -527,9 +521,6 @@ ...@@ -527,9 +521,6 @@
5,终点限行 5,终点限行
*/ */
@property (nonatomic, assign) NSInteger restriction; @property (nonatomic, assign) NSInteger restriction;
///规划路径完整坐标点串集合(since 7.4.0)
@property (nonatomic, copy) NSString *polyline;
@end @end
@interface AMapFutureTimeInfoElement : AMapSearchObject @interface AMapFutureTimeInfoElement : AMapSearchObject
...@@ -828,7 +819,7 @@ ...@@ -828,7 +819,7 @@
@end @end
#pragma mark - 企业地图基础数据类型 #pragma mark - 图基础数据类型
///POI点的图片信息 ///POI点的图片信息
@interface AMapCloudImage : AMapSearchObject @interface AMapCloudImage : AMapSearchObject
...@@ -856,9 +847,8 @@ ...@@ -856,9 +847,8 @@
@property (nonatomic, copy) NSString *createTime; @property (nonatomic, copy) NSString *createTime;
///更新时间 ///更新时间
@property (nonatomic, copy) NSString *updateTime; @property (nonatomic, copy) NSString *updateTime;
///离当前位置的距离(只在企业地图周边搜索时有效) ///离当前位置的距离(只在图周边搜索时有效)
@property (nonatomic, assign) NSInteger distance; @property (nonatomic, assign) NSInteger distance;
///图片信息 ///图片信息
@property (nonatomic, strong) NSArray<AMapCloudImage *> *images __attribute((deprecated("已废弃 since 7.4.0"))); @property (nonatomic, strong) NSArray<AMapCloudImage *> *images;
@end @end
...@@ -73,13 +73,13 @@ ...@@ -73,13 +73,13 @@
* @param info 需要上传的信息。 * @param info 需要上传的信息。
* @return 成功执行返回YES,否则返回NO。 * @return 成功执行返回YES,否则返回NO。
*/ */
- (BOOL)uploadNearbyInfo:(AMapNearbyUploadInfo *)info __attribute((deprecated("已废弃 since 7.4.0,该功能不再支持"))); - (BOOL)uploadNearbyInfo:(AMapNearbyUploadInfo *)info;
/** /**
* @brief 清除服务器上某一用户的信息。 * @brief 清除服务器上某一用户的信息。
* @param userID 指定的用户ID * @param userID 指定的用户ID
* @return 成功执行返回YES,否则返回NO。 * @return 成功执行返回YES,否则返回NO。
*/ */
- (BOOL)clearUserInfoWithID:(NSString *)userID __attribute((deprecated("已废弃 since 7.4.0,该功能不再支持"))); - (BOOL)clearUserInfoWithID:(NSString *)userID;
@end @end
...@@ -13,8 +13,11 @@ ...@@ -13,8 +13,11 @@
@protocol AMapSearchDelegate; @protocol AMapSearchDelegate;
///搜索结果语言 ///搜索结果语言
#define AMapSearchLanguageZhCN @"zh" ///< 中文 typedef NS_ENUM(NSInteger, AMapSearchLanguage)
#define AMapSearchLanguageEn @"en" ///< 英文 {
AMapSearchLanguageZhCN = 0, ///< 中文
AMapSearchLanguageEn = 1 ///< 英文
};
///搜索类 ///搜索类
@interface AMapSearchAPI : NSObject @interface AMapSearchAPI : NSObject
...@@ -26,7 +29,8 @@ ...@@ -26,7 +29,8 @@
@property (nonatomic, assign) NSInteger timeout; @property (nonatomic, assign) NSInteger timeout;
///查询结果返回语言, 默认为中文。 ///查询结果返回语言, 默认为中文。
@property (nonatomic, copy) NSString *language; @property (nonatomic, assign) AMapSearchLanguage language;
/** /**
* @brief AMapSearch的初始化函数。 * @brief AMapSearch的初始化函数。
...@@ -180,30 +184,30 @@ ...@@ -180,30 +184,30 @@
* @brief 附近搜索查询接口 * @brief 附近搜索查询接口
* @param request 查询选项。具体属性字段请参考 AMapNearbySearchRequest 类。 * @param request 查询选项。具体属性字段请参考 AMapNearbySearchRequest 类。
*/ */
- (void)AMapNearbySearch:(AMapNearbySearchRequest *)request __attribute__((deprecated("已废弃, from 7.4.0,该功能不再支持"))); - (void)AMapNearbySearch:(AMapNearbySearchRequest *)request;
#pragma mark - 企业地图搜索相关 #pragma mark - 图搜索相关
/** /**
* @brief 企业地图周边查询接口 * @brief 图周边查询接口
* @param request 查询选项。具体属性字段请参考 AMapCloudPOIAroundSearchRequest 类。 * @param request 查询选项。具体属性字段请参考 AMapCloudPOIAroundSearchRequest 类。
*/ */
- (void)AMapCloudPOIAroundSearch:(AMapCloudPOIAroundSearchRequest *)request; - (void)AMapCloudPOIAroundSearch:(AMapCloudPOIAroundSearchRequest *)request;
/** /**
* @brief 企业地图polygon区域查询接口 * @brief 图polygon区域查询接口
* @param request 查询选项。具体属性字段请参考 AMapCloudPOIPolygonSearchRequest 类。 * @param request 查询选项。具体属性字段请参考 AMapCloudPOIPolygonSearchRequest 类。
*/ */
- (void)AMapCloudPOIPolygonSearch:(AMapCloudPOIPolygonSearchRequest *)request; - (void)AMapCloudPOIPolygonSearch:(AMapCloudPOIPolygonSearchRequest *)request;
/** /**
* @brief 企业地图ID查询接口 * @brief 图ID查询接口
* @param request 查询选项。具体属性字段请参考 AMapCloudPOIIDSearchRequest 类。 * @param request 查询选项。具体属性字段请参考 AMapCloudPOIIDSearchRequest 类。
*/ */
- (void)AMapCloudPOIIDSearch:(AMapCloudPOIIDSearchRequest *)request; - (void)AMapCloudPOIIDSearch:(AMapCloudPOIIDSearchRequest *)request;
/** /**
* @brief 企业地图本地查询接口 * @brief 图本地查询接口
* @param request 查询选项。具体属性字段请参考 AMapCloudPOILocalSearchRequest 类。 * @param request 查询选项。具体属性字段请参考 AMapCloudPOILocalSearchRequest 类。
*/ */
- (void)AMapCloudPOILocalSearch:(AMapCloudPOILocalSearchRequest *)request; - (void)AMapCloudPOILocalSearch:(AMapCloudPOILocalSearchRequest *)request;
...@@ -349,10 +353,10 @@ ...@@ -349,10 +353,10 @@
*/ */
- (void)onNearbySearchDone:(AMapNearbySearchRequest *)request response:(AMapNearbySearchResponse *)response; - (void)onNearbySearchDone:(AMapNearbySearchRequest *)request response:(AMapNearbySearchResponse *)response;
#pragma mark - 企业地图搜索回调 #pragma mark - 图搜索回调
/** /**
* @brief 企业地图查询回调函数 * @brief 图查询回调函数
* @param request 发起的请求,具体字段参考 AMapCloudSearchBaseRequest 。 * @param request 发起的请求,具体字段参考 AMapCloudSearchBaseRequest 。
* @param response 响应结果,具体字段参考 AMapCloudPOISearchResponse 。 * @param response 响应结果,具体字段参考 AMapCloudPOISearchResponse 。
*/ */
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
#ifndef AMapSearchVersion_h #ifndef AMapSearchVersion_h
#define AMapSearchVersion_h #define AMapSearchVersion_h
#define AMapSearchVersionNumber 70400 #define AMapSearchVersionNumber 70300
#define AMapSearchMinRequiredFoundationVersion 10603 #define AMapSearchMinRequiredFoundationVersion 10603
// 依赖库版本检测 // 依赖库版本检测
......
...@@ -18,7 +18,7 @@ CL_ShanYanSDK is available through [CocoaPods](https://cocoapods.org). To instal ...@@ -18,7 +18,7 @@ CL_ShanYanSDK is available through [CocoaPods](https://cocoapods.org). To instal
it, simply add the following line to your Podfile: it, simply add the following line to your Podfile:
```ruby ```ruby
pod 'CL_ShanYanSDK' , '~> 2.3.1.2' pod 'CL_ShanYanSDK' , '~> 2.3.1.3'
``` ```
## 接入文档以官网http://flash.253.com 为准 ## 接入文档以官网http://flash.253.com 为准
......
...@@ -15,8 +15,6 @@ typedef NSString *UASDKErrorCode; ...@@ -15,8 +15,6 @@ typedef NSString *UASDKErrorCode;
//成功 //成功
static UASDKErrorCode const UASDKErrorCodeSuccess = @"103000"; static UASDKErrorCode const UASDKErrorCodeSuccess = @"103000";
//用户取消登录
static UASDKErrorCode const UASDKErrorCodeUserCancelAuth = @"200020";
//数据解析异常 //数据解析异常
static UASDKErrorCode const UASDKErrorCodeProcessException = @"200021"; static UASDKErrorCode const UASDKErrorCodeProcessException = @"200021";
//无网络 //无网络
...@@ -57,6 +55,9 @@ static UASDKErrorCode const UASDKErrorCodeLocationError = @"200086"; ...@@ -57,6 +55,9 @@ static UASDKErrorCode const UASDKErrorCodeLocationError = @"200086";
static UASDKErrorCode const UASDKSuccessGetAuthVCCode = @"200087"; static UASDKErrorCode const UASDKSuccessGetAuthVCCode = @"200087";
//SDK正在处理 //SDK正在处理
static UASDKErrorCode const UASDKErrorCodeHandling = @"200089"; static UASDKErrorCode const UASDKErrorCodeHandling = @"200089";
//当前网络不支持取号
static UASDKErrorCode const UASDKErrorCodeUnsupportedNetwork = @"200096";
/** /**
获取错误码描述 获取错误码描述
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
#import <UIKit/UIKit.h> #import <UIKit/UIKit.h>
#define UASDKVERSION @"quick_login_iOS_5.3.12" #define UASDKVERSION @"quick_login_iOS_5.7.1"
@class UACustomModel; @class UACustomModel;
NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_BEGIN
......
This diff is collapsed.
This diff is collapsed.
# getui-sdk-ios-cocoapods
个推iOS SDK CocoaPods集成库
## podfile 配置
``` java
platform :ios, "8.0"
pod 'GTSDK'
```
...@@ -147,7 +147,7 @@ ...@@ -147,7 +147,7 @@
if ([originKey isKindOfClass:[NSString class]]) { // 字符串类型的key if ([originKey isKindOfClass:[NSString class]]) { // 字符串类型的key
NSArray *propertyKeys = [self propertyKeysWithStringKey:originKey]; NSArray *propertyKeys = [self propertyKeysWithStringKey:originKey];
if (propertyKeys.count) { if (propertyKeys.count) {
[self setPropertyKeys:@[propertyKeys] forClass:c]; [self setPorpertyKeys:@[propertyKeys] forClass:c];
} }
} else if ([originKey isKindOfClass:[NSArray class]]) { } else if ([originKey isKindOfClass:[NSArray class]]) {
NSMutableArray *keyses = [NSMutableArray array]; NSMutableArray *keyses = [NSMutableArray array];
...@@ -158,13 +158,13 @@ ...@@ -158,13 +158,13 @@
} }
} }
if (keyses.count) { if (keyses.count) {
[self setPropertyKeys:keyses forClass:c]; [self setPorpertyKeys:keyses forClass:c];
} }
} }
} }
/** 对应着字典中的多级key */ /** 对应着字典中的多级key */
- (void)setPropertyKeys:(NSArray *)propertyKeys forClass:(Class)c - (void)setPorpertyKeys:(NSArray *)propertyKeys forClass:(Class)c
{ {
if (propertyKeys.count == 0) return; if (propertyKeys.count == 0) return;
NSString *key = NSStringFromClass(c); NSString *key = NSStringFromClass(c);
......
...@@ -71,7 +71,7 @@ ...@@ -71,7 +71,7 @@
* 当模型转字典完毕时调用 * 当模型转字典完毕时调用
*/ */
- (void)mj_objectDidFinishConvertingToKeyValues MJExtensionDeprecated("请使用`mj_objectDidConvertToKeyValues:`替代"); - (void)mj_objectDidFinishConvertingToKeyValues MJExtensionDeprecated("请使用`mj_objectDidConvertToKeyValues:`替代");
- (void)mj_objectDidConvertToKeyValues:(NSMutableDictionary *)keyValues; - (void)mj_objectDidConvertToKeyValues:(NSDictionary *)keyValues;
@end @end
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
@implementation NSDecimalNumber(MJKeyValue) @implementation NSDecimalNumber(MJKeyValue)
- (id)mj_standardValueWithTypeCode:(NSString *)typeCode { - (id)standardValueWithTypeCode:(NSString *)typeCode {
// 由于这里涉及到编译器问题, 暂时保留 Long, 实际上在 64 位系统上, 这 2 个精度范围相同, // 由于这里涉及到编译器问题, 暂时保留 Long, 实际上在 64 位系统上, 这 2 个精度范围相同,
// 32 位略有不同, 其余都可使用 Double 进行强转不丢失精度 // 32 位略有不同, 其余都可使用 Double 进行强转不丢失精度
if ([typeCode isEqualToString:MJPropertyTypeLongLong]) { if ([typeCode isEqualToString:MJPropertyTypeLongLong]) {
...@@ -187,7 +187,7 @@ static const char MJReferenceReplacedKeyWhenCreatingKeyValuesKey = '\0'; ...@@ -187,7 +187,7 @@ static const char MJReferenceReplacedKeyWhenCreatingKeyValuesKey = '\0';
if (decimalValue == NSDecimalNumber.notANumber) { if (decimalValue == NSDecimalNumber.notANumber) {
value = @(0); value = @(0);
}else if (propertyClass != [NSDecimalNumber class]) { }else if (propertyClass != [NSDecimalNumber class]) {
value = [decimalValue mj_standardValueWithTypeCode:type.code]; value = [decimalValue standardValueWithTypeCode:type.code];
} else { } else {
value = decimalValue; value = decimalValue;
} }
......
...@@ -140,32 +140,35 @@ static const char MJCachedPropertiesKey = '\0'; ...@@ -140,32 +140,35 @@ static const char MJCachedPropertiesKey = '\0';
{ {
NSMutableArray *cachedProperties = [self mj_propertyDictForKey:&MJCachedPropertiesKey][NSStringFromClass(self)]; NSMutableArray *cachedProperties = [self mj_propertyDictForKey:&MJCachedPropertiesKey][NSStringFromClass(self)];
if (cachedProperties == nil) { if (cachedProperties == nil) {
cachedProperties = [NSMutableArray array];
if (cachedProperties == nil) {
[self mj_enumerateClasses:^(__unsafe_unretained Class c, BOOL *stop) { cachedProperties = [NSMutableArray array];
// 1.获得所有的成员变量
unsigned int outCount = 0;
objc_property_t *properties = class_copyPropertyList(c, &outCount);
// 2.遍历每一个成员变量 [self mj_enumerateClasses:^(__unsafe_unretained Class c, BOOL *stop) {
for (unsigned int i = 0; i<outCount; i++) { // 1.获得所有的成员变量
MJProperty *property = [MJProperty cachedPropertyWithProperty:properties[i]]; unsigned int outCount = 0;
// 过滤掉Foundation框架类里面的属性 objc_property_t *properties = class_copyPropertyList(c, &outCount);
if ([MJFoundation isClassFromFoundation:property.srcClass]) continue;
// 过滤掉`hash`, `superclass`, `description`, `debugDescription`
if ([MJFoundation isFromNSObjectProtocolProperty:property.name]) continue;
property.srcClass = c; // 2.遍历每一个成员变量
[property setOriginKey:[self mj_propertyKey:property.name] forClass:self]; for (unsigned int i = 0; i<outCount; i++) {
[property setObjectClassInArray:[self mj_propertyObjectClassInArray:property.name] forClass:self]; MJProperty *property = [MJProperty cachedPropertyWithProperty:properties[i]];
[cachedProperties addObject:property]; // 过滤掉Foundation框架类里面的属性
} if ([MJFoundation isClassFromFoundation:property.srcClass]) continue;
// 过滤掉`hash`, `superclass`, `description`, `debugDescription`
if ([MJFoundation isFromNSObjectProtocolProperty:property.name]) continue;
property.srcClass = c;
[property setOriginKey:[self mj_propertyKey:property.name] forClass:self];
[property setObjectClassInArray:[self mj_propertyObjectClassInArray:property.name] forClass:self];
[cachedProperties addObject:property];
}
// 3.释放内存
free(properties);
}];
// 3.释放内存 [self mj_propertyDictForKey:&MJCachedPropertiesKey][NSStringFromClass(self)] = cachedProperties;
free(properties); }
}];
[self mj_propertyDictForKey:&MJCachedPropertiesKey][NSStringFromClass(self)] = cachedProperties;
} }
return cachedProperties; return cachedProperties;
......
...@@ -5,9 +5,9 @@ MJExtension ...@@ -5,9 +5,9 @@ MJExtension
- A fast, convenient and nonintrusive conversion framework between JSON and model. - A fast, convenient and nonintrusive conversion framework between JSON and model.
- 转换速度快、使用简单方便的字典转模型框架 - 转换速度快、使用简单方便的字典转模型框架
[📜✍🏻**Release Notes**: more details](https://github.com/CoderMJLee/MJExtension/releases)
### ‼️ 纯Swift版的JSON与Model转换框架已经开源上架 ‼️
## ‼️ 纯Swift版的JSON与Model转换框架已经开源上架 ‼️
- [KakaJSON](https://github.com/kakaopensource/KakaJSON) - [KakaJSON](https://github.com/kakaopensource/KakaJSON)
- [中文教程](https://www.cnblogs.com/mjios/p/11352776.html) - [中文教程](https://www.cnblogs.com/mjios/p/11352776.html)
...@@ -17,10 +17,10 @@ MJExtension ...@@ -17,10 +17,10 @@ MJExtension
### 关于在Swift中使用MJExtension ‼️ ## 关于在Swift中使用MJExtension ‼️
#### ‼️ `@objc` attributes should be added to class and property for declaration of Objc accessibility [在 Swift4 之后, 请在属性前加 `@objc` 修饰. 以保证 Swift 的属性能够暴露给 Objc 使用. ]‼️ ### ‼️ 在 Swift4 之后, 请在属性前加 `@objc` 修饰. 以保证 Swift 的属性能够暴露给 Objc 使用. ‼️
#### ‼️ Use `NSNumber` instead of `Bool`, which is not bridged to `BOOL`. [请勿使用 `Bool` 类型, 因为在 Swift 中并没有桥接该类型, 不能显式的对应 `BOOL`, 请使用 `NSNumber` 替代] ‼️ ### ‼️ 请勿使用 `Bool` 类型, 因为在 Swift 中并没有桥接该类型, 不能显式的对应 `BOOL`, 请使用 `NSNumber` 替代 ‼️
...@@ -42,7 +42,6 @@ MJExtension ...@@ -42,7 +42,6 @@ MJExtension
* [Coding](#Coding) * [Coding](#Coding)
* [Camel -> underline](#Camel_underline) * [Camel -> underline](#Camel_underline)
* [NSString -> NSDate, nil -> @""](#NSString_NSDate) * [NSString -> NSDate, nil -> @""](#NSString_NSDate)
* [NSDate -> NSString](#NSDate_NSString)
* [More use cases](#More_use_cases) * [More use cases](#More_use_cases)
--- ---
...@@ -85,8 +84,6 @@ NSObject+MJKeyValue.h NSObject+MJKeyValue.m ...@@ -85,8 +84,6 @@ NSObject+MJKeyValue.h NSObject+MJKeyValue.m
# <a id="Examples"></a> Examples【示例】 # <a id="Examples"></a> Examples【示例】
**Add `MJKeyValue` protocol to your model if needed【如果有需要, 请在模型中加入 `MJKeyValue` 协议】**
### <a id="JSON_Model"></a> The most simple JSON -> Model【最简单的字典转模型】 ### <a id="JSON_Model"></a> The most simple JSON -> Model【最简单的字典转模型】
```objc ```objc
...@@ -551,21 +548,7 @@ Book *book = [Book mj_objectWithKeyValues:dict]; ...@@ -551,21 +548,7 @@ Book *book = [Book mj_objectWithKeyValues:dict];
NSLog(@"name=%@, publisher=%@, publishedTime=%@", book.name, book.publisher, book.publishedTime); NSLog(@"name=%@, publisher=%@, publishedTime=%@", book.name, book.publisher, book.publishedTime);
``` ```
### <a id="NSDate_NSString"></a> NSDate -> NSString【模型转字典时, 修改 Date 类型至 String】
```objc
- (void)mj_objectDidConvertToKeyValues:(NSMutableDictionary *)keyValues {
// NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
// formatter.dateFormat = @"yyy-MM-dd";
// should use sharedFormatter for better performance
keyValues[@"publishedTime"] = [sharedFormatter stringFromDate:self.publishedTime];
}
```
### <a id="More_use_cases"></a> More use cases【更多用法】 ### <a id="More_use_cases"></a> More use cases【更多用法】
- Please reference to `NSObject+MJKeyValue.h` and `NSObject+MJCoding.h` - Please reference to `NSObject+MJKeyValue.h` and `NSObject+MJCoding.h`
......
...@@ -19,23 +19,24 @@ PODS: ...@@ -19,23 +19,24 @@ PODS:
- AMapFoundation (1.6.3) - AMapFoundation (1.6.3)
- AMapLocation (2.6.5): - AMapLocation (2.6.5):
- AMapFoundation (~> 1.6.3) - AMapFoundation (~> 1.6.3)
- AMapSearch (7.4.0): - AMapSearch (7.3.0):
- AMapFoundation (~> 1.6.3) - AMapFoundation (~> 1.6.3)
- Bugly (2.5.5) - Bugly (2.5.5)
- CL_ShanYanSDK (2.3.1.2) - CL_ShanYanSDK (2.3.1.3)
- GTSDK (2.4.4.0)
- IQKeyboardManager (6.5.5) - IQKeyboardManager (6.5.5)
- Masonry (1.1.0) - Masonry (1.1.0)
- MBProgressHUD (1.2.0) - MBProgressHUD (1.2.0)
- MJExtension (3.2.2) - MJExtension (3.2.1)
- MJRefresh (3.1.15.3) - MJRefresh (3.1.15.3)
- RTRootNavigationController (0.7.2): - RTRootNavigationController (0.7.2):
- RTRootNavigationController/Core (= 0.7.2) - RTRootNavigationController/Core (= 0.7.2)
- RTRootNavigationController/Core (0.7.2) - RTRootNavigationController/Core (0.7.2)
- SDCycleScrollView (1.80): - SDCycleScrollView (1.80):
- SDWebImage (>= 5.0.0) - SDWebImage (>= 5.0.0)
- SDWebImage (5.8.4): - SDWebImage (5.8.1):
- SDWebImage/Core (= 5.8.4) - SDWebImage/Core (= 5.8.1)
- SDWebImage/Core (5.8.4) - SDWebImage/Core (5.8.1)
- SwiftyStoreKit (0.15.0) - SwiftyStoreKit (0.15.0)
- UMCCommon (7.1.0) - UMCCommon (7.1.0)
- YYModel (1.0.4) - YYModel (1.0.4)
...@@ -47,6 +48,7 @@ DEPENDENCIES: ...@@ -47,6 +48,7 @@ DEPENDENCIES:
- AMapSearch - AMapSearch
- Bugly - Bugly
- CL_ShanYanSDK - CL_ShanYanSDK
- GTSDK
- IQKeyboardManager - IQKeyboardManager
- Masonry - Masonry
- MBProgressHUD - MBProgressHUD
...@@ -60,6 +62,8 @@ DEPENDENCIES: ...@@ -60,6 +62,8 @@ DEPENDENCIES:
- YYModel - YYModel
SPEC REPOS: SPEC REPOS:
https://github.com/CocoaPods/Specs.git:
- GTSDK
trunk: trunk:
- AFNetworking - AFNetworking
- AMap3DMap - AMap3DMap
...@@ -85,21 +89,22 @@ SPEC CHECKSUMS: ...@@ -85,21 +89,22 @@ SPEC CHECKSUMS:
AMap3DMap: fc7c911f5cf079d544ad7faec256c9554cbbb202 AMap3DMap: fc7c911f5cf079d544ad7faec256c9554cbbb202
AMapFoundation: 9ed923193b357ebb30a073e9fe255d3c24054d5a AMapFoundation: 9ed923193b357ebb30a073e9fe255d3c24054d5a
AMapLocation: c566d448285cd502c1e313063d9e2460bd4d7100 AMapLocation: c566d448285cd502c1e313063d9e2460bd4d7100
AMapSearch: b7a96e6208c1d022964559ab8641644f350ab5ac AMapSearch: a048bcca3bf0b8083345070e1f193f814bd8dc01
Bugly: eded937bbb1f731cacf689c2d934ddbd9ab34f83 Bugly: eded937bbb1f731cacf689c2d934ddbd9ab34f83
CL_ShanYanSDK: 0fdb4b821bffd46c3ba381752059c920b2a9fed4 CL_ShanYanSDK: ce28039e2f7072f86c941238f104eae7269a7ddd
GTSDK: 2d7b906892fe7800c72e193e59d92067ed105e80
IQKeyboardManager: 3a8b9e603f8b0eeaf5f096a1f2b2cfcf121992ef IQKeyboardManager: 3a8b9e603f8b0eeaf5f096a1f2b2cfcf121992ef
Masonry: 678fab65091a9290e40e2832a55e7ab731aad201 Masonry: 678fab65091a9290e40e2832a55e7ab731aad201
MBProgressHUD: 3ee5efcc380f6a79a7cc9b363dd669c5e1ae7406 MBProgressHUD: 3ee5efcc380f6a79a7cc9b363dd669c5e1ae7406
MJExtension: d9b9c74cbdeb724c1e9ecbb157b318276e62e876 MJExtension: 635f2c663dcb1bf76fa4b715b2570a5710aec545
MJRefresh: b48380ae2b927b46c4ef000de9adb8dc748e1df7 MJRefresh: b48380ae2b927b46c4ef000de9adb8dc748e1df7
RTRootNavigationController: 8344c2352d6d40fa370d0366efae2c84a945213f RTRootNavigationController: 8344c2352d6d40fa370d0366efae2c84a945213f
SDCycleScrollView: b3c9a5ed840c771c4938978174c7c9d9feefeb96 SDCycleScrollView: b3c9a5ed840c771c4938978174c7c9d9feefeb96
SDWebImage: cf6922231e95550934da2ada0f20f2becf2ceba9 SDWebImage: e3eae2eda88578db0685a0c88597fdadd9433f05
SwiftyStoreKit: 033d06b6f87955405d3f844a18a7687c2438592a SwiftyStoreKit: 033d06b6f87955405d3f844a18a7687c2438592a
UMCCommon: 4e80f93492d300245683236668763dc5d0b04dbd UMCCommon: 4e80f93492d300245683236668763dc5d0b04dbd
YYModel: 2a7fdd96aaa4b86a824e26d0c517de8928c04b30 YYModel: 2a7fdd96aaa4b86a824e26d0c517de8928c04b30
PODFILE CHECKSUM: 641cec8a27c46f7c870176bab199bc309fb68e9b PODFILE CHECKSUM: 6d1bcd3249cb4a52b7de35fc28dec848d0a7ef51
COCOAPODS: 1.9.3 COCOAPODS: 1.9.3
This diff is collapsed.
...@@ -14,9 +14,9 @@ ...@@ -14,9 +14,9 @@
buildForArchiving = "YES"> buildForArchiving = "YES">
<BuildableReference <BuildableReference
BuildableIdentifier = "primary" BuildableIdentifier = "primary"
BlueprintIdentifier = "4A68CFD979D413A619DF631BB121D98F" BlueprintIdentifier = "A0DC60C966312FA79A138A075D99BB51"
BuildableName = "Bugly" BuildableName = "GTSDK"
BlueprintName = "Bugly" BlueprintName = "GTSDK"
ReferencedContainer = "container:Pods.xcodeproj"> ReferencedContainer = "container:Pods.xcodeproj">
</BuildableReference> </BuildableReference>
</BuildActionEntry> </BuildActionEntry>
......
...@@ -39,6 +39,11 @@ ...@@ -39,6 +39,11 @@
<key>isShown</key> <key>isShown</key>
<false/> <false/>
</dict> </dict>
<key>GTSDK.xcscheme</key>
<dict>
<key>isShown</key>
<false/>
</dict>
<key>IQKeyboardManager.xcscheme</key> <key>IQKeyboardManager.xcscheme</key>
<dict> <dict>
<key>isShown</key> <key>isShown</key>
......
<?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 = "AFNetworking.framework"
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>
<?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 = "3957A4F8F4B8823C2472883F7D067592"
BuildableName = "AMap3DMap"
BlueprintName = "AMap3DMap"
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>
<?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 = "39082CE2CA8065D786A75F5C09CFF2C0"
BuildableName = "AMapFoundation"
BlueprintName = "AMapFoundation"
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>
<?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 = "971676D1C9A11C105647D995975ACE4F"
BuildableName = "AMapLocation"
BlueprintName = "AMapLocation"
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>
<?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 = "54F872FDE6669F86C58C8075211FE643"
BuildableName = "AMapSearch"
BlueprintName = "AMapSearch"
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>
<?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 = "6CEA38EC2E63D96E7179449F1279A773"
BuildableName = "CL_ShanYanSDK"
BlueprintName = "CL_ShanYanSDK"
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>
<?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 = "FBA456CB50E371584C11231929A0971E"
BuildableName = "IQKeyboardManager.framework"
BlueprintName = "IQKeyboardManager"
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>
<?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 = "82B0A41D3031FF27D78E17B0A9A46FB0"
BuildableName = "MBProgressHUD.framework"
BlueprintName = "MBProgressHUD"
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>
<?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 = "4D3BA58D0583DF37575CACAB3DDADC85"
BuildableName = "MJExtension.framework"
BlueprintName = "MJExtension"
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>
<?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 = "6868056D761E163D10FDAF8CF1C4D9B8"
BuildableName = "MJRefresh.framework"
BlueprintName = "MJRefresh"
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>
<?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 = "Masonry.framework"
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>
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1100"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "00C6B7720AABB26A37B677D2BF700A82"
BuildableName = "Pods_Dolphins.framework"
BlueprintName = "Pods-Dolphins"
ReferencedContainer = "container:Pods.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">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
<?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 = "4E0A478BA545855D88DD3EEB827121FB"
BuildableName = "RTRootNavigationController.framework"
BlueprintName = "RTRootNavigationController"
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>
<?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 = "CBED833AAD6266F3AEFE9BE31C68E094"
BuildableName = "SDCycleScrollView.framework"
BlueprintName = "SDCycleScrollView"
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>
<?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 = "3847153A6E5EEFB86565BA840768F429"
BuildableName = "SDWebImage.framework"
BlueprintName = "SDWebImage"
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>
<?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 = "FCD4F1901DD86FEB184BFDD6673F4A7B"
BuildableName = "SwiftyStoreKit.framework"
BlueprintName = "SwiftyStoreKit"
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>
<?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>
<?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 = "84B44807A12996D487A4A591A481D6A0"
BuildableName = "YYModel.framework"
BlueprintName = "YYModel"
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>
<?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>AMap3DMap.xcscheme</key>
<dict>
<key>isShown</key>
<false/>
</dict>
<key>AMapFoundation.xcscheme</key>
<dict>
<key>isShown</key>
<false/>
</dict>
<key>AMapLocation.xcscheme</key>
<dict>
<key>isShown</key>
<false/>
</dict>
<key>AMapSearch.xcscheme</key>
<dict>
<key>isShown</key>
<false/>
</dict>
<key>Bugly.xcscheme</key>
<dict>
<key>isShown</key>
<false/>
</dict>
<key>CL_ShanYanSDK.xcscheme</key>
<dict>
<key>isShown</key>
<false/>
</dict>
<key>IQKeyboardManager.xcscheme</key>
<dict>
<key>isShown</key>
<false/>
</dict>
<key>MBProgressHUD.xcscheme</key>
<dict>
<key>isShown</key>
<false/>
</dict>
<key>MJExtension.xcscheme</key>
<dict>
<key>isShown</key>
<false/>
</dict>
<key>MJRefresh.xcscheme</key>
<dict>
<key>isShown</key>
<false/>
</dict>
<key>Masonry.xcscheme</key>
<dict>
<key>isShown</key>
<false/>
</dict>
<key>Pods-Dolphins.xcscheme</key>
<dict>
<key>isShown</key>
<false/>
</dict>
<key>RTRootNavigationController.xcscheme</key>
<dict>
<key>isShown</key>
<false/>
</dict>
<key>SDCycleScrollView.xcscheme</key>
<dict>
<key>isShown</key>
<false/>
</dict>
<key>SDWebImage.xcscheme</key>
<dict>
<key>isShown</key>
<false/>
</dict>
<key>SwiftyStoreKit.xcscheme</key>
<dict>
<key>isShown</key>
<false/>
</dict>
<key>UMCCommon.xcscheme</key>
<dict>
<key>isShown</key>
<false/>
</dict>
<key>YYModel.xcscheme</key>
<dict>
<key>isShown</key>
<false/>
</dict>
</dict>
<key>SuppressBuildableAutocreation</key>
<dict/>
</dict>
</plist>
...@@ -13,8 +13,6 @@ ...@@ -13,8 +13,6 @@
#import "SDImageFrame.h" #import "SDImageFrame.h"
#import "UIImage+MemoryCacheCost.h" #import "UIImage+MemoryCacheCost.h"
#import "UIImage+Metadata.h" #import "UIImage+Metadata.h"
#import "UIImage+MultiFormat.h"
#import "SDImageCoderHelper.h"
#import "SDImageAssetManager.h" #import "SDImageAssetManager.h"
#import "objc/runtime.h" #import "objc/runtime.h"
...@@ -329,62 +327,3 @@ static CGFloat SDImageScaleFromPath(NSString *string) { ...@@ -329,62 +327,3 @@ static CGFloat SDImageScaleFromPath(NSString *string) {
} }
@end @end
@implementation SDAnimatedImage (MultiFormat)
+ (nullable UIImage *)sd_imageWithData:(nullable NSData *)data {
return [self sd_imageWithData:data scale:1];
}
+ (nullable UIImage *)sd_imageWithData:(nullable NSData *)data scale:(CGFloat)scale {
return [self sd_imageWithData:data scale:scale firstFrameOnly:NO];
}
+ (nullable UIImage *)sd_imageWithData:(nullable NSData *)data scale:(CGFloat)scale firstFrameOnly:(BOOL)firstFrameOnly {
if (!data) {
return nil;
}
return [[self alloc] initWithData:data scale:scale options:@{SDImageCoderDecodeFirstFrameOnly : @(firstFrameOnly)}];
}
- (nullable NSData *)sd_imageData {
NSData *imageData = self.animatedImageData;
if (imageData) {
return imageData;
} else {
return [self sd_imageDataAsFormat:self.animatedImageFormat];
}
}
- (nullable NSData *)sd_imageDataAsFormat:(SDImageFormat)imageFormat {
return [self sd_imageDataAsFormat:imageFormat compressionQuality:1];
}
- (nullable NSData *)sd_imageDataAsFormat:(SDImageFormat)imageFormat compressionQuality:(double)compressionQuality {
return [self sd_imageDataAsFormat:imageFormat compressionQuality:compressionQuality firstFrameOnly:NO];
}
- (nullable NSData *)sd_imageDataAsFormat:(SDImageFormat)imageFormat compressionQuality:(double)compressionQuality firstFrameOnly:(BOOL)firstFrameOnly {
if (firstFrameOnly) {
// First frame, use super implementation
return [super sd_imageDataAsFormat:imageFormat compressionQuality:compressionQuality firstFrameOnly:firstFrameOnly];
}
NSUInteger frameCount = self.animatedImageFrameCount;
if (frameCount <= 1) {
// Static image, use super implementation
return [super sd_imageDataAsFormat:imageFormat compressionQuality:compressionQuality firstFrameOnly:firstFrameOnly];
}
// Keep animated image encoding, loop each frame.
NSMutableArray<SDImageFrame *> *frames = [NSMutableArray arrayWithCapacity:frameCount];
for (size_t i = 0; i < frameCount; i++) {
UIImage *image = [self animatedImageFrameAtIndex:i];
NSTimeInterval duration = [self animatedImageDurationAtIndex:i];
SDImageFrame *frame = [SDImageFrame frameWithImage:image duration:duration];
[frames addObject:frame];
}
UIImage *animatedImage = [SDImageCoderHelper animatedImageWithFrames:frames];
NSData *imageData = [animatedImage sd_imageDataAsFormat:imageFormat compressionQuality:compressionQuality firstFrameOnly:firstFrameOnly];
return imageData;
}
@end
...@@ -16,10 +16,7 @@ ...@@ -16,10 +16,7 @@
#import "SDInternalMacros.h" #import "SDInternalMacros.h"
#import "objc/runtime.h" #import "objc/runtime.h"
@interface UIImageView () <CALayerDelegate> @interface SDAnimatedImageView () <CALayerDelegate> {
@end
@interface SDAnimatedImageView () {
BOOL _initFinished; // Extra flag to mark the `commonInit` is called BOOL _initFinished; // Extra flag to mark the `commonInit` is called
NSRunLoopMode _runLoopMode; NSRunLoopMode _runLoopMode;
NSUInteger _maxBufferSize; NSUInteger _maxBufferSize;
...@@ -472,11 +469,6 @@ ...@@ -472,11 +469,6 @@
if (currentFrame) { if (currentFrame) {
layer.contentsScale = currentFrame.scale; layer.contentsScale = currentFrame.scale;
layer.contents = (__bridge id)currentFrame.CGImage; layer.contents = (__bridge id)currentFrame.CGImage;
} else {
// If we have no animation frames, call super implementation. iOS 14+ UIImageView use this delegate method for rendering.
if ([UIImageView instancesRespondToSelector:@selector(displayLayer:)]) {
[super displayLayer:layer];
}
} }
} }
......
...@@ -110,7 +110,7 @@ static NSString * kSDCGImageDestinationRequestedFileSize = @"kCGImageDestination ...@@ -110,7 +110,7 @@ static NSString * kSDCGImageDestinationRequestedFileSize = @"kCGImageDestination
+ (NSUInteger)imageLoopCountWithSource:(CGImageSourceRef)source { + (NSUInteger)imageLoopCountWithSource:(CGImageSourceRef)source {
NSUInteger loopCount = self.defaultLoopCount; NSUInteger loopCount = self.defaultLoopCount;
NSDictionary *imageProperties = (__bridge_transfer NSDictionary *)CGImageSourceCopyProperties(source, NULL); NSDictionary *imageProperties = (__bridge_transfer NSDictionary *)CGImageSourceCopyProperties(source, nil);
NSDictionary *containerProperties = imageProperties[self.dictionaryProperty]; NSDictionary *containerProperties = imageProperties[self.dictionaryProperty];
if (containerProperties) { if (containerProperties) {
NSNumber *containerLoopCount = containerProperties[self.loopCountProperty]; NSNumber *containerLoopCount = containerProperties[self.loopCountProperty];
...@@ -199,7 +199,7 @@ static NSString * kSDCGImageDestinationRequestedFileSize = @"kCGImageDestination ...@@ -199,7 +199,7 @@ static NSString * kSDCGImageDestinationRequestedFileSize = @"kCGImageDestination
NSUInteger rasterizationDPI = maxPixelSize * DPIPerPixel; NSUInteger rasterizationDPI = maxPixelSize * DPIPerPixel;
decodingOptions[kSDCGImageSourceRasterizationDPI] = @(rasterizationDPI); decodingOptions[kSDCGImageSourceRasterizationDPI] = @(rasterizationDPI);
} }
imageRef = CGImageSourceCreateImageAtIndex(source, index, (__bridge CFDictionaryRef)[decodingOptions copy]); imageRef = CGImageSourceCreateImageAtIndex(source, index, (__bridge CFDictionaryRef)decodingOptions);
} else { } else {
decodingOptions[(__bridge NSString *)kCGImageSourceCreateThumbnailWithTransform] = @(preserveAspectRatio); decodingOptions[(__bridge NSString *)kCGImageSourceCreateThumbnailWithTransform] = @(preserveAspectRatio);
CGFloat maxPixelSize; CGFloat maxPixelSize;
...@@ -216,7 +216,7 @@ static NSString * kSDCGImageDestinationRequestedFileSize = @"kCGImageDestination ...@@ -216,7 +216,7 @@ static NSString * kSDCGImageDestinationRequestedFileSize = @"kCGImageDestination
} }
decodingOptions[(__bridge NSString *)kCGImageSourceThumbnailMaxPixelSize] = @(maxPixelSize); decodingOptions[(__bridge NSString *)kCGImageSourceThumbnailMaxPixelSize] = @(maxPixelSize);
decodingOptions[(__bridge NSString *)kCGImageSourceCreateThumbnailFromImageAlways] = @(YES); decodingOptions[(__bridge NSString *)kCGImageSourceCreateThumbnailFromImageAlways] = @(YES);
imageRef = CGImageSourceCreateThumbnailAtIndex(source, index, (__bridge CFDictionaryRef)[decodingOptions copy]); imageRef = CGImageSourceCreateThumbnailAtIndex(source, index, (__bridge CFDictionaryRef)decodingOptions);
} }
if (!imageRef) { if (!imageRef) {
return nil; return nil;
...@@ -468,7 +468,7 @@ static NSString * kSDCGImageDestinationRequestedFileSize = @"kCGImageDestination ...@@ -468,7 +468,7 @@ static NSString * kSDCGImageDestinationRequestedFileSize = @"kCGImageDestination
NSUInteger pixelWidth = CGImageGetWidth(imageRef); NSUInteger pixelWidth = CGImageGetWidth(imageRef);
NSUInteger pixelHeight = CGImageGetHeight(imageRef); NSUInteger pixelHeight = CGImageGetHeight(imageRef);
CGFloat finalPixelSize = 0; CGFloat finalPixelSize = 0;
if (maxPixelSize.width > 0 && maxPixelSize.height > 0 && pixelWidth > maxPixelSize.width && pixelHeight > maxPixelSize.height) { if (maxPixelSize.width > 0 && maxPixelSize.height > 0 && pixelWidth > 0 && pixelHeight > 0) {
CGFloat pixelRatio = pixelWidth / pixelHeight; CGFloat pixelRatio = pixelWidth / pixelHeight;
CGFloat maxPixelSizeRatio = maxPixelSize.width / maxPixelSize.height; CGFloat maxPixelSizeRatio = maxPixelSize.width / maxPixelSize.height;
if (pixelRatio > maxPixelSizeRatio) { if (pixelRatio > maxPixelSizeRatio) {
......
...@@ -45,7 +45,6 @@ ...@@ -45,7 +45,6 @@
/** /**
Encode the current image to the data, the image format is unspecified Encode the current image to the data, the image format is unspecified
@note If the receiver is `SDAnimatedImage`, this will return the animated image data if available. No more extra encoding process.
@return The encoded data. If can't encode, return nil @return The encoded data. If can't encode, return nil
*/ */
- (nullable NSData *)sd_imageData; - (nullable NSData *)sd_imageData;
......
...@@ -34,7 +34,6 @@ typedef void(^SDSetImageBlock)(UIImage * _Nullable image, NSData * _Nullable ima ...@@ -34,7 +34,6 @@ typedef void(^SDSetImageBlock)(UIImage * _Nullable image, NSData * _Nullable ima
/** /**
* Get the current image operation key. Operation key is used to identify the different queries for one view instance (like UIButton). * Get the current image operation key. Operation key is used to identify the different queries for one view instance (like UIButton).
* See more about this in `SDWebImageContextSetImageOperationKey`. * See more about this in `SDWebImageContextSetImageOperationKey`.
* If you cancel current image load, the key will be set to nil.
* @note You can use method `UIView+WebCacheOperation` to investigate different queries' operation. * @note You can use method `UIView+WebCacheOperation` to investigate different queries' operation.
*/ */
@property (nonatomic, strong, readonly, nullable) NSString *sd_latestOperationKey; @property (nonatomic, strong, readonly, nullable) NSString *sd_latestOperationKey;
......
...@@ -203,7 +203,6 @@ const int64_t SDWebImageProgressUnitCountUnknown = 1LL; ...@@ -203,7 +203,6 @@ const int64_t SDWebImageProgressUnitCountUnknown = 1LL;
- (void)sd_cancelCurrentImageLoad { - (void)sd_cancelCurrentImageLoad {
[self sd_cancelImageLoadOperationWithKey:self.sd_latestOperationKey]; [self sd_cancelImageLoadOperationWithKey:self.sd_latestOperationKey];
self.sd_latestOperationKey = nil;
} }
- (void)sd_setImage:(UIImage *)image imageData:(NSData *)imageData basedOnClassOrViaCustomSetImageBlock:(SDSetImageBlock)setImageBlock cacheType:(SDImageCacheType)cacheType imageURL:(NSURL *)imageURL { - (void)sd_setImage:(UIImage *)image imageData:(NSData *)imageData basedOnClassOrViaCustomSetImageBlock:(SDSetImageBlock)setImageBlock cacheType:(SDImageCacheType)cacheType imageURL:(NSURL *)imageURL {
...@@ -252,38 +251,22 @@ const int64_t SDWebImageProgressUnitCountUnknown = 1LL; ...@@ -252,38 +251,22 @@ const int64_t SDWebImageProgressUnitCountUnknown = 1LL;
if (transition) { if (transition) {
#if SD_UIKIT #if SD_UIKIT
[UIView transitionWithView:view duration:0 options:0 animations:^{ [UIView transitionWithView:view duration:0 options:0 animations:^{
if (!view.sd_latestOperationKey) {
return;
}
// 0 duration to let UIKit render placeholder and prepares block // 0 duration to let UIKit render placeholder and prepares block
if (transition.prepares) { if (transition.prepares) {
transition.prepares(view, image, imageData, cacheType, imageURL); transition.prepares(view, image, imageData, cacheType, imageURL);
} }
} completion:^(BOOL finished) { } completion:^(BOOL finished) {
[UIView transitionWithView:view duration:transition.duration options:transition.animationOptions animations:^{ [UIView transitionWithView:view duration:transition.duration options:transition.animationOptions animations:^{
if (!view.sd_latestOperationKey) {
return;
}
if (finalSetImageBlock && !transition.avoidAutoSetImage) { if (finalSetImageBlock && !transition.avoidAutoSetImage) {
finalSetImageBlock(image, imageData, cacheType, imageURL); finalSetImageBlock(image, imageData, cacheType, imageURL);
} }
if (transition.animations) { if (transition.animations) {
transition.animations(view, image); transition.animations(view, image);
} }
} completion:^(BOOL finished) { } completion:transition.completion];
if (!view.sd_latestOperationKey) {
return;
}
if (transition.completion) {
transition.completion(finished);
}
}];
}]; }];
#elif SD_MAC #elif SD_MAC
[NSAnimationContext runAnimationGroup:^(NSAnimationContext * _Nonnull prepareContext) { [NSAnimationContext runAnimationGroup:^(NSAnimationContext * _Nonnull prepareContext) {
if (!view.sd_latestOperationKey) {
return;
}
// 0 duration to let AppKit render placeholder and prepares block // 0 duration to let AppKit render placeholder and prepares block
prepareContext.duration = 0; prepareContext.duration = 0;
if (transition.prepares) { if (transition.prepares) {
...@@ -291,14 +274,11 @@ const int64_t SDWebImageProgressUnitCountUnknown = 1LL; ...@@ -291,14 +274,11 @@ const int64_t SDWebImageProgressUnitCountUnknown = 1LL;
} }
} completionHandler:^{ } completionHandler:^{
[NSAnimationContext runAnimationGroup:^(NSAnimationContext * _Nonnull context) { [NSAnimationContext runAnimationGroup:^(NSAnimationContext * _Nonnull context) {
if (!view.sd_latestOperationKey) {
return;
}
context.duration = transition.duration; context.duration = transition.duration;
#pragma clang diagnostic push #pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations" #pragma clang diagnostic ignored "-Wdeprecated-declarations"
CAMediaTimingFunction *timingFunction = transition.timingFunction; CAMediaTimingFunction *timingFunction = transition.timingFunction;
#pragma clang diagnostic pop #pragma clang diagnostic pop
if (!timingFunction) { if (!timingFunction) {
timingFunction = SDTimingFunctionFromAnimationOptions(transition.animationOptions); timingFunction = SDTimingFunctionFromAnimationOptions(transition.animationOptions);
} }
...@@ -315,9 +295,6 @@ const int64_t SDWebImageProgressUnitCountUnknown = 1LL; ...@@ -315,9 +295,6 @@ const int64_t SDWebImageProgressUnitCountUnknown = 1LL;
transition.animations(view, image); transition.animations(view, image);
} }
} completionHandler:^{ } completionHandler:^{
if (!view.sd_latestOperationKey) {
return;
}
if (transition.completion) { if (transition.completion) {
transition.completion(YES); transition.completion(YES);
} }
......
CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/GTSDK
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/GTSDK"
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
OTHER_LDFLAGS = $(inherited) -l"c++" -l"resolv" -l"sqlite3.0" -l"z" -framework "AVFoundation" -framework "CFNetwork" -framework "CoreLocation" -framework "CoreTelephony" -framework "Security" -framework "SystemConfiguration" -weak_framework "UserNotifications"
PODS_BUILD_DIR = ${BUILD_DIR}
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
PODS_ROOT = ${SRCROOT}
PODS_TARGET_SRCROOT = ${PODS_ROOT}/GTSDK
PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
SKIP_INSTALL = YES
USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/GTSDK
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/GTSDK"
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
OTHER_LDFLAGS = $(inherited) -l"c++" -l"resolv" -l"sqlite3.0" -l"z" -framework "AVFoundation" -framework "CFNetwork" -framework "CoreLocation" -framework "CoreTelephony" -framework "Security" -framework "SystemConfiguration" -weak_framework "UserNotifications"
PODS_BUILD_DIR = ${BUILD_DIR}
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
PODS_ROOT = ${SRCROOT}
PODS_TARGET_SRCROOT = ${PODS_ROOT}/GTSDK
PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
SKIP_INSTALL = YES
USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
<key>CFBundlePackageType</key> <key>CFBundlePackageType</key>
<string>FMWK</string> <string>FMWK</string>
<key>CFBundleShortVersionString</key> <key>CFBundleShortVersionString</key>
<string>3.2.2</string> <string>3.2.1</string>
<key>CFBundleSignature</key> <key>CFBundleSignature</key>
<string>????</string> <string>????</string>
<key>CFBundleVersion</key> <key>CFBundleVersion</key>
......
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES
ARCHS = $(ARCHS_STANDARD) ARCHS = $(ARCHS_STANDARD)
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManager" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/MJExtension" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/RTRootNavigationController" "${PODS_CONFIGURATION_BUILD_DIR}/SDCycleScrollView" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyStoreKit" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel" "${PODS_ROOT}/AMap3DMap" "${PODS_ROOT}/AMapFoundation" "${PODS_ROOT}/AMapLocation" "${PODS_ROOT}/AMapSearch" "${PODS_ROOT}/Bugly" "${PODS_ROOT}/CL_ShanYanSDK/framework" "${PODS_ROOT}/UMCCommon" FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManager" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/MJExtension" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/RTRootNavigationController" "${PODS_CONFIGURATION_BUILD_DIR}/SDCycleScrollView" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyStoreKit" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel" "${PODS_ROOT}/AMap3DMap" "${PODS_ROOT}/AMapFoundation" "${PODS_ROOT}/AMapLocation" "${PODS_ROOT}/AMapSearch" "${PODS_ROOT}/Bugly" "${PODS_ROOT}/CL_ShanYanSDK/framework" "${PODS_ROOT}/GTSDK" "${PODS_ROOT}/UMCCommon"
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking/AFNetworking.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManager/IQKeyboardManager.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD/MBProgressHUD.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJExtension/MJExtension.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh/MJRefresh.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry/Masonry.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RTRootNavigationController/RTRootNavigationController.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDCycleScrollView/SDCycleScrollView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyStoreKit/SwiftyStoreKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel/YYModel.framework/Headers" HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking/AFNetworking.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManager/IQKeyboardManager.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD/MBProgressHUD.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJExtension/MJExtension.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh/MJRefresh.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry/Masonry.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RTRootNavigationController/RTRootNavigationController.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDCycleScrollView/SDCycleScrollView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyStoreKit/SwiftyStoreKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel/YYModel.framework/Headers"
LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
OTHER_LDFLAGS = $(inherited) -ObjC -l"c++" -l"c++.1" -l"sqlite3" -l"z" -framework "AFNetworking" -framework "AMapFoundationKit" -framework "AMapLocationKit" -framework "AMapSearchKit" -framework "Bugly" -framework "CL_ShanYanSDK" -framework "CoreFoundation" -framework "CoreGraphics" -framework "CoreLocation" -framework "CoreTelephony" -framework "CoreText" -framework "EAccountApiSDK" -framework "ExternalAccessory" -framework "Foundation" -framework "GLKit" -framework "IQKeyboardManager" -framework "ImageIO" -framework "MAMapKit" -framework "MBProgressHUD" -framework "MJExtension" -framework "MJRefresh" -framework "Masonry" -framework "OAuth" -framework "OpenGLES" -framework "QuartzCore" -framework "RTRootNavigationController" -framework "SDCycleScrollView" -framework "SDWebImage" -framework "Security" -framework "SwiftyStoreKit" -framework "SystemConfiguration" -framework "TYRZSDK" -framework "UIKit" -framework "UMCommon" -framework "YYModel" OTHER_LDFLAGS = $(inherited) -ObjC -l"c++" -l"c++.1" -l"resolv" -l"sqlite3" -l"sqlite3.0" -l"z" -framework "AFNetworking" -framework "AMapFoundationKit" -framework "AMapLocationKit" -framework "AMapSearchKit" -framework "AVFoundation" -framework "Bugly" -framework "CFNetwork" -framework "CL_ShanYanSDK" -framework "CoreFoundation" -framework "CoreGraphics" -framework "CoreLocation" -framework "CoreTelephony" -framework "CoreText" -framework "EAccountApiSDK" -framework "ExternalAccessory" -framework "Foundation" -framework "GLKit" -framework "GTSDK" -framework "IQKeyboardManager" -framework "ImageIO" -framework "MAMapKit" -framework "MBProgressHUD" -framework "MJExtension" -framework "MJRefresh" -framework "Masonry" -framework "OAuth" -framework "OpenGLES" -framework "QuartzCore" -framework "RTRootNavigationController" -framework "SDCycleScrollView" -framework "SDWebImage" -framework "Security" -framework "SwiftyStoreKit" -framework "SystemConfiguration" -framework "TYRZSDK" -framework "UIKit" -framework "UMCommon" -framework "YYModel" -weak_framework "UserNotifications"
OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS
PODS_BUILD_DIR = ${BUILD_DIR} PODS_BUILD_DIR = ${BUILD_DIR}
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
......
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES
ARCHS = $(ARCHS_STANDARD) ARCHS = $(ARCHS_STANDARD)
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManager" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/MJExtension" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/RTRootNavigationController" "${PODS_CONFIGURATION_BUILD_DIR}/SDCycleScrollView" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyStoreKit" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel" "${PODS_ROOT}/AMap3DMap" "${PODS_ROOT}/AMapFoundation" "${PODS_ROOT}/AMapLocation" "${PODS_ROOT}/AMapSearch" "${PODS_ROOT}/Bugly" "${PODS_ROOT}/CL_ShanYanSDK/framework" "${PODS_ROOT}/UMCCommon" FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManager" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/MJExtension" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/RTRootNavigationController" "${PODS_CONFIGURATION_BUILD_DIR}/SDCycleScrollView" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyStoreKit" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel" "${PODS_ROOT}/AMap3DMap" "${PODS_ROOT}/AMapFoundation" "${PODS_ROOT}/AMapLocation" "${PODS_ROOT}/AMapSearch" "${PODS_ROOT}/Bugly" "${PODS_ROOT}/CL_ShanYanSDK/framework" "${PODS_ROOT}/GTSDK" "${PODS_ROOT}/UMCCommon"
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking/AFNetworking.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManager/IQKeyboardManager.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD/MBProgressHUD.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJExtension/MJExtension.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh/MJRefresh.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry/Masonry.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RTRootNavigationController/RTRootNavigationController.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDCycleScrollView/SDCycleScrollView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyStoreKit/SwiftyStoreKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel/YYModel.framework/Headers" HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking/AFNetworking.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManager/IQKeyboardManager.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD/MBProgressHUD.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJExtension/MJExtension.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh/MJRefresh.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry/Masonry.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RTRootNavigationController/RTRootNavigationController.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDCycleScrollView/SDCycleScrollView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyStoreKit/SwiftyStoreKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel/YYModel.framework/Headers"
LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
OTHER_LDFLAGS = $(inherited) -ObjC -l"c++" -l"c++.1" -l"sqlite3" -l"z" -framework "AFNetworking" -framework "AMapFoundationKit" -framework "AMapLocationKit" -framework "AMapSearchKit" -framework "Bugly" -framework "CL_ShanYanSDK" -framework "CoreFoundation" -framework "CoreGraphics" -framework "CoreLocation" -framework "CoreTelephony" -framework "CoreText" -framework "EAccountApiSDK" -framework "ExternalAccessory" -framework "Foundation" -framework "GLKit" -framework "IQKeyboardManager" -framework "ImageIO" -framework "MAMapKit" -framework "MBProgressHUD" -framework "MJExtension" -framework "MJRefresh" -framework "Masonry" -framework "OAuth" -framework "OpenGLES" -framework "QuartzCore" -framework "RTRootNavigationController" -framework "SDCycleScrollView" -framework "SDWebImage" -framework "Security" -framework "SwiftyStoreKit" -framework "SystemConfiguration" -framework "TYRZSDK" -framework "UIKit" -framework "UMCommon" -framework "YYModel" OTHER_LDFLAGS = $(inherited) -ObjC -l"c++" -l"c++.1" -l"resolv" -l"sqlite3" -l"sqlite3.0" -l"z" -framework "AFNetworking" -framework "AMapFoundationKit" -framework "AMapLocationKit" -framework "AMapSearchKit" -framework "AVFoundation" -framework "Bugly" -framework "CFNetwork" -framework "CL_ShanYanSDK" -framework "CoreFoundation" -framework "CoreGraphics" -framework "CoreLocation" -framework "CoreTelephony" -framework "CoreText" -framework "EAccountApiSDK" -framework "ExternalAccessory" -framework "Foundation" -framework "GLKit" -framework "GTSDK" -framework "IQKeyboardManager" -framework "ImageIO" -framework "MAMapKit" -framework "MBProgressHUD" -framework "MJExtension" -framework "MJRefresh" -framework "Masonry" -framework "OAuth" -framework "OpenGLES" -framework "QuartzCore" -framework "RTRootNavigationController" -framework "SDCycleScrollView" -framework "SDWebImage" -framework "Security" -framework "SwiftyStoreKit" -framework "SystemConfiguration" -framework "TYRZSDK" -framework "UIKit" -framework "UMCommon" -framework "YYModel" -weak_framework "UserNotifications"
OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS
PODS_BUILD_DIR = ${BUILD_DIR} PODS_BUILD_DIR = ${BUILD_DIR}
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
<key>CFBundlePackageType</key> <key>CFBundlePackageType</key>
<string>FMWK</string> <string>FMWK</string>
<key>CFBundleShortVersionString</key> <key>CFBundleShortVersionString</key>
<string>5.8.4</string> <string>5.8.1</string>
<key>CFBundleSignature</key> <key>CFBundleSignature</key>
<string>????</string> <string>????</string>
<key>CFBundleVersion</key> <key>CFBundleVersion</key>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment