Commit 2aa3e6e4 by 王卫

rac集成

1 parent abe6a30d
Showing with 1465 additions and 546 deletions
......@@ -22,7 +22,7 @@ PODS:
- MagicalRecord/Core (2.3.2)
- Masonry (1.1.0)
- MBProgressHUD (0.9.2)
- MJRefresh (3.1.15.1)
- MJRefresh (3.1.15.3)
- MSWeakTimer (1.1.0)
- MWPhotoBrowser (2.1.2):
- DACircularProgress (~> 2.3)
......@@ -35,11 +35,11 @@ PODS:
- ReactiveCocoa/no-arc (2.5)
- ReactiveCocoa/UI (2.5):
- ReactiveCocoa/Core
- RealReachability (1.1.9):
- RealReachability/Connection (= 1.1.9)
- RealReachability/Ping (= 1.1.9)
- RealReachability/Connection (1.1.9)
- RealReachability/Ping (1.1.9)
- RealReachability (1.3.0):
- RealReachability/Connection (= 1.3.0)
- RealReachability/Ping (= 1.3.0)
- RealReachability/Connection (1.3.0)
- RealReachability/Ping (1.3.0)
- SDCycleScrollView (1.65):
- SDWebImage (~> 3.7)
- SDWebImage (3.8.2):
......@@ -84,11 +84,11 @@ SPEC CHECKSUMS:
MagicalRecord: 53bed74b4323b930992a725be713e53b37d19755
Masonry: 678fab65091a9290e40e2832a55e7ab731aad201
MBProgressHUD: 1569cf7ace17a8bac47aabfbb8580a49690386d1
MJRefresh: 5f8552bc25ca8751c010f621c1098dbdaacbccd6
MJRefresh: b48380ae2b927b46c4ef000de9adb8dc748e1df7
MSWeakTimer: 9426150f933b80ed3acf3f6d228e4b61f0e303c8
MWPhotoBrowser: 5836d7aa041dc05a13de380c246826578adc5ea5
ReactiveCocoa: e2db045570aa97c695e7aa97c2bcab222ae51f4a
RealReachability: a8c483900986a0f3305733961effbfbb00637a02
RealReachability: eae9c58d2db52fadd8e1cba4b5d4c028454fbc47
SDCycleScrollView: f72904c77698a7f93a41bcbbc2d78b073bf7326c
SDWebImage: 098e97e6176540799c27e804c96653ee0833d13c
SocketRocket: d57c7159b83c3c6655745cd15302aa24b6bae531
......
......@@ -17,4 +17,7 @@
/** 当底部控件出现多少时就自动刷新(默认为1.0,也就是底部控件完全出现时,才会自动刷新) */
@property (assign, nonatomic) CGFloat triggerAutomaticallyRefreshPercent;
/** 是否每一次拖拽只发一次请求 */
@property (assign, nonatomic, getter=isOnlyRefreshPerDrag) BOOL onlyRefreshPerDrag;
@end
......@@ -9,6 +9,8 @@
#import "MJRefreshAutoFooter.h"
@interface MJRefreshAutoFooter()
/** 一个新的拖拽 */
@property (assign, nonatomic, getter=isOneNewPan) BOOL oneNewPan;
@end
@implementation MJRefreshAutoFooter
......@@ -53,6 +55,9 @@
// 设置为默认状态
self.automaticallyRefresh = YES;
// 默认是当offset达到条件就发送请求(可连续)
self.onlyRefreshPerDrag = NO;
}
- (void)scrollViewContentSizeDidChange:(NSDictionary *)change
......@@ -89,7 +94,8 @@
if (self.state != MJRefreshStateIdle) return;
if (_scrollView.panGestureRecognizer.state == UIGestureRecognizerStateEnded) {// 手松开
UIGestureRecognizerState panState = _scrollView.panGestureRecognizer.state;
if (panState == UIGestureRecognizerStateEnded) {// 手松开
if (_scrollView.mj_insetT + _scrollView.mj_contentH <= _scrollView.mj_h) { // 不够一个屏幕
if (_scrollView.mj_offsetY >= - _scrollView.mj_insetT) { // 向上拽
[self beginRefreshing];
......@@ -99,17 +105,26 @@
[self beginRefreshing];
}
}
} else if (panState == UIGestureRecognizerStateBegan) {
self.oneNewPan = YES;
}
}
- (void)beginRefreshing
{
if (!self.isOneNewPan && self.isOnlyRefreshPerDrag) return;
[super beginRefreshing];
self.oneNewPan = NO;
}
- (void)setState:(MJRefreshState)state
{
MJRefreshCheckState
if (state == MJRefreshStateRefreshing) {
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[self executeRefreshingCallback];
});
[self executeRefreshingCallback];
} else if (state == MJRefreshStateNoMoreData || state == MJRefreshStateIdle) {
if (MJRefreshStateRefreshing == oldState) {
if (self.endRefreshingCompletionBlock) {
......
......@@ -26,5 +26,5 @@
@property (assign, nonatomic) CGFloat ignoredScrollViewContentInsetBottom;
/** 自动根据有无数据来显示和隐藏(有数据就显示,没有数据隐藏。默认是NO) */
@property (assign, nonatomic, getter=isAutomaticallyHidden) BOOL automaticallyHidden;
@property (assign, nonatomic, getter=isAutomaticallyHidden) BOOL automaticallyHidden MJRefreshDeprecated("不建议使用此属性,开发者请自行控制footer的显示和隐藏。基于安全考虑,在未来的某些版本此属性可能作废");
@end
......@@ -80,16 +80,5 @@
- (void)setAutomaticallyHidden:(BOOL)automaticallyHidden
{
_automaticallyHidden = automaticallyHidden;
if (automaticallyHidden) {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wundeclared-selector"
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
[UITableView exchangeInstanceMethod1:@selector(reloadData) method2:@selector(mj_reloadData)];
[UICollectionView exchangeInstanceMethod1:@selector(reloadData) method2:@selector(mj_reloadData)];
});
#pragma clang diagnostic pop
}
}
@end
......@@ -54,7 +54,8 @@
// 在刷新的refreshing状态
if (self.state == MJRefreshStateRefreshing) {
// if (self.window == nil) return;
// 暂时保留
if (self.window == nil) return;
// sectionheader停留解决
CGFloat insetT = - self.scrollView.mj_offsetY > _scrollViewOriginalInset.top ? - self.scrollView.mj_offsetY : _scrollViewOriginalInset.top;
......
......@@ -10,17 +10,22 @@
#import "UIScrollView+MJExtension.h"
#import <objc/runtime.h>
#define SYSTEM_VERSION_GREATER_NOT_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wunguarded-availability-new"
@implementation UIScrollView (MJExtension)
static BOOL gt_ios_11_;
+ (void)load
{
// 缓存判断值
gt_ios_11_ = [[[UIDevice currentDevice] systemVersion] compare:@"11.0" options:NSNumericSearch] != NSOrderedAscending;
}
- (UIEdgeInsets)mj_inset
{
#ifdef __IPHONE_11_0
if (SYSTEM_VERSION_GREATER_NOT_LESS_THAN(@"11.0")) {
if (gt_ios_11_) {
return self.adjustedContentInset;
}
#endif
......@@ -32,7 +37,7 @@
UIEdgeInsets inset = self.contentInset;
inset.top = mj_insetT;
#ifdef __IPHONE_11_0
if (SYSTEM_VERSION_GREATER_NOT_LESS_THAN(@"11.0")) {
if (gt_ios_11_) {
inset.top -= (self.adjustedContentInset.top - self.contentInset.top);
}
#endif
......@@ -49,7 +54,7 @@
UIEdgeInsets inset = self.contentInset;
inset.bottom = mj_insetB;
#ifdef __IPHONE_11_0
if (SYSTEM_VERSION_GREATER_NOT_LESS_THAN(@"11.0")) {
if (gt_ios_11_) {
inset.bottom -= (self.adjustedContentInset.bottom - self.contentInset.bottom);
}
#endif
......@@ -66,7 +71,7 @@
UIEdgeInsets inset = self.contentInset;
inset.left = mj_insetL;
#ifdef __IPHONE_11_0
if (SYSTEM_VERSION_GREATER_NOT_LESS_THAN(@"11.0")) {
if (gt_ios_11_) {
inset.left -= (self.adjustedContentInset.left - self.contentInset.left);
}
#endif
......@@ -83,7 +88,7 @@
UIEdgeInsets inset = self.contentInset;
inset.right = mj_insetR;
#ifdef __IPHONE_11_0
if (SYSTEM_VERSION_GREATER_NOT_LESS_THAN(@"11.0")) {
if (gt_ios_11_) {
inset.right -= (self.adjustedContentInset.right - self.contentInset.right);
}
#endif
......
......@@ -12,11 +12,6 @@
@class MJRefreshHeader, MJRefreshFooter;
@interface NSObject (MJRefresh)
+ (void)exchangeInstanceMethod1:(SEL)method1 method2:(SEL)method2;
+ (void)exchangeClassMethod1:(SEL)method1 method2:(SEL)method2;
@end
@interface UIScrollView (MJRefresh)
/** 下拉刷新控件 */
@property (strong, nonatomic) MJRefreshHeader *mj_header;
......
......@@ -134,6 +134,11 @@ static const char MJRefreshReloadDataBlockKey = '\0';
@implementation UITableView (MJRefresh)
+ (void)load
{
[self exchangeInstanceMethod1:@selector(reloadData) method2:@selector(mj_reloadData)];
}
- (void)mj_reloadData
{
[self mj_reloadData];
......@@ -144,6 +149,11 @@ static const char MJRefreshReloadDataBlockKey = '\0';
@implementation UICollectionView (MJRefresh)
+ (void)load
{
[self exchangeInstanceMethod1:@selector(reloadData) method2:@selector(mj_reloadData)];
}
- (void)mj_reloadData
{
[self mj_reloadData];
......
......@@ -22,7 +22,7 @@ PODS:
- MagicalRecord/Core (2.3.2)
- Masonry (1.1.0)
- MBProgressHUD (0.9.2)
- MJRefresh (3.1.15.1)
- MJRefresh (3.1.15.3)
- MSWeakTimer (1.1.0)
- MWPhotoBrowser (2.1.2):
- DACircularProgress (~> 2.3)
......@@ -35,11 +35,11 @@ PODS:
- ReactiveCocoa/no-arc (2.5)
- ReactiveCocoa/UI (2.5):
- ReactiveCocoa/Core
- RealReachability (1.1.9):
- RealReachability/Connection (= 1.1.9)
- RealReachability/Ping (= 1.1.9)
- RealReachability/Connection (1.1.9)
- RealReachability/Ping (1.1.9)
- RealReachability (1.3.0):
- RealReachability/Connection (= 1.3.0)
- RealReachability/Ping (= 1.3.0)
- RealReachability/Connection (1.3.0)
- RealReachability/Ping (1.3.0)
- SDCycleScrollView (1.65):
- SDWebImage (~> 3.7)
- SDWebImage (3.8.2):
......@@ -84,11 +84,11 @@ SPEC CHECKSUMS:
MagicalRecord: 53bed74b4323b930992a725be713e53b37d19755
Masonry: 678fab65091a9290e40e2832a55e7ab731aad201
MBProgressHUD: 1569cf7ace17a8bac47aabfbb8580a49690386d1
MJRefresh: 5f8552bc25ca8751c010f621c1098dbdaacbccd6
MJRefresh: b48380ae2b927b46c4ef000de9adb8dc748e1df7
MSWeakTimer: 9426150f933b80ed3acf3f6d228e4b61f0e303c8
MWPhotoBrowser: 5836d7aa041dc05a13de380c246826578adc5ea5
ReactiveCocoa: e2db045570aa97c695e7aa97c2bcab222ae51f4a
RealReachability: a8c483900986a0f3305733961effbfbb00637a02
RealReachability: eae9c58d2db52fadd8e1cba4b5d4c028454fbc47
SDCycleScrollView: f72904c77698a7f93a41bcbbc2d78b073bf7326c
SDWebImage: 098e97e6176540799c27e804c96653ee0833d13c
SocketRocket: d57c7159b83c3c6655745cd15302aa24b6bae531
......
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0700"
LastUpgradeVersion = "1000"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForAnalyzing = "YES"
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES">
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = 'primary'
BlueprintIdentifier = '9E033EDB5EC0819481B0546434FA577B'
BlueprintName = 'AFNetworking'
ReferencedContainer = 'container:Pods.xcodeproj'
BuildableName = 'libAFNetworking.a'>
BuildableIdentifier = "primary"
BlueprintIdentifier = "9E033EDB5EC0819481B0546434FA577B"
BuildableName = "libAFNetworking.a"
BlueprintName = "AFNetworking"
ReferencedContainer = "container:Pods.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
buildConfiguration = "Debug">
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
......@@ -38,17 +41,25 @@
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
buildConfiguration = "Debug"
allowLocationSimulation = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "9E033EDB5EC0819481B0546434FA577B"
BuildableName = "libAFNetworking.a"
BlueprintName = "AFNetworking"
ReferencedContainer = "container:Pods.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES"
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES">
debugDocumentVersioning = "YES">
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
......
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0700"
LastUpgradeVersion = "1000"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForAnalyzing = "YES"
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES">
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = 'primary'
BlueprintIdentifier = 'C791F0A928C1A8FE97074DFC9ACF4E75'
BlueprintName = 'DACircularProgress'
ReferencedContainer = 'container:Pods.xcodeproj'
BuildableName = 'libDACircularProgress.a'>
BuildableIdentifier = "primary"
BlueprintIdentifier = "C791F0A928C1A8FE97074DFC9ACF4E75"
BuildableName = "libDACircularProgress.a"
BlueprintName = "DACircularProgress"
ReferencedContainer = "container:Pods.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
buildConfiguration = "Debug">
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
......@@ -38,17 +41,25 @@
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
buildConfiguration = "Debug"
allowLocationSimulation = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "C791F0A928C1A8FE97074DFC9ACF4E75"
BuildableName = "libDACircularProgress.a"
BlueprintName = "DACircularProgress"
ReferencedContainer = "container:Pods.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES"
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES">
debugDocumentVersioning = "YES">
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
......
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0700"
LastUpgradeVersion = "1000"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForAnalyzing = "YES"
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES">
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = 'primary'
BlueprintIdentifier = 'B36F6D48026E14827529F787D63D61B8'
BlueprintName = 'DateTools'
ReferencedContainer = 'container:Pods.xcodeproj'
BuildableName = 'libDateTools.a'>
BuildableIdentifier = "primary"
BlueprintIdentifier = "B36F6D48026E14827529F787D63D61B8"
BuildableName = "libDateTools.a"
BlueprintName = "DateTools"
ReferencedContainer = "container:Pods.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
buildConfiguration = "Debug">
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
......@@ -38,17 +41,25 @@
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
buildConfiguration = "Debug"
allowLocationSimulation = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "B36F6D48026E14827529F787D63D61B8"
BuildableName = "libDateTools.a"
BlueprintName = "DateTools"
ReferencedContainer = "container:Pods.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES"
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES">
debugDocumentVersioning = "YES">
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
......
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0700"
LastUpgradeVersion = "1000"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForAnalyzing = "YES"
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES">
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = 'primary'
BlueprintIdentifier = '53E7E9D15B3EFBCB998E237DE5EA8695'
BlueprintName = 'JSONModel'
ReferencedContainer = 'container:Pods.xcodeproj'
BuildableName = 'libJSONModel.a'>
BuildableIdentifier = "primary"
BlueprintIdentifier = "53E7E9D15B3EFBCB998E237DE5EA8695"
BuildableName = "libJSONModel.a"
BlueprintName = "JSONModel"
ReferencedContainer = "container:Pods.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
buildConfiguration = "Debug">
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
......@@ -38,17 +41,25 @@
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
buildConfiguration = "Debug"
allowLocationSimulation = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "53E7E9D15B3EFBCB998E237DE5EA8695"
BuildableName = "libJSONModel.a"
BlueprintName = "JSONModel"
ReferencedContainer = "container:Pods.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES"
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES">
debugDocumentVersioning = "YES">
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
......
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0700"
LastUpgradeVersion = "1000"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForAnalyzing = "YES"
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES">
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = 'primary'
BlueprintIdentifier = '175B076ED45EB1A3E40F58BA14036467'
BlueprintName = 'MBProgressHUD'
ReferencedContainer = 'container:Pods.xcodeproj'
BuildableName = 'libMBProgressHUD.a'>
BuildableIdentifier = "primary"
BlueprintIdentifier = "175B076ED45EB1A3E40F58BA14036467"
BuildableName = "libMBProgressHUD.a"
BlueprintName = "MBProgressHUD"
ReferencedContainer = "container:Pods.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
buildConfiguration = "Debug">
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
......@@ -38,17 +41,25 @@
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
buildConfiguration = "Debug"
allowLocationSimulation = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "175B076ED45EB1A3E40F58BA14036467"
BuildableName = "libMBProgressHUD.a"
BlueprintName = "MBProgressHUD"
ReferencedContainer = "container:Pods.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES"
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES">
debugDocumentVersioning = "YES">
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
......
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0700"
LastUpgradeVersion = "1000"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForAnalyzing = "YES"
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES">
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = 'primary'
BlueprintIdentifier = '04CF549EBEEE7BC87AEAE35397184D94'
BlueprintName = 'MJRefresh'
ReferencedContainer = 'container:Pods.xcodeproj'
BuildableName = 'libMJRefresh.a'>
BuildableIdentifier = "primary"
BlueprintIdentifier = "04CF549EBEEE7BC87AEAE35397184D94"
BuildableName = "libMJRefresh.a"
BlueprintName = "MJRefresh"
ReferencedContainer = "container:Pods.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
buildConfiguration = "Debug">
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
......@@ -38,17 +41,25 @@
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
buildConfiguration = "Debug"
allowLocationSimulation = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "04CF549EBEEE7BC87AEAE35397184D94"
BuildableName = "libMJRefresh.a"
BlueprintName = "MJRefresh"
ReferencedContainer = "container:Pods.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES"
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES">
debugDocumentVersioning = "YES">
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
......
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0700"
LastUpgradeVersion = "1000"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForAnalyzing = "YES"
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES">
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = 'primary'
BlueprintIdentifier = '03166DD62238C599BC28CAB59C0E0557'
BlueprintName = 'MSWeakTimer'
ReferencedContainer = 'container:Pods.xcodeproj'
BuildableName = 'libMSWeakTimer.a'>
BuildableIdentifier = "primary"
BlueprintIdentifier = "03166DD62238C599BC28CAB59C0E0557"
BuildableName = "libMSWeakTimer.a"
BlueprintName = "MSWeakTimer"
ReferencedContainer = "container:Pods.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
buildConfiguration = "Debug">
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
......@@ -38,17 +41,25 @@
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
buildConfiguration = "Debug"
allowLocationSimulation = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "03166DD62238C599BC28CAB59C0E0557"
BuildableName = "libMSWeakTimer.a"
BlueprintName = "MSWeakTimer"
ReferencedContainer = "container:Pods.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES"
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES">
debugDocumentVersioning = "YES">
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
......
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0700"
LastUpgradeVersion = "1000"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForAnalyzing = "YES"
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES">
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = 'primary'
BlueprintIdentifier = '1B9891708D9F9B504F2482EDDB834F6C'
BlueprintName = 'MWPhotoBrowser-MWPhotoBrowser'
ReferencedContainer = 'container:Pods.xcodeproj'
BuildableName = 'MWPhotoBrowser.bundle'>
BuildableIdentifier = "primary"
BlueprintIdentifier = "1B9891708D9F9B504F2482EDDB834F6C"
BuildableName = "MWPhotoBrowser.bundle"
BlueprintName = "MWPhotoBrowser-MWPhotoBrowser"
ReferencedContainer = "container:Pods.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
buildConfiguration = "Debug">
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
......@@ -38,17 +41,25 @@
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
buildConfiguration = "Debug"
allowLocationSimulation = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "1B9891708D9F9B504F2482EDDB834F6C"
BuildableName = "MWPhotoBrowser.bundle"
BlueprintName = "MWPhotoBrowser-MWPhotoBrowser"
ReferencedContainer = "container:Pods.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES"
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES">
debugDocumentVersioning = "YES">
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
......
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0700"
LastUpgradeVersion = "1000"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForAnalyzing = "YES"
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES">
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = 'primary'
BlueprintIdentifier = '2596169E954907C07413FA0DF674480A'
BlueprintName = 'MWPhotoBrowser'
ReferencedContainer = 'container:Pods.xcodeproj'
BuildableName = 'libMWPhotoBrowser.a'>
BuildableIdentifier = "primary"
BlueprintIdentifier = "2596169E954907C07413FA0DF674480A"
BuildableName = "libMWPhotoBrowser.a"
BlueprintName = "MWPhotoBrowser"
ReferencedContainer = "container:Pods.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
buildConfiguration = "Debug">
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
......@@ -38,17 +41,25 @@
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
buildConfiguration = "Debug"
allowLocationSimulation = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "2596169E954907C07413FA0DF674480A"
BuildableName = "libMWPhotoBrowser.a"
BlueprintName = "MWPhotoBrowser"
ReferencedContainer = "container:Pods.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES"
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES">
debugDocumentVersioning = "YES">
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
......
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0700"
LastUpgradeVersion = "1000"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForAnalyzing = "YES"
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES">
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = 'primary'
BlueprintIdentifier = '417EA9844EC286C5B1B8FCB029C00130'
BlueprintName = 'MagicalRecord'
ReferencedContainer = 'container:Pods.xcodeproj'
BuildableName = 'libMagicalRecord.a'>
BuildableIdentifier = "primary"
BlueprintIdentifier = "417EA9844EC286C5B1B8FCB029C00130"
BuildableName = "libMagicalRecord.a"
BlueprintName = "MagicalRecord"
ReferencedContainer = "container:Pods.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
buildConfiguration = "Debug">
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
......@@ -38,17 +41,25 @@
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
buildConfiguration = "Debug"
allowLocationSimulation = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "417EA9844EC286C5B1B8FCB029C00130"
BuildableName = "libMagicalRecord.a"
BlueprintName = "MagicalRecord"
ReferencedContainer = "container:Pods.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES"
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES">
debugDocumentVersioning = "YES">
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
......
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0700"
LastUpgradeVersion = "1000"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForAnalyzing = "YES"
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES">
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = 'primary'
BlueprintIdentifier = '9DC8D9E02903E93BD0B2FEC9D846EA20'
BlueprintName = 'Masonry'
ReferencedContainer = 'container:Pods.xcodeproj'
BuildableName = 'libMasonry.a'>
BuildableIdentifier = "primary"
BlueprintIdentifier = "9DC8D9E02903E93BD0B2FEC9D846EA20"
BuildableName = "libMasonry.a"
BlueprintName = "Masonry"
ReferencedContainer = "container:Pods.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
buildConfiguration = "Debug">
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
......@@ -38,17 +41,25 @@
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
buildConfiguration = "Debug"
allowLocationSimulation = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "9DC8D9E02903E93BD0B2FEC9D846EA20"
BuildableName = "libMasonry.a"
BlueprintName = "Masonry"
ReferencedContainer = "container:Pods.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES"
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES">
debugDocumentVersioning = "YES">
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
......
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0700"
LastUpgradeVersion = "1000"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForAnalyzing = "YES"
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES">
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = 'primary'
BlueprintIdentifier = 'F41F2E951546AEC47C553F1A1AAA0758'
BlueprintName = 'Pods-YX_BaseProject'
ReferencedContainer = 'container:Pods.xcodeproj'
BuildableName = 'libPods-YX_BaseProject.a'>
BuildableIdentifier = "primary"
BlueprintIdentifier = "F41F2E951546AEC47C553F1A1AAA0758"
BuildableName = "libPods-YX_BaseProject.a"
BlueprintName = "Pods-YX_BaseProject"
ReferencedContainer = "container:Pods.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
buildConfiguration = "Debug">
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
......@@ -38,17 +41,25 @@
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
buildConfiguration = "Debug"
allowLocationSimulation = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "F41F2E951546AEC47C553F1A1AAA0758"
BuildableName = "libPods-YX_BaseProject.a"
BlueprintName = "Pods-YX_BaseProject"
ReferencedContainer = "container:Pods.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES"
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES">
debugDocumentVersioning = "YES">
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
......
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0700"
LastUpgradeVersion = "1000"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForAnalyzing = "YES"
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES">
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = 'primary'
BlueprintIdentifier = '0D153EFDA15B5C43C03DED104B146BBC'
BlueprintName = 'Pods-YX_BaseProjectTests'
ReferencedContainer = 'container:Pods.xcodeproj'
BuildableName = 'libPods-YX_BaseProjectTests.a'>
BuildableIdentifier = "primary"
BlueprintIdentifier = "0D153EFDA15B5C43C03DED104B146BBC"
BuildableName = "libPods-YX_BaseProjectTests.a"
BlueprintName = "Pods-YX_BaseProjectTests"
ReferencedContainer = "container:Pods.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
buildConfiguration = "Debug">
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
......@@ -38,17 +41,25 @@
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
buildConfiguration = "Debug"
allowLocationSimulation = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "0D153EFDA15B5C43C03DED104B146BBC"
BuildableName = "libPods-YX_BaseProjectTests.a"
BlueprintName = "Pods-YX_BaseProjectTests"
ReferencedContainer = "container:Pods.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES"
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES">
debugDocumentVersioning = "YES">
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
......
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0700"
LastUpgradeVersion = "1000"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForAnalyzing = "YES"
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES">
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = 'primary'
BlueprintIdentifier = '83A8C7FF9C19D272EC6B1E00198982F7'
BlueprintName = 'Pods-YX_BaseProjectUITests'
ReferencedContainer = 'container:Pods.xcodeproj'
BuildableName = 'libPods-YX_BaseProjectUITests.a'>
BuildableIdentifier = "primary"
BlueprintIdentifier = "83A8C7FF9C19D272EC6B1E00198982F7"
BuildableName = "libPods-YX_BaseProjectUITests.a"
BlueprintName = "Pods-YX_BaseProjectUITests"
ReferencedContainer = "container:Pods.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
buildConfiguration = "Debug">
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
......@@ -38,17 +41,25 @@
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
buildConfiguration = "Debug"
allowLocationSimulation = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "83A8C7FF9C19D272EC6B1E00198982F7"
BuildableName = "libPods-YX_BaseProjectUITests.a"
BlueprintName = "Pods-YX_BaseProjectUITests"
ReferencedContainer = "container:Pods.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES"
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES">
debugDocumentVersioning = "YES">
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
......
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0700"
LastUpgradeVersion = "1000"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForAnalyzing = "YES"
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES">
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = 'primary'
BlueprintIdentifier = '6DC2E3F2FE6E2E6073D13E3E826BDF0F'
BlueprintName = 'ReactiveCocoa'
ReferencedContainer = 'container:Pods.xcodeproj'
BuildableName = 'libReactiveCocoa.a'>
BuildableIdentifier = "primary"
BlueprintIdentifier = "6DC2E3F2FE6E2E6073D13E3E826BDF0F"
BuildableName = "libReactiveCocoa.a"
BlueprintName = "ReactiveCocoa"
ReferencedContainer = "container:Pods.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
buildConfiguration = "Debug">
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
......@@ -38,17 +41,25 @@
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
buildConfiguration = "Debug"
allowLocationSimulation = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "6DC2E3F2FE6E2E6073D13E3E826BDF0F"
BuildableName = "libReactiveCocoa.a"
BlueprintName = "ReactiveCocoa"
ReferencedContainer = "container:Pods.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES"
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES">
debugDocumentVersioning = "YES">
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
......
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0700"
LastUpgradeVersion = "1000"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForAnalyzing = "YES"
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES">
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = 'primary'
BlueprintIdentifier = 'DAB398FBD2C1456978222F0D2A8B0B65'
BlueprintName = 'RealReachability'
ReferencedContainer = 'container:Pods.xcodeproj'
BuildableName = 'libRealReachability.a'>
BuildableIdentifier = "primary"
BlueprintIdentifier = "DAB398FBD2C1456978222F0D2A8B0B65"
BuildableName = "libRealReachability.a"
BlueprintName = "RealReachability"
ReferencedContainer = "container:Pods.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
buildConfiguration = "Debug">
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
......@@ -38,17 +41,25 @@
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
buildConfiguration = "Debug"
allowLocationSimulation = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "DAB398FBD2C1456978222F0D2A8B0B65"
BuildableName = "libRealReachability.a"
BlueprintName = "RealReachability"
ReferencedContainer = "container:Pods.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES"
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES">
debugDocumentVersioning = "YES">
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
......
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0700"
LastUpgradeVersion = "1000"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForAnalyzing = "YES"
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES">
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = 'primary'
BlueprintIdentifier = 'A90F4346FB2755C66E32532664559544'
BlueprintName = 'SDCycleScrollView'
ReferencedContainer = 'container:Pods.xcodeproj'
BuildableName = 'libSDCycleScrollView.a'>
BuildableIdentifier = "primary"
BlueprintIdentifier = "A90F4346FB2755C66E32532664559544"
BuildableName = "libSDCycleScrollView.a"
BlueprintName = "SDCycleScrollView"
ReferencedContainer = "container:Pods.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
buildConfiguration = "Debug">
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
......@@ -38,17 +41,25 @@
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
buildConfiguration = "Debug"
allowLocationSimulation = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "A90F4346FB2755C66E32532664559544"
BuildableName = "libSDCycleScrollView.a"
BlueprintName = "SDCycleScrollView"
ReferencedContainer = "container:Pods.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES"
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES">
debugDocumentVersioning = "YES">
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
......
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0700"
LastUpgradeVersion = "1000"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForAnalyzing = "YES"
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES">
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = 'primary'
BlueprintIdentifier = 'D31F2E1140FD881D5FEB76F35D954576'
BlueprintName = 'SDWebImage'
ReferencedContainer = 'container:Pods.xcodeproj'
BuildableName = 'libSDWebImage.a'>
BuildableIdentifier = "primary"
BlueprintIdentifier = "D31F2E1140FD881D5FEB76F35D954576"
BuildableName = "libSDWebImage.a"
BlueprintName = "SDWebImage"
ReferencedContainer = "container:Pods.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
buildConfiguration = "Debug">
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
......@@ -38,17 +41,25 @@
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
buildConfiguration = "Debug"
allowLocationSimulation = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "D31F2E1140FD881D5FEB76F35D954576"
BuildableName = "libSDWebImage.a"
BlueprintName = "SDWebImage"
ReferencedContainer = "container:Pods.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES"
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES">
debugDocumentVersioning = "YES">
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
......
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0700"
LastUpgradeVersion = "1000"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForAnalyzing = "YES"
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES">
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = 'primary'
BlueprintIdentifier = '94BE9D17FB4718A526D064FD13144E22'
BlueprintName = 'SocketRocket'
ReferencedContainer = 'container:Pods.xcodeproj'
BuildableName = 'libSocketRocket.a'>
BuildableIdentifier = "primary"
BlueprintIdentifier = "94BE9D17FB4718A526D064FD13144E22"
BuildableName = "libSocketRocket.a"
BlueprintName = "SocketRocket"
ReferencedContainer = "container:Pods.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
buildConfiguration = "Debug">
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
......@@ -38,17 +41,25 @@
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
buildConfiguration = "Debug"
allowLocationSimulation = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "94BE9D17FB4718A526D064FD13144E22"
BuildableName = "libSocketRocket.a"
BlueprintName = "SocketRocket"
ReferencedContainer = "container:Pods.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES"
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES">
debugDocumentVersioning = "YES">
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
......
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0700"
LastUpgradeVersion = "1000"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForAnalyzing = "YES"
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES">
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = 'primary'
BlueprintIdentifier = '6B21F5175A644D0FCD676E01739A332D'
BlueprintName = 'Toast'
ReferencedContainer = 'container:Pods.xcodeproj'
BuildableName = 'libToast.a'>
BuildableIdentifier = "primary"
BlueprintIdentifier = "6B21F5175A644D0FCD676E01739A332D"
BuildableName = "libToast.a"
BlueprintName = "Toast"
ReferencedContainer = "container:Pods.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
buildConfiguration = "Debug">
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
......@@ -38,17 +41,25 @@
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
buildConfiguration = "Debug"
allowLocationSimulation = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "6B21F5175A644D0FCD676E01739A332D"
BuildableName = "libToast.a"
BlueprintName = "Toast"
ReferencedContainer = "container:Pods.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES"
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES">
debugDocumentVersioning = "YES">
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
......
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0700"
LastUpgradeVersion = "1000"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForAnalyzing = "YES"
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES">
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = 'primary'
BlueprintIdentifier = 'FB4AC0A7BE44DEDCC49EFDA8023D2B6D'
BlueprintName = 'YYCache'
ReferencedContainer = 'container:Pods.xcodeproj'
BuildableName = 'libYYCache.a'>
BuildableIdentifier = "primary"
BlueprintIdentifier = "FB4AC0A7BE44DEDCC49EFDA8023D2B6D"
BuildableName = "libYYCache.a"
BlueprintName = "YYCache"
ReferencedContainer = "container:Pods.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
buildConfiguration = "Debug">
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
......@@ -38,17 +41,25 @@
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
buildConfiguration = "Debug"
allowLocationSimulation = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "FB4AC0A7BE44DEDCC49EFDA8023D2B6D"
BuildableName = "libYYCache.a"
BlueprintName = "YYCache"
ReferencedContainer = "container:Pods.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES"
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES">
debugDocumentVersioning = "YES">
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
......
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0700"
LastUpgradeVersion = "1000"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForAnalyzing = "YES"
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES">
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = 'primary'
BlueprintIdentifier = '13E5B4F4454B73B889C84E0CBF8DEE49'
BlueprintName = 'YYImage'
ReferencedContainer = 'container:Pods.xcodeproj'
BuildableName = 'libYYImage.a'>
BuildableIdentifier = "primary"
BlueprintIdentifier = "13E5B4F4454B73B889C84E0CBF8DEE49"
BuildableName = "libYYImage.a"
BlueprintName = "YYImage"
ReferencedContainer = "container:Pods.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
buildConfiguration = "Debug">
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
......@@ -38,17 +41,25 @@
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
buildConfiguration = "Debug"
allowLocationSimulation = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "13E5B4F4454B73B889C84E0CBF8DEE49"
BuildableName = "libYYImage.a"
BlueprintName = "YYImage"
ReferencedContainer = "container:Pods.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES"
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES">
debugDocumentVersioning = "YES">
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
......
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0700"
LastUpgradeVersion = "1000"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForAnalyzing = "YES"
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES">
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = 'primary'
BlueprintIdentifier = '6B4D74BCDB3E94D1DECBC94D23D1EC94'
BlueprintName = 'YYModel'
ReferencedContainer = 'container:Pods.xcodeproj'
BuildableName = 'libYYModel.a'>
BuildableIdentifier = "primary"
BlueprintIdentifier = "6B4D74BCDB3E94D1DECBC94D23D1EC94"
BuildableName = "libYYModel.a"
BlueprintName = "YYModel"
ReferencedContainer = "container:Pods.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
buildConfiguration = "Debug">
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
......@@ -38,17 +41,25 @@
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
buildConfiguration = "Debug"
allowLocationSimulation = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "6B4D74BCDB3E94D1DECBC94D23D1EC94"
BuildableName = "libYYModel.a"
BlueprintName = "YYModel"
ReferencedContainer = "container:Pods.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES"
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES">
debugDocumentVersioning = "YES">
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
......
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0700"
LastUpgradeVersion = "1000"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForAnalyzing = "YES"
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES">
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = 'primary'
BlueprintIdentifier = '960021BBAC0F776B8556046DAA0FDB7C'
BlueprintName = 'YYText'
ReferencedContainer = 'container:Pods.xcodeproj'
BuildableName = 'libYYText.a'>
BuildableIdentifier = "primary"
BlueprintIdentifier = "960021BBAC0F776B8556046DAA0FDB7C"
BuildableName = "libYYText.a"
BlueprintName = "YYText"
ReferencedContainer = "container:Pods.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
buildConfiguration = "Debug">
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
......@@ -38,17 +41,25 @@
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
buildConfiguration = "Debug"
allowLocationSimulation = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "960021BBAC0F776B8556046DAA0FDB7C"
BuildableName = "libYYText.a"
BlueprintName = "YYText"
ReferencedContainer = "container:Pods.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES"
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES">
debugDocumentVersioning = "YES">
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
......
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0700"
LastUpgradeVersion = "1000"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForAnalyzing = "YES"
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES">
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = 'primary'
BlueprintIdentifier = 'EB9E77089DBD7D9583702BCB9C625690'
BlueprintName = 'YYWebImage'
ReferencedContainer = 'container:Pods.xcodeproj'
BuildableName = 'libYYWebImage.a'>
BuildableIdentifier = "primary"
BlueprintIdentifier = "EB9E77089DBD7D9583702BCB9C625690"
BuildableName = "libYYWebImage.a"
BlueprintName = "YYWebImage"
ReferencedContainer = "container:Pods.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
buildConfiguration = "Debug">
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
......@@ -38,17 +41,25 @@
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
buildConfiguration = "Debug"
allowLocationSimulation = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "EB9E77089DBD7D9583702BCB9C625690"
BuildableName = "libYYWebImage.a"
BlueprintName = "YYWebImage"
ReferencedContainer = "container:Pods.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES"
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES">
debugDocumentVersioning = "YES">
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
......
......@@ -48,11 +48,8 @@
/// completed if self or observer is deallocated.
#define RACObserve(TARGET, KEYPATH) \
({ \
_Pragma("clang diagnostic push") \
_Pragma("clang diagnostic ignored \"-Wreceiver-is-weak\"") \
__weak id target_ = (TARGET); \
[target_ rac_valuesForKeyPath:@keypath(TARGET, KEYPATH) observer:self]; \
_Pragma("clang diagnostic pop") \
})
@class RACDisposable;
......
# RealReachability
[![Version](https://img.shields.io/badge/pod-1.1.9-yellow.svg)](http://cocoadocs.org/docsets/RealReachability/1.1.9/)
[![License](https://img.shields.io/badge/License-MIT-blue.svg)](http://cocoadocs.org/docsets/RealReachability/1.1.9/)
[![Platform](https://img.shields.io/badge/Platform-iOS-orange.svg)](http://cocoadocs.org/docsets/RealReachability/1.1.9/)
[![Platform](https://img.shields.io/badge/Build-Passed-green.svg)](http://cocoadocs.org/docsets/RealReachability/1.1.9/)
[![Version](https://img.shields.io/badge/pod-1.3.0-yellow.svg)](http://cocoadocs.org/docsets/RealReachability/1.3.0/)
[![License](https://img.shields.io/badge/License-MIT-blue.svg)](http://cocoadocs.org/docsets/RealReachability/1.3.0)
[![Platform](https://img.shields.io/badge/Platform-iOS-orange.svg)](http://cocoadocs.org/docsets/RealReachability/1.3.0/)
[![Platform](https://img.shields.io/badge/Build-Passed-green.svg)](http://cocoadocs.org/docsets/RealReachability/1.3.0/)
#### We need to observe the REAL reachability of network for iOS. That's what RealReachability do.
# Why RealReachability?
......@@ -35,7 +35,7 @@ To integrate RealReachability into your Xcode project using CocoaPods, specify i
```ruby
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '7.0'
platform :ios, '8.0'
pod 'RealReachability'
```
......@@ -135,12 +135,18 @@ ReachabilityStatus status = [reachability currentReachabilityStatus];
Once the reachabilityWithBlock was called, the "currentReachabilityStatus" will be refreshed synchronously.
#### Set your own host for Ping (optional)
##### Note that now we introduced the new feature "doublecheck" to make the status more reliable in 1.2.0!
Please make sure the host you set here is available for pinging. Large, stable website suggested.
This step is optional. If you do not set this, our default host is: www.apple.com.
You may set your own host any time you like. Codes just like below:
```
GLobalRealReachability.hostForPing = @"www.apple.com";
GLobalRealReachability.hostForCheck = @"www.youOwnHostExample.com";
```
We suggest you use two hosts: one your own(if you have one available for pinging), one public; Just like the example below.
For more details about the "doublecheck" feature, you can go deep into the codes.
#### Get current WWAN type (optional)
```
......@@ -148,6 +154,11 @@ GLobalRealReachability.hostForPing = @"www.apple.com";
```
Current WWAN type might be used to improve your app's user experience(e.g, set different network request timeout interval for different WWAN type).
#### Check the VPN status of your network
```
- (BOOL)isVPNOn;
```
With the help of this method, we have improved our reachability check logic when using VPN.
#### More:
We can also use PingHelper or LocalConnection alone to make a ping action or just observe the local connection.
Pod usage like blow (we have two pod subspecs):
......
......@@ -8,20 +8,17 @@
#import <Foundation/Foundation.h>
#define GPingHelper [PingHelper sharedInstance]
extern NSString *const kPingResultNotification;
@interface PingHelper : NSObject
/// You MUST have already set the host before your ping action.
/// Think about that: if you never set this, we don't know where to ping.
@property (nonatomic, copy) NSString *host;
// Ping timeout. Default is 2 seconds
@property (nonatomic, assign) NSTimeInterval timeout;
/// Used as a backup for double checking.
@property (nonatomic, copy) NSString *hostForCheck;
+ (instancetype)sharedInstance;
/// Ping timeout. Default is 2 seconds
@property (nonatomic, assign) NSTimeInterval timeout;
/**
* trigger a ping action with a completion block
......
......@@ -13,10 +13,6 @@
#define NSLog(...)
#endif
// We post the ping result to this notification,
// which is a NSNumber from BOOL; YES -> success , NO -> failure.
NSString *const kPingResultNotification = @"kPingResultNotification";
@interface PingHelper() <PingFoundationDelegate>
@property (nonatomic, strong) NSMutableArray *completionBlocks;
......@@ -48,19 +44,6 @@ NSString *const kPingResultNotification = @"kPingResultNotification";
[self clearPingFoundation];
}
#pragma mark - Singlton Method
+ (instancetype)sharedInstance
{
static id pingHelper = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
pingHelper = [[self alloc] init];
});
return pingHelper;
}
#pragma mark - actions
- (void)pingWithBlock:(void (^)(BOOL isSuccess))completion
......@@ -133,12 +116,20 @@ NSString *const kPingResultNotification = @"kPingResultNotification";
#pragma mark - inner methods
- (void)endWithFlag:(BOOL)isSuccess
- (void)doubleCheck
{
// TODO(optimization):
//somewhere around here we should introduce a double check after 3 seconds on another host,
// if maybe not truely failed.
[self clearPingFoundation];
self.isPinging = YES;
self.pingFoundation = [[PingFoundation alloc] initWithHostName:self.hostForCheck];
self.pingFoundation.delegate = self;
[self.pingFoundation start];
}
- (void)endWithFlag:(BOOL)isSuccess
{
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(pingTimeOut) object:nil];
if (!self.isPinging)
......@@ -157,11 +148,6 @@ NSString *const kPingResultNotification = @"kPingResultNotification";
}
[self.completionBlocks removeAllObjects];
}
dispatch_async(dispatch_get_main_queue(), ^{
[[NSNotificationCenter defaultCenter] postNotificationName:kPingResultNotification
object:[NSNumber numberWithBool:isSuccess]];
});
}
#pragma mark - PingFoundation delegate
......@@ -191,22 +177,10 @@ NSString *const kPingResultNotification = @"kPingResultNotification";
[self endWithFlag:YES];
}
- (void)pingFoundation:(PingFoundation *)pinger didSendPacket:(NSData *)packet sequenceNumber:(uint16_t)sequenceNumber
{
//NSLog(@"didSendPacket, sequenceNumber = %@", @(sequenceNumber));
}
- (void)pingFoundation:(PingFoundation *)pinger didReceiveUnexpectedPacket:(NSData *)packet
{
//NSLog(@"didReceiveUnexpectedPacket");
}
#pragma mark - TimeOut handler
- (void)pingTimeOut
{
//NSLog(@"pingTimeOut");
if (!self.isPinging)
{
return;
......@@ -223,11 +197,6 @@ NSString *const kPingResultNotification = @"kPingResultNotification";
}
[self.completionBlocks removeAllObjects];
}
dispatch_async(dispatch_get_main_queue(), ^{
[[NSNotificationCenter defaultCenter] postNotificationName:kPingResultNotification
object:[NSNumber numberWithBool:NO]];
});
}
@end
//
// RealReachability.h
// Version 1.1.0
// Version 1.3.0
//
// Created by Dustturtle on 16/1/9.
// Copyright (c) 2016 Dustturtle. All rights reserved.
......@@ -35,6 +35,8 @@
///We post self to this notification, then you can invoke currentReachabilityStatus method to fetch current status.
extern NSString *const kRealReachabilityChangedNotification;
extern NSString *const kRRVPNStatusChangedNotification;
typedef NS_ENUM(NSInteger, ReachabilityStatus) {
///Direct match with Apple networkStatus, just a force type convert.
RealStatusUnknown = -1,
......@@ -50,11 +52,27 @@ typedef NS_ENUM(NSInteger, WWANAccessType) {
WWANType2G = 3
};
@protocol RealReachabilityDelegate <NSObject>
@optional
/// TODO:通过挂载一个定制的代理请求来检查网络,需要用户自己实现,我们会给出一个示例。
/// 可以通过这种方式规避解决http可用但icmp被阻止的场景下框架判断不正确的问题。
/// (Update: 已经添加了判断VPN的相关逻辑,以解决这种场景下大概率误判的问题)
/// 此方法阻塞?同步返回?还是异步?如果阻塞主线程超过n秒是不行的。
/// 当CustomAgent的doubleCheck被启用时,ping的doubleCheck将不再工作。
/// TODO: We introduce a custom agent to check the network by making http request, that need
/// the user to achieve this.
/// We want to solve the issue on special case(http available but icmp prevented).
/// NOTE: When the double check of the custom agent was used, the double check by ping will work no longer.
- (BOOL)doubleCheckByCustomAgent;
@end
@interface RealReachability : NSObject
/// Please make sure this host is available for pinging! default host:www.apple.com
@property (nonatomic, copy) NSString *hostForPing;
@property (nonatomic, copy) NSString *hostForCheck;
/// Interval in minutes; default is 2.0f, suggest value from 0.3f to 60.0f;
/// If exceeded, the value will be reset to 0.3f or 60.0f (the closer one).
@property (nonatomic, assign) float autoCheckInterval;
......@@ -71,8 +89,10 @@ typedef NS_ENUM(NSInteger, WWANAccessType) {
/**
* To get real reachability we need to do async request,
* then we use the block blow for invoker to handle business request(need real reachability).
* Now we have introduced a double check to make our result more reliable.
*
* @param asyncHandler async request handler, return in 2 seconds(max limit).
* @param asyncHandler async request handler, return in 5 seconds(max limit).
* The limit time may be adjusted later for better experience.
*/
- (void)reachabilityWithBlock:(void (^)(ReachabilityStatus status))asyncHandler;
......@@ -100,4 +120,16 @@ typedef NS_ENUM(NSInteger, WWANAccessType) {
*/
- (WWANAccessType)currentWWANtype;
/**
* Sometimes people use VPN on the device.
* In this situation we need to ignore the ping error.
* (VPN usually do not support ICMP.)
*
* @return current VPN status: YES->ON, NO->OFF.
*
* This method can be used to improve app's further network performance
* (different strategies for different WWAN types).
*/
- (BOOL)isVPNOn;
@end
......@@ -53,6 +53,10 @@
0F99512B208439BA00EB5508 /* GLD_ErrorViewBinder.m in Sources */ = {isa = PBXBuildFile; fileRef = 0F99512A208439BA00EB5508 /* GLD_ErrorViewBinder.m */; };
0F99512E20843FC300EB5508 /* UIView+GLD_ErrorView.m in Sources */ = {isa = PBXBuildFile; fileRef = 0F99512D20843FC300EB5508 /* UIView+GLD_ErrorView.m */; };
0F9951332084430700EB5508 /* UIFont+Extension.m in Sources */ = {isa = PBXBuildFile; fileRef = 0F9951322084430700EB5508 /* UIFont+Extension.m */; };
0F9BC2E4216C46F6002DF096 /* NSString+Extension.m in Sources */ = {isa = PBXBuildFile; fileRef = 0F9BC2E3216C46F6002DF096 /* NSString+Extension.m */; };
0F9BC2E8216C5833002DF096 /* GLD_HomeListViewModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 0F9BC2E7216C5833002DF096 /* GLD_HomeListViewModel.m */; };
0F9BC2EB216C815C002DF096 /* GLD_WeiboModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 0F9BC2EA216C815B002DF096 /* GLD_WeiboModel.m */; };
0F9BC2EF216C89EB002DF096 /* GLD_WeiBoCellViewModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 0F9BC2EE216C89EB002DF096 /* GLD_WeiBoCellViewModel.m */; };
0FB0CEBC20849FFE00E3AAC1 /* GLD_TabelBiner.m in Sources */ = {isa = PBXBuildFile; fileRef = 0FB0CEBB20849FFE00E3AAC1 /* GLD_TabelBiner.m */; };
0FB0CEBF2084A02900E3AAC1 /* GLD_ListViewModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 0FB0CEBE2084A02900E3AAC1 /* GLD_ListViewModel.m */; };
132D58E399BE0E0B21BA3B81 /* libPods-YX_BaseProject.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 21F27066EF4473636B348ECC /* libPods-YX_BaseProject.a */; };
......@@ -176,6 +180,15 @@
0F99513020843FFE00EB5508 /* GLD_ErrorViewProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GLD_ErrorViewProtocol.h; sourceTree = "<group>"; };
0F9951312084430700EB5508 /* UIFont+Extension.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "UIFont+Extension.h"; sourceTree = "<group>"; };
0F9951322084430700EB5508 /* UIFont+Extension.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "UIFont+Extension.m"; sourceTree = "<group>"; };
0F9BC2E2216C46F6002DF096 /* NSString+Extension.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSString+Extension.h"; sourceTree = "<group>"; };
0F9BC2E3216C46F6002DF096 /* NSString+Extension.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSString+Extension.m"; sourceTree = "<group>"; };
0F9BC2E5216C52D2002DF096 /* GLD_NetWorkConfigure.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GLD_NetWorkConfigure.h; sourceTree = "<group>"; };
0F9BC2E6216C5833002DF096 /* GLD_HomeListViewModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GLD_HomeListViewModel.h; sourceTree = "<group>"; };
0F9BC2E7216C5833002DF096 /* GLD_HomeListViewModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GLD_HomeListViewModel.m; sourceTree = "<group>"; };
0F9BC2E9216C815B002DF096 /* GLD_WeiboModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GLD_WeiboModel.h; sourceTree = "<group>"; };
0F9BC2EA216C815B002DF096 /* GLD_WeiboModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GLD_WeiboModel.m; sourceTree = "<group>"; };
0F9BC2ED216C89EB002DF096 /* GLD_WeiBoCellViewModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GLD_WeiBoCellViewModel.h; sourceTree = "<group>"; };
0F9BC2EE216C89EB002DF096 /* GLD_WeiBoCellViewModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GLD_WeiBoCellViewModel.m; sourceTree = "<group>"; };
0FB0CEBA20849FFE00E3AAC1 /* GLD_TabelBiner.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GLD_TabelBiner.h; sourceTree = "<group>"; };
0FB0CEBB20849FFE00E3AAC1 /* GLD_TabelBiner.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GLD_TabelBiner.m; sourceTree = "<group>"; };
0FB0CEBD2084A02900E3AAC1 /* GLD_ListViewModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GLD_ListViewModel.h; sourceTree = "<group>"; };
......@@ -262,6 +275,7 @@
children = (
0F2CF344207B625800E949D8 /* GLD_Foundation.h */,
0F2CF345207B625800E949D8 /* GLD_Foundation.m */,
0F9BC2E1216C46A9002DF096 /* foundation */,
0F2CF347207B627700E949D8 /* UI */,
);
path = MyFoundation;
......@@ -289,6 +303,9 @@
children = (
0F2CF34C207B698900E949D8 /* GLD_TargetWeibo.h */,
0F2CF34D207B698900E949D8 /* GLD_TargetWeibo.m */,
0F9BC2F0216D99B0002DF096 /* view */,
0F9BC2EC216C8906002DF096 /* viewModel */,
0F7027B120CFA8BF00A8CB55 /* model */,
0F37D432207C92BA0088BF24 /* weiboList */,
);
path = weibo;
......@@ -327,6 +344,7 @@
0F2D06062068A72000DA2341 /* Assets.xcassets */,
0F2D06082068A72000DA2341 /* LaunchScreen.storyboard */,
0F2D060B2068A72000DA2341 /* Info.plist */,
0F9BC2E5216C52D2002DF096 /* GLD_NetWorkConfigure.h */,
0F2D06932068FD8300DA2341 /* gld_configure.h */,
0F2D06922068FAAD00DA2341 /* PrefixHeader.pch */,
);
......@@ -383,6 +401,8 @@
children = (
0F2D06332068A7E500DA2341 /* LBHomeViewController.h */,
0F2D06322068A7E500DA2341 /* LBHomeViewController.m */,
0F9BC2E6216C5833002DF096 /* GLD_HomeListViewModel.h */,
0F9BC2E7216C5833002DF096 /* GLD_HomeListViewModel.m */,
);
path = Controller;
sourceTree = "<group>";
......@@ -409,7 +429,6 @@
children = (
0F2D06392068A7E500DA2341 /* AppDelegate.h */,
0F2D063B2068A7E500DA2341 /* AppDelegate.m */,
0F2D063A2068A7E500DA2341 /* main.m */,
);
path = Other;
sourceTree = "<group>";
......@@ -566,10 +585,20 @@
children = (
0F37D433207C93080088BF24 /* GLD_WeiboListController.h */,
0F37D434207C93080088BF24 /* GLD_WeiboListController.m */,
);
path = weiboList;
sourceTree = "<group>";
};
0F7027B120CFA8BF00A8CB55 /* model */ = {
isa = PBXGroup;
children = (
0F2D063A2068A7E500DA2341 /* main.m */,
0F99510B207EFD8000EB5508 /* GLD_UserModel.h */,
0F99510C207EFD8000EB5508 /* GLD_UserModel.m */,
0F9BC2E9216C815B002DF096 /* GLD_WeiboModel.h */,
0F9BC2EA216C815B002DF096 /* GLD_WeiboModel.m */,
);
path = weiboList;
path = model;
sourceTree = "<group>";
};
0F995114207F572A00EB5508 /* UI */ = {
......@@ -619,6 +648,31 @@
path = segment;
sourceTree = "<group>";
};
0F9BC2E1216C46A9002DF096 /* foundation */ = {
isa = PBXGroup;
children = (
0F9BC2E2216C46F6002DF096 /* NSString+Extension.h */,
0F9BC2E3216C46F6002DF096 /* NSString+Extension.m */,
);
path = foundation;
sourceTree = "<group>";
};
0F9BC2EC216C8906002DF096 /* viewModel */ = {
isa = PBXGroup;
children = (
0F9BC2ED216C89EB002DF096 /* GLD_WeiBoCellViewModel.h */,
0F9BC2EE216C89EB002DF096 /* GLD_WeiBoCellViewModel.m */,
);
path = viewModel;
sourceTree = "<group>";
};
0F9BC2F0216D99B0002DF096 /* view */ = {
isa = PBXGroup;
children = (
);
path = view;
sourceTree = "<group>";
};
49898D75F9B4509BFB85AA1C /* Pods */ = {
isa = PBXGroup;
children = (
......@@ -713,7 +767,7 @@
0F2D05F22068A72000DA2341 /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0920;
LastUpgradeCheck = 1000;
ORGANIZATIONNAME = com.yxvzb;
TargetAttributes = {
0F2D05F92068A72000DA2341 = {
......@@ -838,7 +892,6 @@
);
name = "[CP] Copy Pods Resources";
outputPaths = (
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
......@@ -941,6 +994,7 @@
0F2CF334207B0DD400E949D8 /* GLD_Mediator.m in Sources */,
0F2D06962069E2F600DA2341 /* GLD_BaseModel.m in Sources */,
0F99512020804CE900EB5508 /* UIScrollView+Extension.m in Sources */,
0F9BC2E8216C5833002DF096 /* GLD_HomeListViewModel.m in Sources */,
0F2CF346207B625800E949D8 /* GLD_Foundation.m in Sources */,
0FB0CEBF2084A02900E3AAC1 /* GLD_ListViewModel.m in Sources */,
0F99512B208439BA00EB5508 /* GLD_ErrorViewBinder.m in Sources */,
......@@ -963,6 +1017,7 @@
0F2CF34A207B62B600E949D8 /* UIButton+GLD_Extension.m in Sources */,
0F2D06912068CAD600DA2341 /* GLD_NetManager.m in Sources */,
0F2CF33F207B580200E949D8 /* GLD_TargetRoot.m in Sources */,
0F9BC2E4216C46F6002DF096 /* NSString+Extension.m in Sources */,
0F2D068D2068CAAF00DA2341 /* GLD_NetworkReachability.m in Sources */,
0F2D068B2068CAAF00DA2341 /* GLD_NetworkAPIManager.m in Sources */,
0F37D435207C93080088BF24 /* GLD_WeiboListController.m in Sources */,
......@@ -974,6 +1029,8 @@
0F99512E20843FC300EB5508 /* UIView+GLD_ErrorView.m in Sources */,
0F99511D20804C9200EB5508 /* GLD_Utils.m in Sources */,
0F2D06612068A7E500DA2341 /* LBFishViewController.m in Sources */,
0F9BC2EB216C815C002DF096 /* GLD_WeiboModel.m in Sources */,
0F9BC2EF216C89EB002DF096 /* GLD_WeiBoCellViewModel.m in Sources */,
0F2D06582068A7E500DA2341 /* main.m in Sources */,
0F2D065A2068A7E500DA2341 /* LBMessageViewController.m in Sources */,
0F2D06562068A7E500DA2341 /* LBHomeViewController.m in Sources */,
......@@ -1047,6 +1104,7 @@
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;
......@@ -1054,6 +1112,7 @@
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_RANGE_LOOP_ANALYSIS = YES;
......@@ -1102,6 +1161,7 @@
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;
......@@ -1109,6 +1169,7 @@
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_RANGE_LOOP_ANALYSIS = YES;
......
<?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>
......@@ -2,22 +2,4 @@
<Bucket
type = "0"
version = "2.0">
<Breakpoints>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "YX_BaseProject/Classes/Mine/weibo/weiboList/GLD_WeiboListController.m"
timestampString = "545208809.5311331"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "29"
endingLineNumber = "29"
landmarkName = "-viewDidLoad"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
</Breakpoints>
</Bucket>
......@@ -6,10 +6,12 @@
// Copyright © 2018年 com.yxvzb. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "GLD_NetworkAPIManager.h"
@interface GLD_NetManager : NSObject
+ (void)home_netGet:(NSString *)str complete:(completionHandleBlock)block;
@interface GLD_NetManager : GLD_NetworkAPIManager
- (RACSignal *)home_netGet:(NSString *)str;
@end
......@@ -7,32 +7,21 @@
//
#import "GLD_NetManager.h"
#import "GLD_NetworkAPIManager+RAC.h"
@interface GLD_NetManager ()
@property (nonatomic, strong)GLD_NetworkAPIManager *net_manager;
@end
@implementation GLD_NetManager
+ (GLD_NetManager *)shareNetmanager{
static GLD_NetManager *netManager;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
netManager = [GLD_NetManager new];
netManager.net_manager = [GLD_NetworkAPIManager new];
});
return netManager;
}
- (RACSignal *)home_netGet:(NSString *)str{
+ (void)home_netGet:(NSString *)str complete:(completionHandleBlock)block{
GLD_APIConfiguration *config = [[GLD_APIConfiguration alloc]init];
config.urlPath = @"app/main/getLivingCategory";
config.urlPath = homeDetailRequest;
config.requestParameters = @{@"":@""};
[[GLD_NetManager shareNetmanager].net_manager dispatchDataTaskWith:config andCompletionHandler:block];
return [self dataSignalWithConfig:config];
}
@end
......@@ -10,4 +10,6 @@
@interface GLD_NetworkAPIManager (RAC)
- (RACSignal *)dataSignalWithConfig:(GLD_APIConfiguration *)config;
@end
......@@ -10,6 +10,24 @@
@implementation GLD_NetworkAPIManager (RAC)
- (RACSignal *)dataSignalWithConfig:(GLD_APIConfiguration *)config{
return [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
NSNumber *nuber = [self dispatchDataTaskWith:config andCompletionHandler:^(NSError *error, id result) {
if (error) {
[subscriber sendError:error];
}else{
[subscriber sendNext:result];
}
[subscriber sendCompleted];
}];
return [RACDisposable disposableWithBlock:^{
[GLD_NetworkAPIManager cancelTaskWith:nuber];
}];
}];
}
@end
......@@ -10,6 +10,7 @@
#import "GLD_NetworkConfig.h"
#import "GLD_NetworkError.h"
//#import "GLD_RefreshHeader.h"
//#import "YXFooterRefresh.h"
......@@ -29,11 +30,13 @@ typedef void(^NetworkTaskProgressHandler)(CGFloat progress);
@property (assign, nonatomic) gld_networkRequestType requestType;
@property (assign, nonatomic) NSTimeInterval cacheValidTimeInterval;
@property (nonatomic, strong) Class deserializeClass;//想要转化的类
@property (nonatomic, copy) NSString *deserializePath;//取值的key
@end
@interface GLD_NetworkAPIManager : NSObject
+ (instancetype)shareNetWorkManager;
+ (void)cancelTaskWith:(NSNumber *)taskIdentifier;
- (NSNumber *)dispatchDataTaskWith:(GLD_APIConfiguration *)config andCompletionHandler:(completionHandleBlock)completionHandle;
......
......@@ -31,7 +31,14 @@
@end
@implementation GLD_NetworkAPIManager
+ (instancetype)shareNetWorkManager{
static GLD_NetworkAPIManager *manager;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
manager = [GLD_NetworkAPIManager new];
});
return manager;
}
- (void)dealloc{
[GLD_NetworkAPIManager cancelAlltask];
}
......@@ -84,18 +91,40 @@
WS(weakSelf);
NSNumber *taskIdentifier = [[GLD_NetworkClient shareInstance] dispatchTaskWithPath:config.urlPath useHttps:config.useHttps requestType:config.requestType params:config.requestParameters headers:config.requestHeader completionHandle:^(NSURLResponse * response, id data, NSError *error) {
[weakSelf.requestCaches removeObjectForKey:requestCache];
if (error.code == NSURLErrorCancelled) {
NSLog(@"请求被取消了~");
return ;
}
if (!error && config.cacheValidTimeInterval > 0) {
NSError *formatError = [self formatError:error];
id result = data;
if (!formatError && config.cacheValidTimeInterval > 0) {
GLD_Cache *cacheData = [GLD_Cache cacheWithData:data validTime:config.cacheValidTimeInterval];
// [[GLD_CacheManager shareCacheManager] setObjcet:cacheData forKey:cacheKey];
// [[GLD_CacheManager shareCacheManager] setObjcet:cacheData forKey:cacheKey];
[[GLD_CacheManager shareCacheManager] setObjcet:cacheData key:cacheKey];
}
completionHandle ? completionHandle([weakSelf formatError:error], data):nil;
if (formatError == nil && config.deserializeClass != nil) {
NSDictionary *json = data;
if (config.deserializePath.length > 0) {
json = [json valueForKeyPath:config.deserializePath];
}
if ([json isKindOfClass:[NSDictionary class]]) {
result = [config.deserializeClass yy_modelWithJSON:json];
if (result == nil) {
formatError = gld_Error(gld_NoDataErrorNotice, gld_NetworkTaskErrorNoData);
}
} else if ([json isKindOfClass:[NSArray class]]) {
result = [NSArray yy_modelArrayWithClass:config.deserializeClass json:json];
if ([result count] == 0) {
if ([config.requestParameters[@"page"] intValue] == 1) {
formatError = gld_Error(gld_NoDataErrorNotice, gld_NetworkTaskErrorNoData);
} else {
formatError = gld_Error(gld_NoMoreDataErrorNotice, gld_NetworkTaskErrorNoMoreData);
}
}
}
}
completionHandle ? completionHandle(formatError, data):nil;
}];
[self.requestCaches setObject:taskIdentifier forKey:requestCache];
return taskIdentifier;
......
......@@ -9,7 +9,7 @@
#import <Foundation/Foundation.h>
#import "GLD_NetworkConfig.h"
@class GLD_UploadFile;
@interface GLD_NetworkClient : NSObject
......
......@@ -59,7 +59,7 @@
if (!_errorImageView) {
_errorImageView = [UIImageView new];
_errorImageView.contentMode = UIViewContentModeScaleAspectFit;
// _errorImageView.image = @"UI_errorNoData".image;
_errorImageView.image = @"UI_errorNoData".image;
}
return _errorImageView;
}
......
......@@ -8,6 +8,7 @@
#import "GLD_ErrorViewBinder.h"
#import "UIFont+Extension.h"
#import "GLD_NetworkError.h"
@interface GLD_ErrorViewBinder ()
......
//
// GLD_HomeListViewModel.h
// YX_BaseProject
//
// Created by yiyangkeji on 2018/10/9.
// Copyright © 2018年 com.yxvzb. All rights reserved.
//
#import "GLD_ListViewModel.h"
NS_ASSUME_NONNULL_BEGIN
@interface GLD_HomeListViewModel : GLD_ListViewModel
@end
NS_ASSUME_NONNULL_END
//
// GLD_HomeListViewModel.m
// YX_BaseProject
//
// Created by yiyangkeji on 2018/10/9.
// Copyright © 2018年 com.yxvzb. All rights reserved.
//
#import "GLD_HomeListViewModel.h"
#import "GLD_NetManager.h"
#import "GLD_WeiboModel.h"
#import "GLD_WeiBoCellViewModel.h"
@implementation GLD_HomeListViewModel
- (RACSignal *)fetchDataWithPage:(int)page{
return [[[GLD_NetManager shareNetWorkManager] home_netGet:@""] map:^id(NSArray *value) {
return [value.rac_sequence map:^id(GLD_WeiboModel *weibo) {
return [GLD_WeiBoCellViewModel new];
}];
}];
}
@end
......@@ -20,9 +20,7 @@
[super viewDidLoad];
//数据请求(测试接口)
[GLD_NetManager home_netGet:@"" complete:^(NSError *error, id result) {
//c层处理数据
}];
// [GLD_NetManager home_netGet:@""];
}
......
......@@ -10,6 +10,6 @@
@interface GLD_BaseViewController : UIViewController
- (instancetype)initWithTitle:(NSString *)title onClick:(void (^)(void))clickHandler;
- (instancetype)initWithTitle:(NSString *)title;
@end
......@@ -14,6 +14,9 @@
@implementation GLD_BaseViewController
- (instancetype)initWithTitle:(NSString *)title onClick:(void (^)(void))clickHandler{
return [self initWithTitle:title];
}
- (instancetype)initWithTitle:(NSString *)title{
self = [super init];
if (self) {
......@@ -22,7 +25,6 @@
}
return self;
}
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
......
......@@ -10,7 +10,8 @@
#import "LBTabBarController.h"
#import "LBHomeViewController.h"
#import "LBMineViewController.h"
#import "GLD_WeiboListController.h"
@implementation GLD_TargetRoot
......@@ -23,6 +24,6 @@
}
- (UIViewController *)otherViewControllor:(id)params{
return [[LBMineViewController alloc]initWithTitle:params[@"title"] onClick:params[@"onClick"]];
return [[GLD_WeiboListController alloc]initWithTitle:params[@"title"] onClick:params[@"onClick"]];
}
@end
......@@ -10,6 +10,6 @@
@interface LBMineViewController : GLD_BaseViewController
- (instancetype)initWithTitle:(NSString *)title onClick:(void (^)(void))clickHandler;
@end
//
// GLD_WeiboModel.h
// YX_BaseProject
//
// Created by yiyangkeji on 2018/10/9.
// Copyright © 2018年 com.yxvzb. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "GLD_UserModel.h"
NS_ASSUME_NONNULL_BEGIN
@interface GLD_WeiboModel : NSObject
@property (nonatomic, copy) NSString *ID;
@property (nonatomic, strong) GLD_UserModel *sender;
@property (nonatomic, copy) NSString *createdDate;
@property (nonatomic, copy) NSString *text;
@property (nonatomic, strong) NSArray *picUrls;
@property (nonatomic, assign) NSInteger repostsCount;
@property (nonatomic, assign) NSInteger commentsCount;
@property (nonatomic, assign) NSInteger attitudesCount;
@property (nonatomic, assign) BOOL favorited;
@property (nonatomic, strong) GLD_WeiboModel *retweetedWeibo;
@end
NS_ASSUME_NONNULL_END
//
// GLD_WeiboModel.m
// YX_BaseProject
//
// Created by yiyangkeji on 2018/10/9.
// Copyright © 2018年 com.yxvzb. All rights reserved.
//
#import "GLD_WeiboModel.h"
@implementation GLD_WeiboModel
+ (NSDictionary *)modelCustomPropertyMapper{
return @{@"ID": @"idstr",
@"sender": @"user",
@"picUrls": @"pic_urls",
@"createdDate": @"created_at",
@"repostsCount": @"reposts_count",
@"commentsCount": @"comments_count",
@"attitudesCount": @"attitudes_count",
@"retweetedWeibo": @"retweeted_status"};
}
@end
//
// GLD_WeiBoCellViewModel.h
// YX_BaseProject
//
// Created by yiyangkeji on 2018/10/9.
// Copyright © 2018年 com.yxvzb. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "GLD_ListViewModelProtocol.h"
NS_ASSUME_NONNULL_BEGIN
@interface GLD_WeiBoCellViewModel : NSObject<GLD_ListCellViewModelProtocol>
@end
NS_ASSUME_NONNULL_END
//
// GLD_WeiBoCellViewModel.m
// YX_BaseProject
//
// Created by yiyangkeji on 2018/10/9.
// Copyright © 2018年 com.yxvzb. All rights reserved.
//
#import "GLD_WeiBoCellViewModel.h"
@interface GLD_WeiBoCellViewModel ()
@property (nonatomic, strong)id model;
@end
@implementation GLD_WeiBoCellViewModel
- (instancetype)initWithListModel:(id)model {
self = [super init];
if (self) {
}
return self;
}
//- (void)bindModel
@end
......@@ -6,8 +6,9 @@
// Copyright © 2018年 com.yxvzb. All rights reserved.
//
#import <UIKit/UIKit.h>
#import "GLD_BaseViewController.h"
@interface GLD_WeiboListController : UIViewController
@property (nonatomic, strong)RACSubject *delegateSubject;
@interface GLD_WeiboListController : GLD_BaseViewController
@property (nonatomic, strong)RACSignal *delegateSubject;
@end
......@@ -8,9 +8,13 @@
#import "GLD_WeiboListController.h"
#import "GLD_UserModel.h"
#import "RACDynamicSequence.h"
#import "GLD_SegmentView.h"
@interface GLD_WeiboListController ()
@property (nonatomic, strong)RACCommand *command;
@property (nonatomic, strong)UITextField *textfield;
@end
@implementation GLD_WeiboListController
......@@ -18,22 +22,154 @@
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor whiteColor];
GLD_SegmentView *redv = [GLD_SegmentView new];
[self.view addSubview:redv];
redv.frame = CGRectMake(50, 40, 50, 40);
redv.backgroundColor = [UIColor redColor];
UIButton *btu = [UIButton new];
[redv addSubview:btu];
btu.frame = CGRectMake(10, 10, 30, 30);
[btu addTarget:self action:@selector(butClick) forControlEvents:UIControlEventTouchUpInside];
_textfield = [UITextField new];
[self.view addSubview:_textfield];
_textfield.frame = CGRectMake(100, 100, 100, 100);
RAC(self,title) = RACObserve(self, textfield.text);
_textfield.borderStyle = UITextBorderStyleBezel;
//#pragma("clang diagnostic push")
//#pragma("clang diagnostic ignored "-Warc-performSelector-leaks"")
[self performSelector:@selector(multiRequest) withObject:nil];
//#pragma("clang diagnostic pop")
[self creatSignal];
}
//多个网络请求,统一处理
- (void)multiRequest{
RACSignal *request1 = [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(10 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[subscriber sendNext:@1];
[subscriber sendCompleted];
});
return [RACDisposable disposableWithBlock:^{
NSLog(@"raquest1 disposable");
}];
}];
RACSignal *request2 = [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
[subscriber sendNext:@2];
[subscriber sendCompleted];
return [RACDisposable disposableWithBlock:^{
NSLog(@"request2 disposable");
}];
}];
[self rac_liftSelector:@selector(butClick:s2:) withSignalsFromArray:@[request1,request2]];
}
//统一处理网络请求
- (void)butClick:(id)data s2:(id)data2{
NSLog(@"data = %@\n data2 = %@\n",data,data2);
}
static NSInteger num = 0;
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
[self sendSignal];
}
/**
- (void)commandSignalTest{
RACCommand *command = [[RACCommand alloc]initWithSignalBlock:^RACSignal *(id input) {
return [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
[subscriber sendNext:@(num++)];
[subscriber sendCompleted];
return [RACDisposable disposableWithBlock:^{
}];
}];
}];
//强引用,防止命令执行的时候释放命令
self.command = command;
[self.command.executionSignals.switchToLatest subscribeNext:^(id x) {
NSLog(@"%@\n",x);
}];
}
- (void)commandSubscribe{
// 5.执行命令
[self.command execute:nil];
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[self.command execute:@1];
});
}
*/
- (void)sendSignal{
if (self.delegateSubject) {
//订阅信号,即可收到信号发送的内容
[self.delegateSubject subscribeNext:^(id x) {
NSLog(@"-----%@",x);
}];
}
}
- (void)creatSignal{
//创建信号
self.delegateSubject = [[RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
//发送信号
[subscriber sendNext:@"dddd"];
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[subscriber sendNext:@"ccccc"];
});
[subscriber sendCompleted];
return [RACDisposable disposableWithBlock:^{
NSLog(@"++++++");
}];
}] doNext:^(id x) {
NSLog(@"doNext");
}];
}
- (void)RACchangeToArray{
NSDictionary *dict = @{@"name":@"1",@"age":@"2"};
NSMutableArray *arr = [NSMutableArray array];
for (int i = 0; i < 5; i++) {
[arr addObject:dict];
}
NSArray *arr1 = [[arr.rac_sequence map:^id(id value) {
NSArray *arr1 = [[arr.rac_sequence map:^id(id value) {
return [GLD_UserModel yy_modelWithDictionary:value];
}] array];
// Do any additional setup after loading the view.
//分步操作
//映射成一个动态的集合
RACDynamicSequence *ddd = [arr.rac_sequence map:^id(id value) {
return [GLD_UserModel yy_modelWithDictionary:value];
}];
NSArray *arr2 = ddd.array;
//arr1 和arr2 是数组内容相同
}
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
if (self.delegateSubject) {
[self.delegateSubject sendNext:@"dddd"];
}
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
......
//
// GLD_NetWorkConfigure.h
// YX_BaseProject
//
// Created by yiyangkeji on 2018/10/9.
// Copyright © 2018年 com.yxvzb. All rights reserved.
//
#ifndef GLD_NetWorkConfigure_h
#define GLD_NetWorkConfigure_h
//首页
#define homeDetailRequest @"app/main/getLivingCategory"
#endif /* GLD_NetWorkConfigure_h */
......@@ -8,6 +8,7 @@
#import <Foundation/Foundation.h>
#import "UIButton+GLD_Extension.h"
#import "NSString+Extension.h"
@interface GLD_Foundation : NSObject
......
//
// NSString+Extension.h
// YX_BaseProject
//
// Created by yiyangkeji on 2018/10/9.
// Copyright © 2018年 com.yxvzb. All rights reserved.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface NSString (Extension)
- (CGSize)sizeWithBoundingSize:(CGSize)boundingSize fontCode:(NSInteger)fontCode;
- (NSURL *)url;
- (UIImage *)image;
- (NSString *)encodeURLString;
- (BOOL)isValidPhoneNum;
@end
NS_ASSUME_NONNULL_END
//
// NSString+Extension.m
// YX_BaseProject
//
// Created by yiyangkeji on 2018/10/9.
// Copyright © 2018年 com.yxvzb. All rights reserved.
//
#import "NSString+Extension.h"
@implementation NSString (Extension)
- (CGSize)sizeWithBoundingSize:(CGSize)boundingSize fontCode:(NSInteger)fontCode {
return [self boundingRectWithSize:boundingSize options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName: [UIFont fontOfCode:fontCode]} context:nil].size;
}
- (NSURL *)url {
return [NSURL URLWithString:self];
}
- (UIImage *)image {
return [UIImage imageNamed:self];
}
- (NSString *)encodeURLString {
NSString *newString = CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,(CFStringRef)self,NULL,(CFStringRef)@"!$&'()*+,-./:;=?@_~%#[]",kCFStringEncodingUTF8));
if (!newString) {
return self;
}
return newString;
}
- (BOOL)isValidPhoneNum {
/**
* 手机号码
* 移动:134[0-8],135,136,137,138,139,150,151,157,158,159,182,187,188
* 联通:130,131,132,152,155,156,185,186
* 电信:133,1349,153,180,189
*/
NSString * MOBILE = @"^1(3[0-9]|5[0-35-9]|8[025-9])\\d{8}$";
/**
* 中国移动:China Mobile
* 134[0-8],135,136,137,138,139,150,151,157,158,159,182,187,188
*/
NSString * CM = @"^1(34[0-8]|(3[5-9]|5[017-9]|8[278])\\d)\\d{7}$";
/**
* 中国联通:China Unicom
* 130,131,132,152,155,156,185,186
*/
NSString * CU = @"^1(3[0-2]|5[256]|8[56])\\d{8}$";
/**
* 中国电信:China Telecom
* 133,1349,153,180,189
*/
NSString * CT = @"^1((33|53|8[09])[0-9]|349)\\d{7}$";
/**
* 大陆地区固话及小灵通
* 区号:010,020,021,022,023,024,025,027,028,029
* 号码:七位或八位
*/
// NSString * PHS = @"^0(10|2[0-5789]|\\d{3})\\d{7,8}$";
NSPredicate *regextestmobile = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", MOBILE];
NSPredicate *regextestcm = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CM];
NSPredicate *regextestcu = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CU];
NSPredicate *regextestct = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CT];
BOOL res1 = [regextestmobile evaluateWithObject:self];
BOOL res2 = [regextestcm evaluateWithObject:self];
BOOL res3 = [regextestcu evaluateWithObject:self];
BOOL res4 = [regextestct evaluateWithObject:self];
if (res1 || res2 || res3 || res4 ){
return YES;
} else {
return NO;
}
}
@end
......@@ -51,7 +51,12 @@
}
- (NSMutableArray *)allData{
if (_allData == nil) {
_allData = [NSMutableArray array];
}
return _allData;
}
......@@ -61,10 +66,5 @@
return [RACSignal empty];
}
- (NSMutableArray *)allData{
if (!_allData) {
_allData = [NSMutableArray array];
}
return _allData;
}
@end
......@@ -18,3 +18,17 @@
@optional
- (RACCommand *)loadMoreCommand;
@end
@protocol GLD_ListCellViewModelProtocol <NSObject>
- (instancetype)initWithListModel:(id)model;
@end
@protocol GLD_TableBinderProtocol < UITableViewDelegate, UITableViewDataSource>
- (NSArray<Class> *)CellClaesses;
@optional
- (NSArray<UINib *> *)cellForNibs;
@end
......@@ -7,7 +7,10 @@
//
#import <UIKit/UIKit.h>
#import "GLD_ListViewModelProtocol.h"
@interface GLD_TabelBiner : UIViewController
@interface GLD_TabelBiner : UIViewController<GLD_TableBinderProtocol>
@end
......@@ -7,31 +7,124 @@
//
#import "GLD_TabelBiner.h"
#import "UIView+GLD_ErrorView.h"
#import "GLD_NetworkError.h"
@interface GLD_TabelBiner ()
@property (nonatomic, strong)UITableView *view;//view
@property (nonatomic, strong)id<GLD_ListViewModelProtocol> viewModel;
@end
@implementation GLD_TabelBiner
@synthesize view = _tableView;
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
- (instancetype)initWithView:(UITableView *)view andViewModel:(id<GLD_ListViewModelProtocol>)viewModel{
self = [super init];
if (self) {
self.view = view;
[self bindViewModel:viewModel];
}
return self;
}
/*
#pragma mark - Navigation
- (void)refreshData {
[self.view.mj_header beginRefreshing];
}
- (void)bindViewModel:(id<GLD_ListViewModelProtocol>) viewModel{
self.viewModel = viewModel;
self.view.delegate = self;
self.view.dataSource = self;
if (IsExist_Array(self.CellClaesses))
for (Class class in self.CellClaesses) {
[self.view registerClass:class forCellReuseIdentifier:[class description]];
}
if (IsExist_Array(self.cellForNibs))
for (UINib *nib in self.cellForNibs) {
[self.view registerNib:nib forCellReuseIdentifier:[nib description]];
}
[self bindErrorView];
}
// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
// Get the new view controller using [segue destinationViewController].
// Pass the selected object to the new view controller.
- (void)bindErrorView{
//订阅,当收到刷新信号时隐藏
@weakify(self);
[self.viewModel.refreshCommand.executionSignals.switchToLatest subscribeNext:^(id x) {
@strongify(self);
self.view.scrollEnabled = YES;
self.view.errorView.hidden = YES;
}];
//订阅错误
[self.viewModel.refreshCommand.errors subscribeNext:^(NSError *error) {
@strongify(self);
[self.view.mj_header endRefreshing];
if (self.viewModel.allData.count == 0) {
self.view.scrollEnabled = NO;
self.view.errorView.hidden = NO;
self.view.errorView.error = error;
self.view.errorView.errorTextButton.rac_command = [[RACCommand alloc]initWithSignalBlock:^RACSignal *(id input) {
[self refreshData];
return [RACSignal empty];
}];
}
}];
}
- (void)bindTableHeader{
@weakify(self);
self.view.mj_header = [MJRefreshHeader headerWithRefreshingBlock:^{
@strongify(self);
[self.viewModel.refreshCommand execute:nil];
}];
[self.viewModel.refreshCommand.executionSignals.switchToLatest subscribeNext:^(id x) {
@strongify(self);
[self.view.mj_header endRefreshing];
[self.view.mj_footer resetNoMoreData];
[self.view reloadData];
}];
}
*/
- (void)bindTableFooter{
if (![self.viewModel respondsToSelector:@selector(loadMoreCommand)] ||
self.viewModel.loadMoreCommand == nil) {
return;
}
@weakify(self);
self.view.mj_footer = [MJRefreshAutoNormalFooter footerWithRefreshingBlock:^{
@strongify(self);
[[self.viewModel.loadMoreCommand execute:nil] subscribeNext:^(id x) {
[self.view.mj_footer endRefreshing];
[self.view reloadData];
} error:^(NSError *error) {
if (error.code == gld_NetworkTaskErrorNoMoreData) {
[self.view.mj_footer endRefreshingWithNoMoreData];
} else {
[self.view.mj_footer endRefreshing];
}
}];
}];
[RACObserve(self.view, contentSize) subscribeNext:^(NSNumber *contentSize) {
@strongify(self);
self.view.mj_footer.hidden = [contentSize CGSizeValue].height < self.view.mj_h;
}];
}
@end
......@@ -11,7 +11,8 @@
// Include any system framework and library headers here that should be included in all compilation units.
// You will also need to set the Prefix Header build setting of one or more of your targets to reference this file.
#import "GLD_NetManager.h"
#import "gld_configure.h"
#import <AFNetworking/AFNetworking.h>
#import <ReactiveCocoa/ReactiveCocoa.h>
......@@ -19,7 +20,8 @@
#import <YYModel/YYModel.h>
#import "Masonry.h"
#import "MJRefresh.h"
#import "GLD_NetWorkConfigure.h"
#import "ReactiveCocoa.h"
#import "GLD_Utils.h"
#endif /* PrefixHeader_pch */
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!