├── .swift-version ├── FORScrollViewEmptyAssistant ├── Assets │ ├── .gitkeep │ ├── blank_button@2x.png │ └── blank_button@3x.png └── Classes │ ├── .gitkeep │ └── FORScrollViewEmptyAssistant.h ├── _Pods.xcodeproj ├── Example ├── Tests │ ├── en.lproj │ │ └── InfoPlist.strings │ ├── Tests-Prefix.pch │ ├── Tests-Info.plist │ └── Tests.m ├── FORScrollViewEmptyAssistant │ ├── en.lproj │ │ └── InfoPlist.strings │ ├── Images.xcassets │ │ ├── Contents.json │ │ ├── image_empty.imageset │ │ │ ├── image_empty@2x.png │ │ │ ├── image_empty@3x.png │ │ │ └── Contents.json │ │ ├── blank_button.imageset │ │ │ ├── blank_button@2x.png │ │ │ ├── blank_button@3x.png │ │ │ └── Contents.json │ │ └── LaunchImage.launchimage │ │ │ └── Contents.json │ ├── FORViewController.h │ ├── FORCollectionViewController.h │ ├── FORAppDelegate.h │ ├── FORScrollViewEmptyAssistant-Prefix.pch │ ├── main.m │ ├── FORAppDelegate.m │ └── FORScrollViewEmptyAssistant-Info.plist ├── Pods │ ├── Target Support Files │ │ ├── Kiwi │ │ │ ├── Kiwi.modulemap │ │ │ ├── Kiwi-dummy.m │ │ │ ├── Kiwi-prefix.pch │ │ │ ├── Kiwi.xcconfig │ │ │ └── Info.plist │ │ ├── MJRefresh │ │ │ ├── MJRefresh.modulemap │ │ │ ├── MJRefresh-dummy.m │ │ │ ├── MJRefresh-prefix.pch │ │ │ ├── MJRefresh.xcconfig │ │ │ ├── Info.plist │ │ │ └── MJRefresh-umbrella.h │ │ ├── DZNEmptyDataSet │ │ │ ├── DZNEmptyDataSet.modulemap │ │ │ ├── DZNEmptyDataSet-dummy.m │ │ │ ├── DZNEmptyDataSet-prefix.pch │ │ │ ├── DZNEmptyDataSet-umbrella.h │ │ │ ├── DZNEmptyDataSet.xcconfig │ │ │ └── Info.plist │ │ ├── FBSnapshotTestCase │ │ │ ├── FBSnapshotTestCase.modulemap │ │ │ ├── FBSnapshotTestCase-dummy.m │ │ │ ├── FBSnapshotTestCase-prefix.pch │ │ │ ├── FBSnapshotTestCase-umbrella.h │ │ │ ├── FBSnapshotTestCase.xcconfig │ │ │ └── Info.plist │ │ ├── FORGestureTrackDisplay │ │ │ ├── FORGestureTrackDisplay.modulemap │ │ │ ├── FORGestureTrackDisplay-dummy.m │ │ │ ├── FORGestureTrackDisplay-prefix.pch │ │ │ ├── FORGestureTrackDisplay-umbrella.h │ │ │ ├── FORGestureTrackDisplay.xcconfig │ │ │ └── Info.plist │ │ ├── FORScrollViewEmptyAssistant │ │ │ ├── FORScrollViewEmptyAssistant.modulemap │ │ │ ├── FORScrollViewEmptyAssistant-dummy.m │ │ │ ├── FORScrollViewEmptyAssistant-prefix.pch │ │ │ ├── FORScrollViewEmptyAssistant-umbrella.h │ │ │ ├── FORScrollViewEmptyAssistant.xcconfig │ │ │ ├── ResourceBundle-FORScrollViewEmptyAssistant-Info.plist │ │ │ └── Info.plist │ │ ├── Pods-FORScrollViewEmptyAssistant_Tests │ │ │ ├── Pods-FORScrollViewEmptyAssistant_Tests.modulemap │ │ │ ├── Pods-FORScrollViewEmptyAssistant_Tests-dummy.m │ │ │ ├── Pods-FORScrollViewEmptyAssistant_Tests-umbrella.h │ │ │ ├── Info.plist │ │ │ ├── Pods-FORScrollViewEmptyAssistant_Tests.debug.xcconfig │ │ │ └── Pods-FORScrollViewEmptyAssistant_Tests.release.xcconfig │ │ └── Pods-FORScrollViewEmptyAssistant_Example │ │ │ ├── Pods-FORScrollViewEmptyAssistant_Example.modulemap │ │ │ ├── Pods-FORScrollViewEmptyAssistant_Example-dummy.m │ │ │ ├── Pods-FORScrollViewEmptyAssistant_Example-umbrella.h │ │ │ ├── Info.plist │ │ │ ├── Pods-FORScrollViewEmptyAssistant_Example.debug.xcconfig │ │ │ └── Pods-FORScrollViewEmptyAssistant_Example.release.xcconfig │ ├── MJRefresh │ │ ├── MJRefresh │ │ │ ├── MJRefresh.bundle │ │ │ │ └── arrow@2x.png │ │ │ ├── Base │ │ │ │ ├── MJRefreshBackFooter.h │ │ │ │ ├── MJRefreshAutoFooter.h │ │ │ │ ├── MJRefreshHeader.h │ │ │ │ └── MJRefreshFooter.h │ │ │ ├── Custom │ │ │ │ ├── Footer │ │ │ │ │ ├── Auto │ │ │ │ │ │ ├── MJRefreshAutoNormalFooter.h │ │ │ │ │ │ ├── MJRefreshAutoGifFooter.h │ │ │ │ │ │ └── MJRefreshAutoStateFooter.h │ │ │ │ │ └── Back │ │ │ │ │ │ ├── MJRefreshBackNormalFooter.h │ │ │ │ │ │ ├── MJRefreshBackStateFooter.h │ │ │ │ │ │ └── MJRefreshBackGifFooter.h │ │ │ │ └── Header │ │ │ │ │ ├── MJRefreshNormalHeader.h │ │ │ │ │ ├── MJRefreshGifHeader.h │ │ │ │ │ └── MJRefreshStateHeader.h │ │ │ ├── MJRefresh.h │ │ │ ├── UIView+MJExtension.h │ │ │ ├── UIScrollView+MJExtension.h │ │ │ ├── UIScrollView+MJRefresh.h │ │ │ ├── MJRefreshConst.m │ │ │ └── UIView+MJExtension.m │ │ └── LICENSE │ ├── Kiwi │ │ ├── Classes │ │ │ ├── Core │ │ │ │ ├── KWCaptureSpy.h │ │ │ │ ├── NSValue+KiwiAdditions.h │ │ │ │ ├── KWCountType.h │ │ │ │ ├── KWProbe.h │ │ │ │ ├── KWDeviceInfo.h │ │ │ │ ├── KWExpectationType.h │ │ │ │ ├── KWReporting.h │ │ │ │ ├── KWMessageSpying.h │ │ │ │ ├── KWFormatter.h │ │ │ │ ├── NSObject+KiwiVerifierAdditions.h │ │ │ │ ├── KiwiBlockMacros.h │ │ │ │ ├── KWAny.h │ │ │ │ ├── KWExampleDelegate.h │ │ │ │ ├── NSMethodSignature+KiwiAdditions.h │ │ │ │ ├── KWLet.h │ │ │ │ ├── KWSymbolicator.h │ │ │ │ ├── KWAny.m │ │ │ │ ├── KWNull.h │ │ │ │ ├── KWNull.m │ │ │ │ ├── NSObject+KiwiVerifierAdditions.m │ │ │ │ ├── KWProbePoller.h │ │ │ │ ├── NSObject+KiwiSpyAdditions.h │ │ │ │ ├── KWFutureObject.h │ │ │ │ ├── KWWorkarounds.h │ │ │ │ ├── NSProxy+KiwiVerifierAdditions.h │ │ │ │ ├── KWBlock.h │ │ │ │ ├── NSMethodSignature+KiwiAdditions.m │ │ │ │ ├── NSValue+KiwiAdditions.m │ │ │ │ ├── KWDeviceInfo.m │ │ │ │ ├── KWStringUtilities.h │ │ │ │ ├── KWCallSite.h │ │ │ │ ├── NSProxy+KiwiVerifierAdditions.m │ │ │ │ ├── KWFailure.h │ │ │ │ ├── KWWorkarounds.m │ │ │ │ ├── KiwiConfiguration.h │ │ │ │ ├── KWMatcher.h │ │ │ │ ├── KWFutureObject.m │ │ │ │ ├── KWExampleSuite.h │ │ │ │ ├── KWMatcherFactory.h │ │ │ │ ├── KWMatchers.h │ │ │ │ ├── KWSpec.h │ │ │ │ ├── KWBlock.m │ │ │ │ ├── NSInvocation+KiwiAdditions.h │ │ │ │ ├── KWMatching.h │ │ │ │ ├── KWExampleNodeVisitor.h │ │ │ │ ├── NSObject+KiwiSpyAdditions.m │ │ │ │ ├── KWInvocationCapturer.h │ │ │ │ ├── KWBackgroundTask.h │ │ │ │ ├── KWObjCUtilities.h │ │ │ │ ├── NSNumber+KiwiAdditions.h │ │ │ │ ├── KWCallSite.m │ │ │ │ ├── KWMessageTracker.h │ │ │ │ ├── KWMessagePattern.h │ │ │ │ ├── KWFailure.m │ │ │ │ ├── NSInvocation+OCMAdditions.h │ │ │ │ ├── KWFormatter.m │ │ │ │ ├── KWProbePoller.m │ │ │ │ ├── KWCaptureSpy.m │ │ │ │ └── KWExampleSuiteBuilder.h │ │ │ ├── Matchers │ │ │ │ ├── KWBeEmptyMatcher.h │ │ │ │ ├── KWBeZeroMatcher.h │ │ │ │ ├── KWEqualMatcher.h │ │ │ │ ├── KWBeIdenticalToMatcher.h │ │ │ │ ├── KWBeKindOfClassMatcher.h │ │ │ │ ├── KWBeMemberOfClassMatcher.h │ │ │ │ ├── KWBeSubclassOfClassMatcher.h │ │ │ │ ├── KWRespondToSelectorMatcher.h │ │ │ │ ├── KWConformToProtocolMatcher.h │ │ │ │ ├── KWBeTrueMatcher.h │ │ │ │ ├── KWGenericMatchEvaluator.h │ │ │ │ ├── KWBeWithinMatcher.h │ │ │ │ ├── KWStringPrefixMatcher.h │ │ │ │ ├── KWInequalityMatcher.h │ │ │ │ ├── KWBlockRaiseMatcher.h │ │ │ │ ├── KWRegularExpressionPatternMatcher.h │ │ │ │ ├── KWBeBetweenMatcher.h │ │ │ │ ├── KWGenericMatcher.h │ │ │ │ ├── KWNilMatcher.h │ │ │ │ ├── KWChangeMatcher.h │ │ │ │ ├── KWHaveValueMatcher.h │ │ │ │ ├── KWStringContainsMatcher.h │ │ │ │ ├── KWNotificationMatcher.h │ │ │ │ ├── KWContainMatcher.h │ │ │ │ ├── KWGenericMatchingAdditions.h │ │ │ │ ├── KWStringPrefixMatcher.m │ │ │ │ ├── KWStringContainsMatcher.m │ │ │ │ ├── KWGenericMatcher.m │ │ │ │ ├── KWConformToProtocolMatcher.m │ │ │ │ ├── KWRespondToSelectorMatcher.m │ │ │ │ ├── KWBeKindOfClassMatcher.m │ │ │ │ ├── KWBeZeroMatcher.m │ │ │ │ ├── KWBeMemberOfClassMatcher.m │ │ │ │ ├── KWHaveMatcher.h │ │ │ │ ├── KWContainStringMatcher.h │ │ │ │ ├── KWBeSubclassOfClassMatcher.m │ │ │ │ ├── KWBeTrueMatcher.m │ │ │ │ ├── KWBeEmptyMatcher.m │ │ │ │ ├── KWBeIdenticalToMatcher.m │ │ │ │ └── KWUserDefinedMatcher.h │ │ │ ├── Nodes │ │ │ │ ├── KWAfterAllNode.h │ │ │ │ ├── KWAfterEachNode.h │ │ │ │ ├── KWBeforeAllNode.h │ │ │ │ ├── KWBeforeEachNode.h │ │ │ │ ├── KWExampleNode.h │ │ │ │ ├── KWAfterAllNode.m │ │ │ │ ├── KWAfterEachNode.m │ │ │ │ ├── KWBeforeAllNode.m │ │ │ │ ├── KWBeforeEachNode.m │ │ │ │ ├── KWBlockNode.m │ │ │ │ ├── KWItNode.h │ │ │ │ ├── KWRegisterMatchersNode.h │ │ │ │ ├── KWBlockNode.h │ │ │ │ ├── KWPendingNode.h │ │ │ │ ├── KWRegisterMatchersNode.m │ │ │ │ ├── KWLetNode.h │ │ │ │ ├── KWPendingNode.m │ │ │ │ └── KWItNode.m │ │ │ ├── Shared Examples │ │ │ │ ├── KWSharedExampleRegistry.h │ │ │ │ ├── KWSharedExample.h │ │ │ │ └── KWSharedExample.m │ │ │ ├── Mocking │ │ │ │ ├── NSObject+KiwiMockAdditions.h │ │ │ │ └── NSObject+KiwiMockAdditions.m │ │ │ ├── Verifiers │ │ │ │ ├── KWVerifying.h │ │ │ │ ├── KWExistVerifier.h │ │ │ │ ├── KWAsyncVerifier.h │ │ │ │ └── KWMatchVerifier.h │ │ │ ├── Config │ │ │ │ ├── KWSuiteConfigurationBase.h │ │ │ │ └── KWAllTestsSuite.m │ │ │ └── Stubbing │ │ │ │ ├── KWStub.h │ │ │ │ └── KWIntercept.h │ │ ├── License.txt │ │ └── Readme.md │ ├── FORGestureTrackDisplay │ │ ├── FORGestureTrackDisplay │ │ │ ├── FORGestureTrack.h │ │ │ └── FORTrackGesture.h │ │ └── LICENSE │ ├── FBSnapshotTestCase │ │ ├── FBSnapshotTestCase │ │ │ ├── Categories │ │ │ │ ├── UIApplication+StrictKeyWindow.h │ │ │ │ ├── UIImage+Snapshot.h │ │ │ │ ├── UIApplication+StrictKeyWindow.m │ │ │ │ ├── UIImage+Diff.h │ │ │ │ └── UIImage+Compare.h │ │ │ ├── FBSnapshotTestCasePlatform.h │ │ │ └── FBSnapshotTestCasePlatform.m │ │ └── LICENSE │ ├── Local Podspecs │ │ └── FORScrollViewEmptyAssistant.podspec.json │ ├── DZNEmptyDataSet │ │ └── LICENSE │ └── Manifest.lock ├── FORScrollViewEmptyAssistant.xcodeproj │ └── project.xcworkspace │ │ └── contents.xcworkspacedata ├── FORScrollViewEmptyAssistant.xcworkspace │ └── contents.xcworkspacedata ├── Podfile └── Podfile.lock ├── .gitignore ├── LICENSE ├── .travis.yml └── FORScrollViewEmptyAssistant.podspec /.swift-version: -------------------------------------------------------------------------------- 1 | 3.0 2 | -------------------------------------------------------------------------------- /FORScrollViewEmptyAssistant/Assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /_Pods.xcodeproj: -------------------------------------------------------------------------------- 1 | Example/Pods/Pods.xcodeproj -------------------------------------------------------------------------------- /FORScrollViewEmptyAssistant/Classes/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Example/Tests/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /Example/FORScrollViewEmptyAssistant/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /Example/FORScrollViewEmptyAssistant/Images.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Kiwi/Kiwi.modulemap: -------------------------------------------------------------------------------- 1 | framework module Kiwi { 2 | umbrella header "Kiwi-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Kiwi/Kiwi-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Kiwi : NSObject 3 | @end 4 | @implementation PodsDummy_Kiwi 5 | @end 6 | -------------------------------------------------------------------------------- /FORScrollViewEmptyAssistant/Assets/blank_button@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZhipingYang/FORScrollViewEmptyAssistant/HEAD/FORScrollViewEmptyAssistant/Assets/blank_button@2x.png -------------------------------------------------------------------------------- /FORScrollViewEmptyAssistant/Assets/blank_button@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZhipingYang/FORScrollViewEmptyAssistant/HEAD/FORScrollViewEmptyAssistant/Assets/blank_button@3x.png -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/MJRefresh/MJRefresh.modulemap: -------------------------------------------------------------------------------- 1 | framework module MJRefresh { 2 | umbrella header "MJRefresh-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/arrow@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZhipingYang/FORScrollViewEmptyAssistant/HEAD/Example/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/arrow@2x.png -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/MJRefresh/MJRefresh-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_MJRefresh : NSObject 3 | @end 4 | @implementation PodsDummy_MJRefresh 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/DZNEmptyDataSet/DZNEmptyDataSet.modulemap: -------------------------------------------------------------------------------- 1 | framework module DZNEmptyDataSet { 2 | umbrella header "DZNEmptyDataSet-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/DZNEmptyDataSet/DZNEmptyDataSet-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_DZNEmptyDataSet : NSObject 3 | @end 4 | @implementation PodsDummy_DZNEmptyDataSet 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/FBSnapshotTestCase/FBSnapshotTestCase.modulemap: -------------------------------------------------------------------------------- 1 | framework module FBSnapshotTestCase { 2 | umbrella header "FBSnapshotTestCase-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Tests/Tests-Prefix.pch: -------------------------------------------------------------------------------- 1 | // The contents of this file are implicitly included at the beginning of every test case source file. 2 | 3 | #ifdef __OBJC__ 4 | 5 | @import Kiwi; 6 | @import FBSnapshotTestCase; 7 | 8 | #endif 9 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/FBSnapshotTestCase/FBSnapshotTestCase-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_FBSnapshotTestCase : NSObject 3 | @end 4 | @implementation PodsDummy_FBSnapshotTestCase 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/FORGestureTrackDisplay/FORGestureTrackDisplay.modulemap: -------------------------------------------------------------------------------- 1 | framework module FORGestureTrackDisplay { 2 | umbrella header "FORGestureTrackDisplay-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/FORScrollViewEmptyAssistant/Images.xcassets/image_empty.imageset/image_empty@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZhipingYang/FORScrollViewEmptyAssistant/HEAD/Example/FORScrollViewEmptyAssistant/Images.xcassets/image_empty.imageset/image_empty@2x.png -------------------------------------------------------------------------------- /Example/FORScrollViewEmptyAssistant/Images.xcassets/image_empty.imageset/image_empty@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZhipingYang/FORScrollViewEmptyAssistant/HEAD/Example/FORScrollViewEmptyAssistant/Images.xcassets/image_empty.imageset/image_empty@3x.png -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/FORGestureTrackDisplay/FORGestureTrackDisplay-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_FORGestureTrackDisplay : NSObject 3 | @end 4 | @implementation PodsDummy_FORGestureTrackDisplay 5 | @end 6 | -------------------------------------------------------------------------------- /Example/FORScrollViewEmptyAssistant/Images.xcassets/blank_button.imageset/blank_button@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZhipingYang/FORScrollViewEmptyAssistant/HEAD/Example/FORScrollViewEmptyAssistant/Images.xcassets/blank_button.imageset/blank_button@2x.png -------------------------------------------------------------------------------- /Example/FORScrollViewEmptyAssistant/Images.xcassets/blank_button.imageset/blank_button@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZhipingYang/FORScrollViewEmptyAssistant/HEAD/Example/FORScrollViewEmptyAssistant/Images.xcassets/blank_button.imageset/blank_button@3x.png -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/FORScrollViewEmptyAssistant/FORScrollViewEmptyAssistant.modulemap: -------------------------------------------------------------------------------- 1 | framework module FORScrollViewEmptyAssistant { 2 | umbrella header "FORScrollViewEmptyAssistant-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/FORScrollViewEmptyAssistant/FORScrollViewEmptyAssistant-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_FORScrollViewEmptyAssistant : NSObject 3 | @end 4 | @implementation PodsDummy_FORScrollViewEmptyAssistant 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Core/KWCaptureSpy.h: -------------------------------------------------------------------------------- 1 | #import "KWMessageSpying.h" 2 | 3 | @interface KWCaptureSpy : NSObject 4 | 5 | @property (nonatomic, strong, readonly) id argument; 6 | 7 | - (id)initWithArgumentIndex:(NSUInteger)index; 8 | 9 | @end 10 | -------------------------------------------------------------------------------- /Example/FORScrollViewEmptyAssistant.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-FORScrollViewEmptyAssistant_Tests/Pods-FORScrollViewEmptyAssistant_Tests.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_FORScrollViewEmptyAssistant_Tests { 2 | umbrella header "Pods-FORScrollViewEmptyAssistant_Tests-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/MJRefresh/MJRefresh-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-FORScrollViewEmptyAssistant_Example/Pods-FORScrollViewEmptyAssistant_Example.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_FORScrollViewEmptyAssistant_Example { 2 | umbrella header "Pods-FORScrollViewEmptyAssistant_Example-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-FORScrollViewEmptyAssistant_Tests/Pods-FORScrollViewEmptyAssistant_Tests-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_FORScrollViewEmptyAssistant_Tests : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_FORScrollViewEmptyAssistant_Tests 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-FORScrollViewEmptyAssistant_Example/Pods-FORScrollViewEmptyAssistant_Example-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_FORScrollViewEmptyAssistant_Example : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_FORScrollViewEmptyAssistant_Example 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/DZNEmptyDataSet/DZNEmptyDataSet-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/FBSnapshotTestCase/FBSnapshotTestCase-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Kiwi/Kiwi-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | #import 14 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/FORGestureTrackDisplay/FORGestureTrackDisplay-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /Example/FORScrollViewEmptyAssistant/FORViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // FORViewController.h 3 | // FORScrollViewEmptyAssistant 4 | // 5 | // Created by XcodeYang on 05/19/2016. 6 | // Copyright (c) 2016 XcodeYang. All rights reserved. 7 | // 8 | 9 | @import UIKit; 10 | 11 | @interface FORViewController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Example/Pods/MJRefresh/MJRefresh/Base/MJRefreshBackFooter.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshBackFooter.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/4/24. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshFooter.h" 10 | 11 | @interface MJRefreshBackFooter : MJRefreshFooter 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/FORScrollViewEmptyAssistant/FORScrollViewEmptyAssistant-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Core/NSValue+KiwiAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KiwiConfiguration.h" 8 | 9 | @interface NSValue(KiwiAdditions) 10 | 11 | #pragma mark - Accessing Data 12 | 13 | - (NSData *)dataValue; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /Example/FORScrollViewEmptyAssistant.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Core/KWCountType.h: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KiwiConfiguration.h" 8 | 9 | enum { 10 | KWCountTypeExact, 11 | KWCountTypeAtLeast, 12 | KWCountTypeAtMost 13 | }; 14 | 15 | typedef NSUInteger KWCountType; 16 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Core/KWProbe.h: -------------------------------------------------------------------------------- 1 | // 2 | // KWProbe.h 3 | // iOSFalconCore 4 | // 5 | // Created by Luke Redpath on 13/01/2011. 6 | // Copyright 2011 LJR Software Limited. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @protocol KWProbe 12 | - (BOOL)isSatisfied; 13 | - (void)sample; 14 | @end 15 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Core/KWDeviceInfo.h: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KiwiConfiguration.h" 8 | 9 | @interface KWDeviceInfo : NSObject 10 | 11 | #pragma mark - Getting the Device Type 12 | 13 | + (BOOL)isSimulator; 14 | + (BOOL)isPhysical; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Matchers/KWBeEmptyMatcher.h: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KiwiConfiguration.h" 8 | #import "KWMatcher.h" 9 | 10 | @interface KWBeEmptyMatcher : KWMatcher 11 | 12 | #pragma mark - Configuring Matchers 13 | 14 | - (void)beEmpty; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Matchers/KWBeZeroMatcher.h: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KiwiConfiguration.h" 8 | #import "KWMatcher.h" 9 | 10 | @interface KWBeZeroMatcher : KWMatcher 11 | 12 | #pragma mark - Configuring Matchers 13 | 14 | - (void)beZero; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Core/KWExpectationType.h: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KiwiConfiguration.h" 8 | 9 | enum { 10 | KWExpectationTypeShould, 11 | KWExpectationTypeShouldNot, 12 | KWExpectationTypeMaybe 13 | }; 14 | 15 | typedef NSUInteger KWExpectationType; 16 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Core/KWReporting.h: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KiwiConfiguration.h" 8 | 9 | @class KWFailure; 10 | 11 | @protocol KWReporting 12 | 13 | #pragma mark - Reporting Failures 14 | 15 | - (void)reportFailure:(KWFailure *)failure; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Matchers/KWEqualMatcher.h: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KiwiConfiguration.h" 8 | #import "KWMatcher.h" 9 | 10 | @interface KWEqualMatcher : KWMatcher 11 | 12 | #pragma mark - Configuring Matchers 13 | 14 | - (void)equal:(id)anObject; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Example/FORScrollViewEmptyAssistant/FORCollectionViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // FORCollectionViewController.h 3 | // FORScrollViewEmptyAssistant_Example 4 | // 5 | // Created by Daniel on 22/03/2018. 6 | // Copyright © 2018 XcodeYang. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface FORCollectionViewController : UICollectionViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Core/KWMessageSpying.h: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KiwiConfiguration.h" 8 | 9 | @protocol KWMessageSpying 10 | 11 | #pragma mark - Spying on Messages 12 | 13 | - (void)object:(id)anObject didReceiveInvocation:(NSInvocation *)anInvocation; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /Example/FORScrollViewEmptyAssistant/FORAppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // FORAppDelegate.h 3 | // FORScrollViewEmptyAssistant 4 | // 5 | // Created by XcodeYang on 05/19/2016. 6 | // Copyright (c) 2016 XcodeYang. All rights reserved. 7 | // 8 | 9 | @import UIKit; 10 | 11 | @interface FORAppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /Example/Podfile: -------------------------------------------------------------------------------- 1 | use_frameworks! 2 | platform :ios, '6.0' 3 | 4 | target 'FORScrollViewEmptyAssistant_Example' do 5 | pod 'FORScrollViewEmptyAssistant', :path => '../' 6 | pod 'MJRefresh', '~> 3.0.7' 7 | pod 'FORGestureTrackDisplay' 8 | 9 | target 'FORScrollViewEmptyAssistant_Tests' do 10 | inherit! :search_paths 11 | 12 | pod 'Kiwi' 13 | pod 'FBSnapshotTestCase' 14 | end 15 | end 16 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Matchers/KWBeIdenticalToMatcher.h: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KiwiConfiguration.h" 8 | #import "KWMatcher.h" 9 | 10 | @interface KWBeIdenticalToMatcher : KWMatcher 11 | 12 | #pragma mark - Configuring Matchers 13 | 14 | - (void)beIdenticalTo:(id)anObject; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Example/Pods/FORGestureTrackDisplay/FORGestureTrackDisplay/FORGestureTrack.h: -------------------------------------------------------------------------------- 1 | // 2 | // FORGestureTrack.h 3 | // FORGestureTrackDisplayDemo 4 | // 5 | // Created by Daniel on 31/05/2017. 6 | // Copyright © 2017 Daniel. All rights reserved. 7 | // 8 | 9 | #import "FORTrackGesture.h" 10 | 11 | @interface UIWindow (tracking) 12 | 13 | - (void)startTracking; 14 | 15 | - (void)endTracking; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Matchers/KWBeKindOfClassMatcher.h: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KiwiConfiguration.h" 8 | #import "KWMatcher.h" 9 | 10 | @interface KWBeKindOfClassMatcher : KWMatcher 11 | 12 | #pragma mark - Configuring Matchers 13 | 14 | - (void)beKindOfClass:(Class)aClass; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Matchers/KWBeMemberOfClassMatcher.h: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KiwiConfiguration.h" 8 | #import "KWMatcher.h" 9 | 10 | @interface KWBeMemberOfClassMatcher : KWMatcher 11 | 12 | #pragma mark - Configuring Matchers 13 | 14 | - (void)beMemberOfClass:(Class)aClass; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Core/KWFormatter.h: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KiwiConfiguration.h" 8 | 9 | @interface KWFormatter : NSObject 10 | 11 | #pragma mark - Getting Descriptions 12 | 13 | + (NSString *)formatObject:(id)anObject; 14 | + (NSString *)formatObjectIncludingClass:(id)anObject; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Matchers/KWBeSubclassOfClassMatcher.h: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KiwiConfiguration.h" 8 | #import "KWMatcher.h" 9 | 10 | @interface KWBeSubclassOfClassMatcher : KWMatcher 11 | 12 | #pragma mark - Configuring Matchers 13 | 14 | - (void)beSubclassOfClass:(Class)aClass; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Matchers/KWRespondToSelectorMatcher.h: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KiwiConfiguration.h" 8 | #import "KWMatcher.h" 9 | 10 | @interface KWRespondToSelectorMatcher : KWMatcher 11 | 12 | #pragma mark - Configuring Matchers 13 | 14 | - (void)respondToSelector:(SEL)aSelector; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Core/NSObject+KiwiVerifierAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KiwiConfiguration.h" 8 | 9 | @protocol KWVerifying; 10 | 11 | @interface NSObject(KiwiVerifierAdditions) 12 | 13 | #pragma mark - Attaching to Verifiers 14 | 15 | - (id)attachToVerifier:(id)aVerifier; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Matchers/KWConformToProtocolMatcher.h: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KiwiConfiguration.h" 8 | #import "KWMatcher.h" 9 | 10 | @interface KWConformToProtocolMatcher : KWMatcher 11 | 12 | #pragma mark - Configuring Matchers 13 | 14 | - (void)conformToProtocol:(Protocol *)aProtocol; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Matchers/KWBeTrueMatcher.h: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KiwiConfiguration.h" 8 | #import "KWMatcher.h" 9 | 10 | @interface KWBeTrueMatcher : KWMatcher 11 | 12 | #pragma mark - Configuring Matchers 13 | 14 | - (void)beTrue; 15 | - (void)beFalse; 16 | - (void)beYes; 17 | - (void)beNo; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Core/KiwiBlockMacros.h: -------------------------------------------------------------------------------- 1 | // 2 | // KiwiBlockMacros.h 3 | // Kiwi 4 | // 5 | // Created by Luke Redpath on 11/07/2011. 6 | // Copyright 2011 Allen Ding. All rights reserved. 7 | // 8 | 9 | // user defined matchers 10 | #define registerMatcher(name) \ 11 | \ 12 | @interface NSObject (KWUserDefinedMatchersDefinitions) \ 13 | - (void)name; \ 14 | @end \ 15 | 16 | #define defineMatcher(...) KWDefineMatchers(__VA_ARGS__) 17 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Matchers/KWGenericMatchEvaluator.h: -------------------------------------------------------------------------------- 1 | // 2 | // KWGenericMatcher.h 3 | // Kiwi 4 | // 5 | // Created by Allen Ding on 1/31/13. 6 | // Copyright (c) 2013 Allen Ding. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface KWGenericMatchEvaluator : NSObject 12 | 13 | + (BOOL)isGenericMatcher:(id)object; 14 | 15 | + (BOOL)genericMatcher:(id)matcher matches:(id)object; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /Example/FORScrollViewEmptyAssistant/FORScrollViewEmptyAssistant-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header 3 | // 4 | // The contents of this file are implicitly included at the beginning of every source file. 5 | // 6 | 7 | #import 8 | 9 | #ifndef __IPHONE_5_0 10 | #warning "This project uses features only available in iOS SDK 5.0 and later." 11 | #endif 12 | 13 | #ifdef __OBJC__ 14 | @import UIKit; 15 | @import Foundation; 16 | #endif 17 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Core/KWAny.h: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KiwiConfiguration.h" 8 | 9 | // KWAny exists to determine arguments in a message pattern that should 10 | // match any value. Used for pointers as well as for scalar values. 11 | @interface KWAny : NSObject 12 | 13 | #pragma mark - Initializing 14 | 15 | + (id)any; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /Example/FORScrollViewEmptyAssistant/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // FORScrollViewEmptyAssistant 4 | // 5 | // Created by XcodeYang on 05/19/2016. 6 | // Copyright (c) 2016 XcodeYang. All rights reserved. 7 | // 8 | 9 | @import UIKit; 10 | #import "FORAppDelegate.h" 11 | 12 | int main(int argc, char * argv[]) 13 | { 14 | @autoreleasepool { 15 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([FORAppDelegate class])); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Core/KWExampleDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // KWExampleGroupDelegate.h 3 | // Kiwi 4 | // 5 | // Created by Luke Redpath on 08/09/2011. 6 | // Copyright 2011 Allen Ding. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class KWExample; 12 | @class KWFailure; 13 | 14 | @protocol KWExampleDelegate 15 | 16 | - (void)example:(KWExample *)example didFailWithFailure:(KWFailure *)failure; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Matchers/KWBeWithinMatcher.h: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KiwiConfiguration.h" 8 | #import "KWMatcher.h" 9 | 10 | @interface KWBeWithinMatcher : KWMatcher 11 | 12 | #pragma mark - Configuring Matchers 13 | 14 | - (void)beWithin:(id)aDistance of:(id)aValue; 15 | - (void)equal:(double)aValue withDelta:(double)aDelta; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Core/NSMethodSignature+KiwiAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KiwiConfiguration.h" 8 | 9 | @interface NSMethodSignature(KiwiAdditions) 10 | 11 | #pragma mark - Getting Information on Message Arguments 12 | 13 | - (NSUInteger)numberOfMessageArguments; 14 | - (const char *)messageArgumentTypeAtIndex:(NSUInteger)anIndex; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Core/KWLet.h: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #if __has_feature(objc_arc) 8 | # define KW_ARC_AUTORELEASE(obj) obj 9 | #else 10 | # define KW_ARC_AUTORELEASE(obj) [obj autorelease] 11 | #endif 12 | 13 | #define KW_LET_REF(var) \ 14 | (__autoreleasing id *) \ 15 | ( (void *(^)(void)) KW_ARC_AUTORELEASE([^{ void *ref = &var; return ref; } copy]) )() 16 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Core/KWSymbolicator.h: -------------------------------------------------------------------------------- 1 | // 2 | // KWSymbolicator.h 3 | // Kiwi 4 | // 5 | // Created by Jerry Marino on 4/28/13. 6 | // Copyright (c) 2013 Allen Ding. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "KWSymbolicator.h" 11 | #import "KWCallSite.h" 12 | 13 | long kwCallerAddress(void); 14 | 15 | @interface KWCallSite (KWSymbolication) 16 | 17 | + (KWCallSite *)callSiteWithCallerAddress:(long)address; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Nodes/KWAfterAllNode.h: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KiwiConfiguration.h" 8 | #import "KWBlockNode.h" 9 | #import "KWExampleNode.h" 10 | 11 | @interface KWAfterAllNode : KWBlockNode 12 | 13 | #pragma mark - Initializing 14 | 15 | + (id)afterAllNodeWithCallSite:(KWCallSite *)aCallSite block:(void (^)(void))block; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Nodes/KWAfterEachNode.h: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KiwiConfiguration.h" 8 | #import "KWBlockNode.h" 9 | #import "KWExampleNode.h" 10 | 11 | @interface KWAfterEachNode : KWBlockNode 12 | 13 | #pragma mark - Initializing 14 | 15 | + (id)afterEachNodeWithCallSite:(KWCallSite *)aCallSite block:(void (^)(void))block; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Nodes/KWBeforeAllNode.h: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KiwiConfiguration.h" 8 | #import "KWBlockNode.h" 9 | #import "KWExampleNode.h" 10 | 11 | @interface KWBeforeAllNode : KWBlockNode 12 | 13 | #pragma mark - Initializing 14 | 15 | + (id)beforeAllNodeWithCallSite:(KWCallSite *)aCallSite block:(void (^)(void))block; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Nodes/KWBeforeEachNode.h: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KiwiConfiguration.h" 8 | #import "KWBlockNode.h" 9 | #import "KWExampleNode.h" 10 | 11 | @interface KWBeforeEachNode : KWBlockNode 12 | 13 | #pragma mark - Initializing 14 | 15 | + (id)beforeEachNodeWithCallSite:(KWCallSite *)aCallSite block:(void (^)(void))block; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /Example/Pods/MJRefresh/MJRefresh/Custom/Footer/Auto/MJRefreshAutoNormalFooter.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshAutoNormalFooter.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/4/24. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshAutoStateFooter.h" 10 | 11 | @interface MJRefreshAutoNormalFooter : MJRefreshAutoStateFooter 12 | /** 菊花的样式 */ 13 | @property (assign, nonatomic) UIActivityIndicatorViewStyle activityIndicatorViewStyle; 14 | @end 15 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Core/KWAny.m: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KWAny.h" 8 | 9 | @implementation KWAny 10 | 11 | #pragma mark - Initializing 12 | 13 | + (id)any { 14 | static KWAny *sharedAny = nil; 15 | static dispatch_once_t onceToken; 16 | dispatch_once(&onceToken, ^{ 17 | sharedAny = [self new]; 18 | 19 | }); 20 | return sharedAny; 21 | } 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/DZNEmptyDataSet/DZNEmptyDataSet-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | #import "UIScrollView+EmptyDataSet.h" 14 | 15 | FOUNDATION_EXPORT double DZNEmptyDataSetVersionNumber; 16 | FOUNDATION_EXPORT const unsigned char DZNEmptyDataSetVersionString[]; 17 | 18 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Shared Examples/KWSharedExampleRegistry.h: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2014 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import 8 | 9 | @class KWSharedExample; 10 | 11 | @interface KWSharedExampleRegistry : NSObject 12 | 13 | + (instancetype)sharedRegistry; 14 | - (KWSharedExample *)sharedExampleForName:(NSString *)name; 15 | - (void)registerSharedExample:(KWSharedExample *)sharedExample; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Core/KWNull.h: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KiwiConfiguration.h" 8 | 9 | // KWNull exists to represent the same thing as NSNull, except that Kiwi needs 10 | // to distinguish between null singletons used internally and those a user 11 | // is using as an object parameter. 12 | @interface KWNull : NSObject 13 | 14 | #pragma mark - Initializing 15 | 16 | + (id)null; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Nodes/KWExampleNode.h: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KiwiConfiguration.h" 8 | 9 | @class KWContextNode; 10 | @protocol KWExampleNodeVisitor; 11 | 12 | @protocol KWExampleNode 13 | 14 | #pragma mark - Accepting Visitors 15 | 16 | - (void)acceptExampleNodeVisitor:(id)aVisitor; 17 | 18 | @optional 19 | 20 | - (NSArray *)contextStack; 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Core/KWNull.m: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KWNull.h" 8 | 9 | @implementation KWNull 10 | 11 | #pragma mark - Initializing 12 | 13 | 14 | + (id)null { 15 | static KWNull *sharedNull = nil; 16 | static dispatch_once_t onceToken; 17 | dispatch_once(&onceToken, ^{ 18 | sharedNull = [self new]; 19 | 20 | }); 21 | 22 | return sharedNull; 23 | } 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Core/NSObject+KiwiVerifierAdditions.m: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "NSObject+KiwiVerifierAdditions.h" 8 | #import "KWVerifying.h" 9 | 10 | @implementation NSObject(KiwiVerifierAdditions) 11 | 12 | #pragma mark - Attaching to Verifiers 13 | 14 | - (id)attachToVerifier:(id)aVerifier { 15 | [aVerifier setSubject:self]; 16 | return aVerifier; 17 | } 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Matchers/KWStringPrefixMatcher.h: -------------------------------------------------------------------------------- 1 | // 2 | // StringPrefixMatcher.h 3 | // Kiwi 4 | // 5 | // Created by Luke Redpath on 17/01/2011. 6 | // Copyright 2011 Allen Ding. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface KWStringPrefixMatcher : NSObject 12 | 13 | + (id)matcherWithPrefix:(NSString *)aPrefix; 14 | - (id)initWithPrefix:(NSString *)aPrefix; 15 | 16 | @end 17 | 18 | #define hasPrefix(prefix) [KWStringPrefixMatcher matcherWithPrefix:prefix] 19 | -------------------------------------------------------------------------------- /Example/FORScrollViewEmptyAssistant/Images.xcassets/blank_button.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "blank_button@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "blank_button@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /Example/FORScrollViewEmptyAssistant/Images.xcassets/image_empty.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "image_empty@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "image_empty@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Matchers/KWInequalityMatcher.h: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KiwiConfiguration.h" 8 | #import "KWMatcher.h" 9 | 10 | @interface KWInequalityMatcher : KWMatcher 11 | 12 | #pragma mark - Configuring Matchers 13 | 14 | - (void)beLessThan:(id)aValue; 15 | - (void)beLessThanOrEqualTo:(id)aValue; 16 | - (void)beGreaterThan:(id)aValue; 17 | - (void)beGreaterThanOrEqualTo:(id)aValue; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /Example/Pods/MJRefresh/MJRefresh/Custom/Header/MJRefreshNormalHeader.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshNormalHeader.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/4/24. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshStateHeader.h" 10 | 11 | @interface MJRefreshNormalHeader : MJRefreshStateHeader 12 | @property (weak, nonatomic, readonly) UIImageView *arrowView; 13 | /** 菊花的样式 */ 14 | @property (assign, nonatomic) UIActivityIndicatorViewStyle activityIndicatorViewStyle; 15 | @end 16 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Core/KWProbePoller.h: -------------------------------------------------------------------------------- 1 | // 2 | // KWProbePoller.h 3 | // iOSFalconCore 4 | // 5 | // Created by Luke Redpath on 13/01/2011. 6 | // Copyright 2011 LJR Software Limited. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "KWProbe.h" 11 | 12 | #define kKW_DEFAULT_PROBE_DELAY 0.1 13 | 14 | @interface KWProbePoller : NSObject 15 | 16 | - (id)initWithTimeout:(NSTimeInterval)theTimeout delay:(NSTimeInterval)theDelay shouldWait:(BOOL)wait; 17 | - (BOOL)check:(id)probe; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Matchers/KWBlockRaiseMatcher.h: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KiwiConfiguration.h" 8 | #import "KWMatcher.h" 9 | 10 | @interface KWBlockRaiseMatcher : KWMatcher 11 | 12 | #pragma mark - Configuring Matchers 13 | 14 | - (void)raise; 15 | - (void)raiseWithName:(NSString *)aName; 16 | - (void)raiseWithReason:(NSString *)aReason; 17 | - (void)raiseWithName:(NSString *)aName reason:(NSString *)aReason; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Matchers/KWRegularExpressionPatternMatcher.h: -------------------------------------------------------------------------------- 1 | // 2 | // KWRegularExpressionPatternMatcher.h 3 | // Kiwi 4 | // 5 | // Created by Kristopher Johnson on 4/11/13. 6 | // Copyright (c) 2013 Allen Ding. All rights reserved. 7 | // 8 | 9 | #import "KiwiConfiguration.h" 10 | #import "KWMatcher.h" 11 | 12 | @interface KWRegularExpressionPatternMatcher : KWMatcher 13 | 14 | - (void)matchPattern:(NSString *)pattern; 15 | 16 | - (void)matchPattern:(NSString *)pattern options:(NSRegularExpressionOptions)options; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Mocking/NSObject+KiwiMockAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KiwiConfiguration.h" 8 | 9 | @protocol KiwiMockAdditions 10 | 11 | #pragma mark - Creating Mocks 12 | 13 | + (id)mock; 14 | + (id)mockWithName:(NSString *)aName; 15 | 16 | + (id)nullMock; 17 | + (id)nullMockWithName:(NSString *)aName; 18 | 19 | @end 20 | 21 | @interface NSObject(KiwiMockAdditions) 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Matchers/KWBeBetweenMatcher.h: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KiwiConfiguration.h" 8 | #import "KWMatcher.h" 9 | 10 | @interface KWBeBetweenMatcher : KWMatcher 11 | 12 | #pragma mark - Configuring Matchers 13 | 14 | // TODO: 'and' below is a reserved word in C++ 15 | - (void)beBetween:(id)aLowerEndpoint and:(id)anUpperEndpoint; 16 | - (void)beInTheIntervalFrom:(id)aLowerEndpoint to:(id)anUpperEndpoint; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /Example/Pods/MJRefresh/MJRefresh/Custom/Footer/Back/MJRefreshBackNormalFooter.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshBackNormalFooter.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/4/24. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshBackStateFooter.h" 10 | 11 | @interface MJRefreshBackNormalFooter : MJRefreshBackStateFooter 12 | @property (weak, nonatomic, readonly) UIImageView *arrowView; 13 | /** 菊花的样式 */ 14 | @property (assign, nonatomic) UIActivityIndicatorViewStyle activityIndicatorViewStyle; 15 | @end 16 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/FORGestureTrackDisplay/FORGestureTrackDisplay-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | #import "FORGestureTrack.h" 14 | #import "FORTrackGesture.h" 15 | 16 | FOUNDATION_EXPORT double FORGestureTrackDisplayVersionNumber; 17 | FOUNDATION_EXPORT const unsigned char FORGestureTrackDisplayVersionString[]; 18 | 19 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-FORScrollViewEmptyAssistant_Tests/Pods-FORScrollViewEmptyAssistant_Tests-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | 14 | FOUNDATION_EXPORT double Pods_FORScrollViewEmptyAssistant_TestsVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char Pods_FORScrollViewEmptyAssistant_TestsVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Core/NSObject+KiwiSpyAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KiwiConfiguration.h" 8 | 9 | @class KWCaptureSpy; 10 | 11 | @protocol KiwiSpyAdditions 12 | 13 | - (KWCaptureSpy *)captureArgument:(SEL)selector atIndex:(NSUInteger)index; 14 | + (KWCaptureSpy *)captureArgument:(SEL)selector atIndex:(NSUInteger)index; 15 | 16 | @end 17 | 18 | @interface NSObject (KiwiSpyAdditions) 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Matchers/KWGenericMatcher.h: -------------------------------------------------------------------------------- 1 | // 2 | // KWGenericMatcher.h 3 | // Kiwi 4 | // 5 | // Created by Luke Redpath on 24/01/2011. 6 | // Copyright 2011 Allen Ding. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "KWMatcher.h" 11 | 12 | @protocol KWGenericMatching 13 | 14 | - (BOOL)matches:(id)object; 15 | 16 | @end 17 | 18 | @interface KWGenericMatcher : KWMatcher 19 | 20 | #pragma mark - Configuring Matchers 21 | 22 | - (void)match:(id)aMatcher; 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-FORScrollViewEmptyAssistant_Example/Pods-FORScrollViewEmptyAssistant_Example-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | 14 | FOUNDATION_EXPORT double Pods_FORScrollViewEmptyAssistant_ExampleVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char Pods_FORScrollViewEmptyAssistant_ExampleVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Core/KWFutureObject.h: -------------------------------------------------------------------------------- 1 | // 2 | // KWFutureObject.h 3 | // iOSFalconCore 4 | // 5 | // Created by Luke Redpath on 13/01/2011. 6 | // Copyright 2011 LJR Software Limited. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | typedef id (^KWFutureObjectBlock)(void); 12 | 13 | @interface KWFutureObject : NSObject 14 | 15 | + (id)objectWithObjectPointer:(id *)pointer; 16 | + (id)futureObjectWithBlock:(KWFutureObjectBlock)block; 17 | - (id)initWithBlock:(KWFutureObjectBlock)aBlock; 18 | - (id)object; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /Example/FORScrollViewEmptyAssistant/FORAppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // FORAppDelegate.m 3 | // FORScrollViewEmptyAssistant 4 | // 5 | // Created by XcodeYang on 05/19/2016. 6 | // Copyright (c) 2016 XcodeYang. All rights reserved. 7 | // 8 | 9 | #import "FORAppDelegate.h" 10 | #import 11 | 12 | @implementation FORAppDelegate 13 | 14 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 15 | { 16 | [self.window startTracking]; 17 | return YES; 18 | } 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Matchers/KWNilMatcher.h: -------------------------------------------------------------------------------- 1 | // 2 | // KWBeNilMatcher.h 3 | // iOSFalconCore 4 | // 5 | // Created by Luke Redpath on 14/01/2011. 6 | // Copyright 2011 LJR Software Limited. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "KWMatcher.h" 11 | 12 | @interface KWNilMatcher : KWMatcher 13 | 14 | - (void)beNil; 15 | - (void)beNonNil; 16 | 17 | - (void)beNil:(BOOL)workaroundArgument; 18 | - (void)beNonNil:(BOOL)workaroundArgument; 19 | 20 | + (BOOL)verifyNilSubject; 21 | + (BOOL)verifyNonNilSubject; 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Verifiers/KWVerifying.h: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KiwiConfiguration.h" 8 | 9 | @class KWCallSite; 10 | 11 | @protocol KWVerifying 12 | 13 | @property (nonatomic, readonly) KWCallSite *callSite; 14 | 15 | - (NSString *)descriptionForAnonymousItNode; 16 | 17 | #pragma mark - Subjects 18 | 19 | @property (nonatomic, strong) id subject; 20 | 21 | #pragma mark - Ending Examples 22 | 23 | - (void)exampleWillEnd; 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/MJRefresh/MJRefresh.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/MJRefresh 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" 4 | PODS_BUILD_DIR = $BUILD_DIR 5 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 6 | PODS_ROOT = ${SRCROOT} 7 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/MJRefresh 8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 9 | SKIP_INSTALL = YES 10 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Core/KWWorkarounds.h: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KiwiConfiguration.h" 8 | 9 | #if KW_TARGET_HAS_INVOCATION_EXCEPTION_BUG 10 | 11 | #pragma mark - Invocation Exception Bug Workaround 12 | 13 | // See KiwiConfiguration.h for notes. 14 | void KWSetExceptionFromAcrossInvocationBoundary(NSException *anException); 15 | NSException *KWGetAndClearExceptionFromAcrossInvocationBoundary(void); 16 | 17 | #endif // #if KW_TARGET_HAS_INVOCATION_EXCEPTION_BUG 18 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Core/NSProxy+KiwiVerifierAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2013 Allen Ding. All rights reserved. 5 | // 6 | // Contributed by https://github.com/dwlnetnl 7 | // 8 | 9 | #import "KiwiConfiguration.h" 10 | 11 | @protocol KWVerifying; 12 | 13 | @interface NSProxy (KiwiVerifierAdditions) 14 | 15 | #pragma mark - Attaching to Verifiers 16 | 17 | - (id)attachToVerifier:(id)aVerifier; 18 | - (id)attachToVerifier:(id)firstVerifier verifier:(id)secondVerifier; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Core/KWBlock.h: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KiwiConfiguration.h" 8 | 9 | @interface KWBlock : NSObject 10 | 11 | #pragma mark - Initializing 12 | - (id)initWithBlock:(void (^)(void))block; 13 | 14 | + (id)blockWithBlock:(void (^)(void))block; 15 | 16 | #pragma mark - Calling Blocks 17 | 18 | - (void)call; 19 | 20 | @end 21 | 22 | #pragma mark - Creating Blocks 23 | 24 | KWBlock *theBlock(void (^block)(void)); 25 | KWBlock *lambda(void (^block)(void)); 26 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Matchers/KWChangeMatcher.h: -------------------------------------------------------------------------------- 1 | // 2 | // KWChangeMatcher.h 3 | // Kiwi 4 | // 5 | // Copyright (c) 2013 Eloy Durán . 6 | // All rights reserved. 7 | // 8 | 9 | #import "KWMatcher.h" 10 | 11 | typedef NSInteger (^KWChangeMatcherCountBlock)(); 12 | 13 | @interface KWChangeMatcher : KWMatcher 14 | 15 | // Expect _any_ change. 16 | - (void)change:(KWChangeMatcherCountBlock)countBlock; 17 | 18 | // Expect changes by a specific amount. 19 | - (void)change:(KWChangeMatcherCountBlock)countBlock by:(NSInteger)expectedDifference; 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/FBSnapshotTestCase/FBSnapshotTestCase-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | #import "FBSnapshotTestCase.h" 14 | #import "FBSnapshotTestCasePlatform.h" 15 | #import "FBSnapshotTestController.h" 16 | 17 | FOUNDATION_EXPORT double FBSnapshotTestCaseVersionNumber; 18 | FOUNDATION_EXPORT const unsigned char FBSnapshotTestCaseVersionString[]; 19 | 20 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/FORScrollViewEmptyAssistant/FORScrollViewEmptyAssistant-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | #import "FOREmptyAssistantConfiger.h" 14 | #import "FORScrollViewEmptyAssistant.h" 15 | 16 | FOUNDATION_EXPORT double FORScrollViewEmptyAssistantVersionNumber; 17 | FOUNDATION_EXPORT const unsigned char FORScrollViewEmptyAssistantVersionString[]; 18 | 19 | -------------------------------------------------------------------------------- /Example/Pods/MJRefresh/MJRefresh/MJRefresh.h: -------------------------------------------------------------------------------- 1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh 2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000 3 | 4 | #import "UIScrollView+MJRefresh.h" 5 | #import "UIScrollView+MJExtension.h" 6 | #import "UIView+MJExtension.h" 7 | 8 | #import "MJRefreshNormalHeader.h" 9 | #import "MJRefreshGifHeader.h" 10 | 11 | #import "MJRefreshBackNormalFooter.h" 12 | #import "MJRefreshBackGifFooter.h" 13 | #import "MJRefreshAutoNormalFooter.h" 14 | #import "MJRefreshAutoGifFooter.h" -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Core/NSMethodSignature+KiwiAdditions.m: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "NSMethodSignature+KiwiAdditions.h" 8 | 9 | @implementation NSMethodSignature(KiwiAdditions) 10 | 11 | #pragma mark - Getting Information on Message Arguments 12 | 13 | - (NSUInteger)numberOfMessageArguments { 14 | return [self numberOfArguments] - 2; 15 | } 16 | 17 | - (const char *)messageArgumentTypeAtIndex:(NSUInteger)anIndex { 18 | return [self getArgumentTypeAtIndex:anIndex + 2]; 19 | } 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Matchers/KWHaveValueMatcher.h: -------------------------------------------------------------------------------- 1 | // 2 | // KWHaveValueMatcher.h 3 | // Kiwi 4 | // 5 | // Created by Luke Redpath on 24/01/2011. 6 | // Copyright 2011 Allen Ding. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "KWMatcher.h" 11 | 12 | @interface KWHaveValueMatcher : KWMatcher 13 | 14 | #pragma mark - Configuring Matchers 15 | 16 | - (void)haveValue:(id)value forKey:(NSString *)key; 17 | - (void)haveValue:(id)value forKeyPath:(NSString *)keyPath; 18 | - (void)haveValueForKey:(NSString *)key; 19 | - (void)haveValueForKeyPath:(NSString *)keyPath; 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /Example/Pods/MJRefresh/MJRefresh/Custom/Footer/Back/MJRefreshBackStateFooter.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshBackStateFooter.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/6/13. 6 | // Copyright © 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshBackFooter.h" 10 | 11 | @interface MJRefreshBackStateFooter : MJRefreshBackFooter 12 | /** 显示刷新状态的label */ 13 | @property (weak, nonatomic, readonly) UILabel *stateLabel; 14 | /** 设置state状态下的文字 */ 15 | - (void)setTitle:(NSString *)title forState:(MJRefreshState)state; 16 | 17 | /** 获取state状态下的title */ 18 | - (NSString *)titleForState:(MJRefreshState)state; 19 | @end 20 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/DZNEmptyDataSet/DZNEmptyDataSet.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/DZNEmptyDataSet 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" 4 | OTHER_LDFLAGS = -framework "UIKit" 5 | PODS_BUILD_DIR = $BUILD_DIR 6 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_ROOT = ${SRCROOT} 8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/DZNEmptyDataSet 9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 10 | SKIP_INSTALL = YES 11 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Core/NSValue+KiwiAdditions.m: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "NSValue+KiwiAdditions.h" 8 | #import "KWObjCUtilities.h" 9 | 10 | @implementation NSValue(KiwiAdditions) 11 | 12 | #pragma mark - Accessing Data 13 | 14 | - (NSData *)dataValue { 15 | NSUInteger length = KWObjCTypeLength([self objCType]); 16 | void *buffer = malloc(length); 17 | [self getValue:buffer]; 18 | NSData *data = [NSData dataWithBytes:buffer length:length]; 19 | free(buffer); 20 | return data; 21 | } 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /Example/Pods/MJRefresh/MJRefresh/Custom/Header/MJRefreshGifHeader.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshGifHeader.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/4/24. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshStateHeader.h" 10 | 11 | @interface MJRefreshGifHeader : MJRefreshStateHeader 12 | @property (weak, nonatomic, readonly) UIImageView *gifView; 13 | 14 | /** 设置state状态下的动画图片images 动画持续时间duration*/ 15 | - (void)setImages:(NSArray *)images duration:(NSTimeInterval)duration forState:(MJRefreshState)state; 16 | - (void)setImages:(NSArray *)images forState:(MJRefreshState)state; 17 | @end 18 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Matchers/KWStringContainsMatcher.h: -------------------------------------------------------------------------------- 1 | // 2 | // KWStringContainsMatcher.h 3 | // Kiwi 4 | // 5 | // Created by Stewart Gleadow on 7/06/12. 6 | // Copyright (c) 2012 Allen Ding. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "KWGenericMatcher.h" 11 | 12 | @interface KWStringContainsMatcher : NSObject 13 | 14 | + (id)matcherWithSubstring:(NSString *)aSubstring DEPRECATED_ATTRIBUTE; 15 | - (id)initWithSubstring:(NSString *)aSubstring DEPRECATED_ATTRIBUTE; 16 | 17 | @end 18 | 19 | #define hasSubstring(substring) [KWStringContainsMatcher matcherWithSubstring:substring] 20 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Core/KWDeviceInfo.m: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KWDeviceInfo.h" 8 | 9 | #if TARGET_IPHONE_SIMULATOR 10 | 11 | #import 12 | 13 | #endif // #if TARGET_IPHONE_SIMULATOR 14 | 15 | @implementation KWDeviceInfo 16 | 17 | #pragma mark - Getting the Device Type 18 | 19 | + (BOOL)isSimulator { 20 | #if TARGET_IPHONE_SIMULATOR 21 | return YES; 22 | #else 23 | return NO; 24 | #endif // #if TARGET_IPHONE_SIMULATOR 25 | } 26 | 27 | + (BOOL)isPhysical { 28 | return ![self isSimulator]; 29 | } 30 | 31 | @end 32 | -------------------------------------------------------------------------------- /Example/Pods/MJRefresh/MJRefresh/Custom/Footer/Auto/MJRefreshAutoGifFooter.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshAutoGifFooter.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/4/24. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshAutoStateFooter.h" 10 | 11 | @interface MJRefreshAutoGifFooter : MJRefreshAutoStateFooter 12 | @property (weak, nonatomic, readonly) UIImageView *gifView; 13 | 14 | /** 设置state状态下的动画图片images 动画持续时间duration*/ 15 | - (void)setImages:(NSArray *)images duration:(NSTimeInterval)duration forState:(MJRefreshState)state; 16 | - (void)setImages:(NSArray *)images forState:(MJRefreshState)state; 17 | @end 18 | -------------------------------------------------------------------------------- /Example/Pods/MJRefresh/MJRefresh/Custom/Footer/Back/MJRefreshBackGifFooter.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshBackGifFooter.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/4/24. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshBackStateFooter.h" 10 | 11 | @interface MJRefreshBackGifFooter : MJRefreshBackStateFooter 12 | @property (weak, nonatomic, readonly) UIImageView *gifView; 13 | 14 | /** 设置state状态下的动画图片images 动画持续时间duration*/ 15 | - (void)setImages:(NSArray *)images duration:(NSTimeInterval)duration forState:(MJRefreshState)state; 16 | - (void)setImages:(NSArray *)images forState:(MJRefreshState)state; 17 | @end 18 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/FORGestureTrackDisplay/FORGestureTrackDisplay.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/FORGestureTrackDisplay 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" 4 | OTHER_LDFLAGS = -framework "UIKit" 5 | PODS_BUILD_DIR = $BUILD_DIR 6 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_ROOT = ${SRCROOT} 8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/FORGestureTrackDisplay 9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 10 | SKIP_INSTALL = YES 11 | -------------------------------------------------------------------------------- /Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIApplication+StrictKeyWindow.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015, Facebook, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the BSD-style license found in the 6 | * LICENSE file in the root directory of this source tree. An additional grant 7 | * of patent rights can be found in the PATENTS file in the same directory. 8 | * 9 | */ 10 | 11 | #import 12 | 13 | @interface UIApplication (StrictKeyWindow) 14 | 15 | /** 16 | @return The receiver's @c keyWindow. Raises an assertion if @c nil. 17 | */ 18 | - (UIWindow *)fb_strictKeyWindow; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Core/KWStringUtilities.h: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KiwiConfiguration.h" 8 | 9 | #pragma mark - Checking for Case Separated Words 10 | 11 | BOOL KWStringHasWordPrefix(NSString *string, NSString *prefix); 12 | BOOL KWStringHasStrictWordPrefix(NSString *string, NSString *prefix); 13 | BOOL KWStringHasWord(NSString *string, NSString *word); 14 | 15 | #pragma mark - Getting Type Encodings 16 | 17 | NSString *KWEncodingWithObjCTypes(const char *firstType, ...) NS_REQUIRES_NIL_TERMINATION; 18 | NSString *KWEncodingForDefaultMethod(void); 19 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Matchers/KWNotificationMatcher.h: -------------------------------------------------------------------------------- 1 | // 2 | // KWNotificationMatcher.h 3 | // 4 | // Created by Paul Zabelin on 7/12/12. 5 | // Copyright (c) 2012 Blazing Cloud, Inc. All rights reserved. 6 | // 7 | 8 | #import "KWMatcher.h" 9 | 10 | typedef void (^PostedNotificationBlock)(NSNotification* note); 11 | 12 | @interface KWNotificationMatcher : KWMatcher 13 | 14 | - (void)bePosted; 15 | - (void)bePostedWithObject:(id)object; 16 | - (void)bePostedWithUserInfo:(NSDictionary *)userInfo; 17 | - (void)bePostedWithObject:(id)object andUserInfo:(NSDictionary *)userInfo; 18 | - (void)bePostedEvaluatingBlock:(PostedNotificationBlock)block; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Matchers/KWContainMatcher.h: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KiwiConfiguration.h" 8 | #import "KWMatcher.h" 9 | #import "KWMatchVerifier.h" 10 | 11 | @interface KWContainMatcher : KWMatcher 12 | 13 | #pragma mark - Configuring Matchers 14 | 15 | - (void)contain:(id)anObject; 16 | - (void)containObjectsInArray:(NSArray *)anArray; 17 | 18 | @end 19 | 20 | @interface KWMatchVerifier(KWContainMatcherAdditions) 21 | 22 | #pragma mark - Verifying 23 | 24 | - (void)containObjects:(id)firstObject, ... NS_REQUIRES_NIL_TERMINATION; 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /Example/Pods/MJRefresh/MJRefresh/Custom/Footer/Auto/MJRefreshAutoStateFooter.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshAutoStateFooter.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/6/13. 6 | // Copyright © 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshAutoFooter.h" 10 | 11 | @interface MJRefreshAutoStateFooter : MJRefreshAutoFooter 12 | /** 显示刷新状态的label */ 13 | @property (weak, nonatomic, readonly) UILabel *stateLabel; 14 | 15 | /** 设置state状态下的文字 */ 16 | - (void)setTitle:(NSString *)title forState:(MJRefreshState)state; 17 | 18 | /** 隐藏刷新状态的文字 */ 19 | @property (assign, nonatomic, getter=isRefreshingTitleHidden) BOOL refreshingTitleHidden; 20 | @end 21 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Kiwi/Kiwi.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/Kiwi 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$(PLATFORM_DIR)/Developer/Library/Frameworks" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" 5 | OTHER_LDFLAGS = -framework "XCTest" 6 | PODS_BUILD_DIR = $BUILD_DIR 7 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_ROOT = ${SRCROOT} 9 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/Kiwi 10 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 11 | SKIP_INSTALL = YES 12 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Nodes/KWAfterAllNode.m: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KWAfterAllNode.h" 8 | #import "KWExampleNodeVisitor.h" 9 | 10 | @implementation KWAfterAllNode 11 | 12 | #pragma mark - Initializing 13 | 14 | + (id)afterAllNodeWithCallSite:(KWCallSite *)aCallSite block:(void (^)(void))block { 15 | return [[self alloc] initWithCallSite:aCallSite description:nil block:block]; 16 | } 17 | 18 | #pragma mark - Accepting Visitors 19 | 20 | - (void)acceptExampleNodeVisitor:(id)aVisitor { 21 | [aVisitor visitAfterAllNode:self]; 22 | } 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Nodes/KWAfterEachNode.m: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KWAfterEachNode.h" 8 | #import "KWExampleNodeVisitor.h" 9 | 10 | @implementation KWAfterEachNode 11 | 12 | #pragma mark - Initializing 13 | 14 | + (id)afterEachNodeWithCallSite:(KWCallSite *)aCallSite block:(void (^)(void))block { 15 | return [[self alloc] initWithCallSite:aCallSite description:nil block:block]; 16 | } 17 | 18 | #pragma mark - Accepting Visitors 19 | 20 | - (void)acceptExampleNodeVisitor:(id)aVisitor { 21 | [aVisitor visitAfterEachNode:self]; 22 | } 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Nodes/KWBeforeAllNode.m: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KWBeforeAllNode.h" 8 | #import "KWExampleNodeVisitor.h" 9 | 10 | @implementation KWBeforeAllNode 11 | 12 | #pragma mark - Initializing 13 | 14 | + (id)beforeAllNodeWithCallSite:(KWCallSite *)aCallSite block:(void (^)(void))block { 15 | return [[self alloc] initWithCallSite:aCallSite description:nil block:block]; 16 | } 17 | 18 | #pragma mark - Accepting Visitors 19 | 20 | - (void)acceptExampleNodeVisitor:(id)aVisitor { 21 | [aVisitor visitBeforeAllNode:self]; 22 | } 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Nodes/KWBeforeEachNode.m: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KWBeforeEachNode.h" 8 | #import "KWExampleNodeVisitor.h" 9 | 10 | @implementation KWBeforeEachNode 11 | 12 | #pragma mark - Initializing 13 | 14 | + (id)beforeEachNodeWithCallSite:(KWCallSite *)aCallSite block:(void (^)(void))block { 15 | return [[self alloc] initWithCallSite:aCallSite description:nil block:block]; 16 | } 17 | 18 | #pragma mark - Accepting Visitors 19 | 20 | - (void)acceptExampleNodeVisitor:(id)aVisitor { 21 | [aVisitor visitBeforeEachNode:self]; 22 | } 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Config/KWSuiteConfigurationBase.h: -------------------------------------------------------------------------------- 1 | // 2 | // KWSuiteConfigurationBase.h 3 | // Kiwi 4 | // 5 | // Created by Adam Sharp on 14/12/2013. 6 | // Copyright (c) 2013 Allen Ding. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface KWSuiteConfigurationBase : NSObject 12 | 13 | + (instancetype)defaultConfiguration; 14 | 15 | - (void)configureSuite; 16 | 17 | - (void)setUp; 18 | - (void)tearDown; 19 | 20 | @property (nonatomic, copy) void (^beforeAllSpecsBlock)(void); 21 | @property (nonatomic, copy) void (^afterAllSpecsBlock)(void); 22 | 23 | @end 24 | 25 | void beforeAllSpecs(void (^block)(void)); 26 | void afterAllSpecs(void (^block)(void)); 27 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Shared Examples/KWSharedExample.h: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2014 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import 8 | 9 | typedef void (^KWSharedExampleBlock)(NSDictionary *data); 10 | 11 | @interface KWSharedExample : NSObject 12 | 13 | @property (nonatomic, copy) NSString *name; 14 | @property (nonatomic, copy) KWSharedExampleBlock block; 15 | 16 | - (id)initWithName:(NSString *)name block:(KWSharedExampleBlock)block; 17 | 18 | @end 19 | 20 | #pragma mark - Building Shared Example Groups 21 | 22 | void sharedExamplesFor(NSString *name, KWSharedExampleBlock block); 23 | void itBehavesLike(NSString *name, NSDictionary *data); 24 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/FORScrollViewEmptyAssistant/FORScrollViewEmptyAssistant.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/FORScrollViewEmptyAssistant 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/DZNEmptyDataSet" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" 5 | OTHER_LDFLAGS = -framework "UIKit" 6 | PODS_BUILD_DIR = $BUILD_DIR 7 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_ROOT = ${SRCROOT} 9 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/../.. 10 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 11 | SKIP_INSTALL = YES 12 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Core/KWCallSite.h: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KiwiConfiguration.h" 8 | 9 | @interface KWCallSite : NSObject 10 | 11 | #pragma mark - Initializing 12 | 13 | - (id)initWithFilename:(NSString *)aFilename lineNumber:(NSUInteger)aLineNumber; 14 | 15 | + (id)callSiteWithFilename:(NSString *)aFilename lineNumber:(NSUInteger)aLineNumber; 16 | 17 | #pragma mark - Properties 18 | 19 | @property (nonatomic, readonly, copy) NSString *filename; 20 | @property (nonatomic, readonly) NSUInteger lineNumber; 21 | 22 | #pragma mark - Identifying and Comparing 23 | 24 | - (BOOL)isEqualToCallSite:(KWCallSite *)aCallSite; 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Nodes/KWBlockNode.m: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KWBlockNode.h" 8 | 9 | @implementation KWBlockNode 10 | 11 | @synthesize description = _description; 12 | 13 | #pragma mark - Initializing 14 | 15 | - (id)initWithCallSite:(KWCallSite *)aCallSite description:(NSString *)aDescription block:(void (^)(void))block { 16 | self = [super init]; 17 | if (self) { 18 | _callSite = aCallSite; 19 | _description = [aDescription copy]; 20 | _block = [block copy]; 21 | } 22 | 23 | return self; 24 | } 25 | 26 | - (void)performBlock { 27 | if (self.block != nil) { self.block(); } 28 | } 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # OS X 2 | .DS_Store 3 | 4 | # Xcode 5 | build/ 6 | *.pbxuser 7 | !default.pbxuser 8 | *.mode1v3 9 | !default.mode1v3 10 | *.mode2v3 11 | !default.mode2v3 12 | *.perspectivev3 13 | !default.perspectivev3 14 | xcuserdata/ 15 | *.xccheckout 16 | profile 17 | *.moved-aside 18 | DerivedData 19 | *.hmap 20 | *.ipa 21 | 22 | # Bundler 23 | .bundle 24 | 25 | Carthage 26 | # We recommend against adding the Pods directory to your .gitignore. However 27 | # you should judge for yourself, the pros and cons are mentioned at: 28 | # http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control 29 | # 30 | # Note: if you ignore the Pods directory, make sure to uncomment 31 | # `pod install` in .travis.yml 32 | # 33 | # Pods/ 34 | -------------------------------------------------------------------------------- /Example/Pods/MJRefresh/MJRefresh/Base/MJRefreshAutoFooter.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshAutoFooter.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/4/24. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshFooter.h" 10 | 11 | @interface MJRefreshAutoFooter : MJRefreshFooter 12 | /** 是否自动刷新(默认为YES) */ 13 | @property (assign, nonatomic, getter=isAutomaticallyRefresh) BOOL automaticallyRefresh; 14 | 15 | /** 当底部控件出现多少时就自动刷新(默认为1.0,也就是底部控件完全出现时,才会自动刷新) */ 16 | @property (assign, nonatomic) CGFloat appearencePercentTriggerAutoRefresh MJRefreshDeprecated("请使用automaticallyChangeAlpha属性"); 17 | 18 | /** 当底部控件出现多少时就自动刷新(默认为1.0,也就是底部控件完全出现时,才会自动刷新) */ 19 | @property (assign, nonatomic) CGFloat triggerAutomaticallyRefreshPercent; 20 | @end 21 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Mocking/NSObject+KiwiMockAdditions.m: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "NSObject+KiwiMockAdditions.h" 8 | #import "KWMock.h" 9 | 10 | @implementation NSObject(KiwiMockAdditions) 11 | 12 | #pragma mark - Creating Mocks 13 | 14 | + (id)mock { 15 | return [KWMock mockForClass:[self class]]; 16 | } 17 | 18 | + (id)mockWithName:(NSString *)aName { 19 | return [KWMock mockWithName:aName forClass:[self class]]; 20 | } 21 | 22 | + (id)nullMock { 23 | return [KWMock nullMockForClass:[self class]]; 24 | } 25 | 26 | + (id)nullMockWithName:(NSString *)aName { 27 | return [KWMock nullMockWithName:aName forClass:[self class]]; 28 | } 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /Example/Pods/MJRefresh/MJRefresh/UIView+MJExtension.h: -------------------------------------------------------------------------------- 1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh 2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000 3 | // UIView+Extension.h 4 | // MJRefreshExample 5 | // 6 | // Created by MJ Lee on 14-5-28. 7 | // Copyright (c) 2014年 小码哥. All rights reserved. 8 | // 9 | 10 | #import 11 | 12 | @interface UIView (MJExtension) 13 | @property (assign, nonatomic) CGFloat mj_x; 14 | @property (assign, nonatomic) CGFloat mj_y; 15 | @property (assign, nonatomic) CGFloat mj_w; 16 | @property (assign, nonatomic) CGFloat mj_h; 17 | @property (assign, nonatomic) CGSize mj_size; 18 | @property (assign, nonatomic) CGPoint mj_origin; 19 | @end 20 | -------------------------------------------------------------------------------- /Example/Tests/Tests-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundlePackageType 14 | BNDL 15 | CFBundleShortVersionString 16 | 1.0 17 | CFBundleSignature 18 | ???? 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Core/NSProxy+KiwiVerifierAdditions.m: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2013 Allen Ding. All rights reserved. 5 | // 6 | // Contributed by https://github.com/dwlnetnl 7 | // 8 | 9 | #import "NSProxy+KiwiVerifierAdditions.h" 10 | #import "KWVerifying.h" 11 | 12 | @implementation NSProxy (KiwiVerifierAdditions) 13 | 14 | #pragma mark - Attaching to Verifiers 15 | 16 | - (id)attachToVerifier:(id)aVerifier { 17 | [aVerifier setSubject:self]; 18 | return aVerifier; 19 | } 20 | 21 | - (id)attachToVerifier:(id)firstVerifier verifier:(id)secondVerifier { 22 | [firstVerifier setSubject:self]; 23 | [secondVerifier setSubject:self]; 24 | return firstVerifier; 25 | } 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Nodes/KWItNode.h: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KiwiConfiguration.h" 8 | #import "KWBlockNode.h" 9 | #import "KWExampleNode.h" 10 | 11 | @class KWPendingNode; 12 | @class KWExample; 13 | @class KWContextNode; 14 | 15 | @interface KWItNode : KWBlockNode 16 | 17 | @property (nonatomic, strong) KWExample *example; 18 | @property (nonatomic, weak, readonly) KWContextNode *context; 19 | 20 | #pragma mark - Initializing 21 | 22 | + (id)itNodeWithCallSite:(KWCallSite *)aCallSite 23 | description:(NSString *)aDescription 24 | context:(KWContextNode *)context 25 | block:(void (^)(void))block; 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /Example/Pods/MJRefresh/MJRefresh/Custom/Header/MJRefreshStateHeader.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshStateHeader.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/4/24. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshHeader.h" 10 | 11 | @interface MJRefreshStateHeader : MJRefreshHeader 12 | #pragma mark - 刷新时间相关 13 | /** 利用这个block来决定显示的更新时间文字 */ 14 | @property (copy, nonatomic) NSString *(^lastUpdatedTimeText)(NSDate *lastUpdatedTime); 15 | /** 显示上一次刷新时间的label */ 16 | @property (weak, nonatomic, readonly) UILabel *lastUpdatedTimeLabel; 17 | 18 | #pragma mark - 状态相关 19 | /** 显示刷新状态的label */ 20 | @property (weak, nonatomic, readonly) UILabel *stateLabel; 21 | /** 设置state状态下的文字 */ 22 | - (void)setTitle:(NSString *)title forState:(MJRefreshState)state; 23 | @end 24 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Core/KWFailure.h: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KiwiConfiguration.h" 8 | 9 | @class KWCallSite; 10 | 11 | @interface KWFailure : NSObject 12 | 13 | #pragma mark - Initializing 14 | 15 | - (id)initWithCallSite:(KWCallSite *)aCallSite message:(NSString *)aMessage; 16 | - (id)initWithCallSite:(KWCallSite *)aCallSite format:(NSString *)format, ...; 17 | 18 | + (id)failureWithCallSite:(KWCallSite *)aCallSite message:(NSString *)aMessage; 19 | + (id)failureWithCallSite:(KWCallSite *)aCallSite format:(NSString *)format, ...; 20 | 21 | #pragma mark - Properties 22 | 23 | @property (nonatomic, readonly) NSString *message; 24 | @property (nonatomic, weak, readonly) KWCallSite *callSite; 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Core/KWWorkarounds.m: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KWWorkarounds.h" 8 | 9 | #if KW_TARGET_HAS_INVOCATION_EXCEPTION_BUG 10 | 11 | static NSException *KWExceptionAcrossInvokeBoundary = nil; 12 | 13 | void KWSetExceptionFromAcrossInvocationBoundary(NSException *anException) { 14 | if (KWExceptionAcrossInvokeBoundary != nil) 15 | return; 16 | 17 | KWExceptionAcrossInvokeBoundary = anException; 18 | } 19 | 20 | NSException *KWGetAndClearExceptionFromAcrossInvocationBoundary(void) { 21 | NSException *exception = KWExceptionAcrossInvokeBoundary; 22 | KWExceptionAcrossInvokeBoundary = nil; 23 | return exception; 24 | } 25 | 26 | #endif // #if KW_TARGET_HAS_INVOCATION_EXCEPTION_BUG 27 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Verifiers/KWExistVerifier.h: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KiwiConfiguration.h" 8 | #import "KWExpectationType.h" 9 | #import "KWVerifying.h" 10 | 11 | @class KWCallSite; 12 | 13 | @protocol KWReporting; 14 | 15 | @interface KWExistVerifier : NSObject 16 | 17 | #pragma mark - Initializing 18 | 19 | - (id)initWithExpectationType:(KWExpectationType)anExpectationType callSite:(KWCallSite *)aCallSite reporter:(id)aReporter; 20 | 21 | + (id)existVerifierWithExpectationType:(KWExpectationType)anExpectationType callSite:(KWCallSite *)aCallSite reporter:(id)aReporter; 22 | 23 | #pragma mark - Properties 24 | 25 | @property (nonatomic, strong) id subject; 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Nodes/KWRegisterMatchersNode.h: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KiwiConfiguration.h" 8 | #import "KWExampleNode.h" 9 | 10 | @class KWCallSite; 11 | 12 | @interface KWRegisterMatchersNode : NSObject 13 | 14 | #pragma mark - Initializing 15 | 16 | - (id)initWithCallSite:(KWCallSite *)aCallSite namespacePrefix:(NSString *)aNamespacePrefix; 17 | 18 | + (id)registerMatchersNodeWithCallSite:(KWCallSite *)aCallSite namespacePrefix:(NSString *)aNamespacePrefix; 19 | 20 | #pragma mark - Getting Call Sites 21 | 22 | @property (nonatomic, readonly) KWCallSite *callSite; 23 | 24 | #pragma mark - Getting Namespace Prefixes 25 | 26 | @property (nonatomic, readonly) NSString *namespacePrefix; 27 | 28 | @end 29 | -------------------------------------------------------------------------------- /FORScrollViewEmptyAssistant/Classes/FORScrollViewEmptyAssistant.h: -------------------------------------------------------------------------------- 1 | // 2 | // FOREmptyView.h 3 | // 51offer 4 | // 5 | // Created by XcodeYang on 12/2/15. 6 | // Copyright © 2015 51offer. All rights reserved. 7 | // 8 | #import 9 | #import "FOREmptyAssistantConfiger.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface UITableView (EmptyAsistant) 14 | 15 | - (void)emptyViewConfigerBlock:(nullable void (^)(FOREmptyAssistantConfiger *configer))configerBlock; 16 | 17 | - (void)emptyViewConfiger:(nullable FOREmptyAssistantConfiger *)configer; 18 | 19 | @end 20 | 21 | @interface UICollectionView (EmptyAsistant) 22 | 23 | - (void)emptyViewConfigerBlock:(nullable void (^)(FOREmptyAssistantConfiger *configer))configerBlock; 24 | 25 | - (void)emptyViewConfiger:(nullable FOREmptyAssistantConfiger *)configer; 26 | 27 | @end 28 | 29 | NS_ASSUME_NONNULL_END 30 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Nodes/KWBlockNode.h: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KiwiConfiguration.h" 8 | #import "KWBlock.h" 9 | 10 | @class KWCallSite; 11 | 12 | @interface KWBlockNode : NSObject 13 | 14 | #pragma mark - Initializing 15 | 16 | - (id)initWithCallSite:(KWCallSite *)aCallSite description:(NSString *)aDescription block:(void (^)(void))block; 17 | 18 | #pragma mark - Getting Call Sites 19 | 20 | @property (nonatomic, strong, readonly) KWCallSite *callSite; 21 | 22 | #pragma mark - Getting Descriptions 23 | 24 | @property (nonatomic, copy) NSString *description; 25 | 26 | #pragma mark - Getting Blocks 27 | 28 | @property (nonatomic, copy, readonly) void (^block)(void); 29 | 30 | #pragma mark - Performing blocks 31 | 32 | - (void)performBlock; 33 | 34 | @end 35 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/FBSnapshotTestCase/FBSnapshotTestCase.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/FBSnapshotTestCase 2 | ENABLE_BITCODE = NO 3 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$(PLATFORM_DIR)/Developer/Library/Frameworks" 4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 5 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" 6 | OTHER_LDFLAGS = -framework "Foundation" -framework "QuartzCore" -framework "UIKit" -framework "XCTest" 7 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 8 | PODS_BUILD_DIR = $BUILD_DIR 9 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 10 | PODS_ROOT = ${SRCROOT} 11 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/FBSnapshotTestCase 12 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 13 | SKIP_INSTALL = YES 14 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Core/KiwiConfiguration.h: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import 8 | 9 | // As of iPhone SDK 4 GM, exceptions thrown across an NSInvocation -invoke or 10 | // forwardInvocation: boundary in the simulator will terminate the app instead 11 | // of being caught in @catch blocks from the caller side of the -invoke. Kiwi 12 | // tries to handle this by storing the first exception that it would have 13 | // otherwise thrown in a nasty global that callers can look for and handle. 14 | // (Buggy termination is less desirable than global variables). 15 | // 16 | // Obviously, this can only handles cases where Kiwi itself would have raised 17 | // an exception. 18 | #if TARGET_IPHONE_SIMULATOR 19 | #define KW_TARGET_HAS_INVOCATION_EXCEPTION_BUG 1 20 | #endif 21 | -------------------------------------------------------------------------------- /Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Snapshot.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015, Facebook, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the BSD-style license found in the 6 | * LICENSE file in the root directory of this source tree. An additional grant 7 | * of patent rights can be found in the PATENTS file in the same directory. 8 | * 9 | */ 10 | 11 | #import 12 | 13 | @interface UIImage (Snapshot) 14 | 15 | /// Uses renderInContext: to get a snapshot of the layer. 16 | + (UIImage *)fb_imageForLayer:(CALayer *)layer; 17 | 18 | /// Uses renderInContext: to get a snapshot of the view layer. 19 | + (UIImage *)fb_imageForViewLayer:(UIView *)view; 20 | 21 | /// Uses drawViewHierarchyInRect: to get a snapshot of the view and adds the view into a window if needed. 22 | + (UIImage *)fb_imageForView:(UIView *)view; 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Core/KWMatcher.h: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KiwiConfiguration.h" 8 | #import "KWMatching.h" 9 | 10 | @interface KWMatcher : NSObject 11 | 12 | #pragma mark - Initializing 13 | 14 | - (id)initWithSubject:(id)anObject; 15 | 16 | + (id)matcherWithSubject:(id)anObject; 17 | 18 | #pragma mark - Properties 19 | 20 | @property (nonatomic, strong) id subject; 21 | 22 | #pragma mark - Getting Matcher Strings 23 | 24 | + (NSArray *)matcherStrings; 25 | 26 | #pragma mark - Getting Matcher Compatability 27 | 28 | + (BOOL)canMatchSubject:(id)anObject; 29 | 30 | #pragma mark - Matching 31 | 32 | - (BOOL)evaluate; 33 | 34 | #pragma mark - Getting Failure Messages 35 | 36 | - (NSString *)failureMessageForShould; 37 | - (NSString *)failureMessageForShouldNot; 38 | 39 | @end 40 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Core/KWFutureObject.m: -------------------------------------------------------------------------------- 1 | // 2 | // KWFutureObject.m 3 | // iOSFalconCore 4 | // 5 | // Created by Luke Redpath on 13/01/2011. 6 | // Copyright 2011 LJR Software Limited. All rights reserved. 7 | // 8 | 9 | #import "KWFutureObject.h" 10 | 11 | @interface KWFutureObject() 12 | 13 | @property (nonatomic, strong) KWFutureObjectBlock block; 14 | 15 | @end 16 | 17 | @implementation KWFutureObject 18 | 19 | + (id)objectWithObjectPointer:(id *)pointer { 20 | return [self futureObjectWithBlock:^{ return *pointer; }]; 21 | } 22 | 23 | + (id)futureObjectWithBlock:(KWFutureObjectBlock)block { 24 | return [[self alloc] initWithBlock:block]; 25 | } 26 | 27 | - (id)initWithBlock:(KWFutureObjectBlock)aBlock { 28 | self = [super init]; 29 | if (self) { 30 | _block = [aBlock copy]; 31 | } 32 | return self; 33 | } 34 | 35 | - (id)object; { 36 | return self.block(); 37 | } 38 | 39 | 40 | @end 41 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Core/KWExampleSuite.h: -------------------------------------------------------------------------------- 1 | // 2 | // KWExampleSuite.h 3 | // Kiwi 4 | // 5 | // Created by Luke Redpath on 17/10/2011. 6 | // Copyright (c) 2011 Allen Ding. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "KWExampleNodeVisitor.h" 11 | 12 | @class KWContextNode; 13 | @class KWExample; 14 | 15 | @interface KWExampleSuite : NSObject 16 | 17 | - (id)initWithRootNode:(KWContextNode *)contextNode; 18 | - (void)addExample:(KWExample *)example; 19 | - (void)markLastExampleAsLastInContext:(KWContextNode *)context; 20 | 21 | @property (nonatomic, readonly) NSMutableArray *examples; 22 | 23 | #pragma mark - Example selector names 24 | 25 | - (NSString *)nextUniqueSelectorName:(NSString *)name; 26 | 27 | @end 28 | 29 | @interface NSInvocation (KWExampleGroup) 30 | @property (nonatomic, setter = kw_setExample:) KWExample *kw_example; 31 | @end 32 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/FORScrollViewEmptyAssistant/ResourceBundle-FORScrollViewEmptyAssistant-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleIdentifier 8 | ${PRODUCT_BUNDLE_IDENTIFIER} 9 | CFBundleInfoDictionaryVersion 10 | 6.0 11 | CFBundleName 12 | ${PRODUCT_NAME} 13 | CFBundlePackageType 14 | BNDL 15 | CFBundleShortVersionString 16 | 1.0.0 17 | CFBundleSignature 18 | ???? 19 | CFBundleVersion 20 | 1 21 | NSPrincipalClass 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /Example/Pods/FORGestureTrackDisplay/FORGestureTrackDisplay/FORTrackGesture.h: -------------------------------------------------------------------------------- 1 | // 2 | // FORTrackGesture.h 3 | // FORGestureTrackDisplayDemo 4 | // 5 | // Created by Daniel on 31/05/2017. 6 | // Copyright © 2017 Daniel. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @protocol FORGestureDelegate 12 | 13 | - (void)forTouchesBegan:(NSSet *)touches; 14 | 15 | - (void)forTouchesMoved:(NSSet *)touches; 16 | 17 | - (void)forTouchesEnded:(NSSet *)touches; 18 | 19 | - (void)forTouchesCancelled:(NSSet *)touches; 20 | 21 | @end 22 | 23 | 24 | 25 | @interface FORTrackGesture : UIGestureRecognizer 26 | 27 | @property (readonly) NSSet *activeTouches; 28 | 29 | @property (nonatomic, weak) NSObject* touchDelegate; 30 | 31 | 32 | - (instancetype) init NS_UNAVAILABLE; 33 | 34 | - (instancetype) initWithTarget:(id)target action:(SEL)action NS_UNAVAILABLE; 35 | 36 | @end 37 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Nodes/KWPendingNode.h: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KiwiConfiguration.h" 8 | #import "KWExampleNode.h" 9 | 10 | @class KWContextNode; 11 | @class KWCallSite; 12 | 13 | @interface KWPendingNode : NSObject 14 | 15 | @property (nonatomic, readonly, strong) KWContextNode *context; 16 | 17 | #pragma mark - Initializing 18 | 19 | - (id)initWithCallSite:(KWCallSite *)aCallSite context:(KWContextNode *)context description:(NSString *)aDescription; 20 | 21 | + (id)pendingNodeWithCallSite:(KWCallSite *)aCallSite context:(KWContextNode *)context description:(NSString *)aDescription; 22 | 23 | #pragma mark - Getting Call Sites 24 | 25 | @property (nonatomic, readonly) KWCallSite *callSite; 26 | 27 | #pragma mark - Getting Descriptions 28 | 29 | @property (readonly, copy) NSString *description; 30 | 31 | @end 32 | -------------------------------------------------------------------------------- /Example/Pods/MJRefresh/MJRefresh/UIScrollView+MJExtension.h: -------------------------------------------------------------------------------- 1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh 2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000 3 | // UIScrollView+Extension.h 4 | // MJRefreshExample 5 | // 6 | // Created by MJ Lee on 14-5-28. 7 | // Copyright (c) 2014年 小码哥. All rights reserved. 8 | // 9 | 10 | #import 11 | 12 | @interface UIScrollView (MJExtension) 13 | @property (assign, nonatomic) CGFloat mj_insetT; 14 | @property (assign, nonatomic) CGFloat mj_insetB; 15 | @property (assign, nonatomic) CGFloat mj_insetL; 16 | @property (assign, nonatomic) CGFloat mj_insetR; 17 | 18 | @property (assign, nonatomic) CGFloat mj_offsetX; 19 | @property (assign, nonatomic) CGFloat mj_offsetY; 20 | 21 | @property (assign, nonatomic) CGFloat mj_contentW; 22 | @property (assign, nonatomic) CGFloat mj_contentH; 23 | @end 24 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Matchers/KWGenericMatchingAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSObject+KiwiAdditions.h 3 | // Kiwi 4 | // 5 | // Created by Luke Redpath on 24/01/2011. 6 | // Copyright 2011 Allen Ding. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSObject (KiwiGenericMatchingAdditions) 12 | 13 | - (BOOL)isEqualOrMatches:(id)object DEPRECATED_ATTRIBUTE; 14 | 15 | @end 16 | 17 | @interface NSArray (KiwiGenericMatchingAdditions) 18 | 19 | - (BOOL)containsObjectEqualToOrMatching:(id)object DEPRECATED_ATTRIBUTE; 20 | - (BOOL)containsObjectMatching:(id)matcher DEPRECATED_ATTRIBUTE; 21 | 22 | @end 23 | 24 | @interface NSSet (KiwiGenericMatchingAdditions) 25 | 26 | - (BOOL)containsObjectEqualToOrMatching:(id)object DEPRECATED_ATTRIBUTE; 27 | 28 | @end 29 | 30 | @interface NSOrderedSet (KiwiGenericMatchingAdditions) 31 | 32 | - (BOOL)containsObjectEqualToOrMatching:(id)object DEPRECATED_ATTRIBUTE; 33 | 34 | @end 35 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Kiwi/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 2.4.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/MJRefresh/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 3.0.8 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Local Podspecs/FORScrollViewEmptyAssistant.podspec.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "FORScrollViewEmptyAssistant", 3 | "version": "1.0.0", 4 | "summary": "Table/Collection的空白页", 5 | "description": "UI列表数据为空的空白页,可以自定义空白页的样式,包括空白图,标题,副标题及按钮四个元素。", 6 | "homepage": "https://github.com/ZhipingYang/FORScrollViewEmptyAssistant", 7 | "license": "MIT", 8 | "authors": { 9 | "XcodeYang": "xcodeyang@gmail.com" 10 | }, 11 | "source": { 12 | "git": "https://github.com/ZhipingYang/FORScrollViewEmptyAssistant.git", 13 | "tag": "1.0.0" 14 | }, 15 | "platforms": { 16 | "ios": "8.0" 17 | }, 18 | "source_files": "FORScrollViewEmptyAssistant/Classes/**/*", 19 | "resource_bundles": { 20 | "FORScrollViewEmptyAssistant": [ 21 | "FORScrollViewEmptyAssistant/Assets/*.png" 22 | ] 23 | }, 24 | "public_header_files": "Pod/Classes/**/*.h", 25 | "frameworks": "UIKit", 26 | "dependencies": { 27 | "DZNEmptyDataSet": [ 28 | 29 | ] 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/DZNEmptyDataSet/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.8.1 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/FBSnapshotTestCase/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 2.1.4 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/FORGestureTrackDisplay/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 0.1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/FORScrollViewEmptyAssistant/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-FORScrollViewEmptyAssistant_Tests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-FORScrollViewEmptyAssistant_Example/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Core/KWMatcherFactory.h: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KiwiConfiguration.h" 8 | #import "KWMatching.h" 9 | 10 | @class KWFailure; 11 | @class KWMatcher; 12 | @class KWUserDefinedMatcherBuilder; 13 | 14 | @interface KWMatcherFactory : NSObject 15 | 16 | #pragma mark - Initializing 17 | 18 | - (id)init; 19 | 20 | #pragma mark - Properties 21 | 22 | @property (nonatomic, readonly) NSArray *registeredMatcherClasses; 23 | 24 | #pragma mark - Registering Matcher Classes 25 | 26 | - (void)registerMatcherClass:(Class)aClass; 27 | - (void)registerMatcherClassesWithNamespacePrefix:(NSString *)aNamespacePrefix; 28 | 29 | #pragma mark - Getting Method Signatures 30 | 31 | - (NSMethodSignature *)methodSignatureForMatcherSelector:(SEL)aSelector; 32 | 33 | #pragma mark - Getting Matchers 34 | 35 | - (KWMatcher *)matcherFromInvocation:(NSInvocation *)anInvocation subject:(id)subject; 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Core/KWMatchers.h: -------------------------------------------------------------------------------- 1 | // 2 | // KWMatchers.h 3 | // Kiwi 4 | // 5 | // Created by Luke Redpath on 17/06/2011. 6 | // Copyright 2011 Allen Ding. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class KWUserDefinedMatcherBuilder; 12 | 13 | typedef void (^KWMatchersBuildingBlock)(KWUserDefinedMatcherBuilder *matcherBuilder); 14 | 15 | @class KWUserDefinedMatcher; 16 | 17 | @interface KWMatchers : NSObject 18 | 19 | + (id)matchers; 20 | 21 | #pragma mark - Defining Matchers 22 | 23 | + (void)defineMatcher:(NSString *)selectorString as:(KWMatchersBuildingBlock)block; 24 | - (void)defineMatcher:(NSString *)selectorString as:(KWMatchersBuildingBlock)block; 25 | - (void)addUserDefinedMatcherBuilder:(KWUserDefinedMatcherBuilder *)builder; 26 | 27 | #pragma mark - Building Matchers 28 | 29 | - (KWUserDefinedMatcher *)matcherForSelector:(SEL)selector subject:(id)subject; 30 | @end 31 | 32 | void KWDefineMatchers(NSString *selectorString, KWMatchersBuildingBlock block); 33 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Core/KWSpec.h: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KiwiConfiguration.h" 8 | #import 9 | #import "KWExpectationType.h" 10 | #import "KWVerifying.h" 11 | #import "KWExampleDelegate.h" 12 | 13 | @class KWCallSite; 14 | 15 | @interface KWSpec : XCTestCase 16 | 17 | #pragma mark - Adding Verifiers 18 | 19 | + (id)addVerifier:(id)aVerifier; 20 | + (id)addExistVerifierWithExpectationType:(KWExpectationType)anExpectationType callSite:(KWCallSite *)aCallSite; 21 | + (id)addMatchVerifierWithExpectationType:(KWExpectationType)anExpectationType callSite:(KWCallSite *)aCallSite; 22 | + (id)addAsyncVerifierWithExpectationType:(KWExpectationType)anExpectationType callSite:(KWCallSite *)aCallSite timeout:(NSTimeInterval)timeout shouldWait:(BOOL)shouldWait; 23 | 24 | #pragma mark - Building Example Groups 25 | 26 | + (NSString *)file; 27 | + (void)buildExampleGroups; 28 | 29 | @end 30 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Matchers/KWStringPrefixMatcher.m: -------------------------------------------------------------------------------- 1 | // 2 | // StringPrefixMatcher.m 3 | // Kiwi 4 | // 5 | // Created by Luke Redpath on 17/01/2011. 6 | // Copyright 2011 Allen Ding. All rights reserved. 7 | // 8 | 9 | #import "KWStringPrefixMatcher.h" 10 | 11 | @interface KWStringPrefixMatcher(){} 12 | @property (nonatomic, copy) NSString *prefix; 13 | @end 14 | 15 | @implementation KWStringPrefixMatcher 16 | 17 | + (id)matcherWithPrefix:(NSString *)aPrefix { 18 | return [[self alloc] initWithPrefix:aPrefix]; 19 | } 20 | 21 | - (id)initWithPrefix:(NSString *)aPrefix { 22 | self = [super init]; 23 | if (self) { 24 | _prefix = [aPrefix copy]; 25 | } 26 | return self; 27 | } 28 | 29 | 30 | - (BOOL)matches:(id)item { 31 | if (![item respondsToSelector:@selector(hasPrefix:)]) 32 | return NO; 33 | 34 | return [item hasPrefix:self.prefix]; 35 | } 36 | 37 | - (NSString *)description { 38 | return [NSString stringWithFormat:@"a string with prefix '%@'", self.prefix]; 39 | } 40 | 41 | @end 42 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Core/KWBlock.m: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KWBlock.h" 8 | 9 | @interface KWBlock() 10 | 11 | #pragma mark - Properties 12 | 13 | @property (nonatomic, readonly, copy) void (^block)(void); 14 | 15 | @end 16 | 17 | @implementation KWBlock 18 | 19 | #pragma mark - Initializing 20 | 21 | - (id)initWithBlock:(void (^)(void))block { 22 | self = [super init]; 23 | if (self) { 24 | _block = [block copy]; 25 | } 26 | 27 | return self; 28 | } 29 | 30 | + (id)blockWithBlock:(void (^)(void))aBlock { 31 | return [[self alloc] initWithBlock:aBlock]; 32 | } 33 | 34 | #pragma mark - Calling Blocks 35 | 36 | - (void)call { 37 | self.block(); 38 | } 39 | 40 | @end 41 | 42 | #pragma mark - Creating Blocks 43 | 44 | KWBlock *theBlock(void (^block)(void)) { 45 | return lambda(block); 46 | } 47 | 48 | KWBlock *lambda(void (^block)(void)) { 49 | return [KWBlock blockWithBlock:block]; 50 | } 51 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Core/NSInvocation+KiwiAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KiwiConfiguration.h" 8 | 9 | @interface NSInvocation(KiwiAdditions) 10 | 11 | #pragma mark - Creating NSInvocation Objects 12 | 13 | + (NSInvocation *)invocationWithTarget:(id)anObject selector:(SEL)aSelector; 14 | + (NSInvocation *)invocationWithTarget:(id)anObject selector:(SEL)aSelector messageArguments:(const void *)firstBytes, ...; 15 | 16 | #pragma mark - Accessing Message Arguments 17 | 18 | // Message arguments are invocation arguments that begin after the target and selector arguments. These methods provide 19 | // convenient ways to access them. 20 | 21 | - (NSData *)messageArgumentDataAtIndex:(NSUInteger)anIndex; 22 | - (void)getMessageArgument:(void *)buffer atIndex:(NSUInteger)anIndex; 23 | - (void)setMessageArgument:(const void *)bytes atIndex:(NSUInteger)anIndex; 24 | - (void)setMessageArguments:(const void *)firstBytes, ...; 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Core/KWMatching.h: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KiwiConfiguration.h" 8 | 9 | @protocol KWMatching 10 | 11 | #pragma mark - Initializing 12 | 13 | - (id)initWithSubject:(id)anObject; 14 | 15 | #pragma mark - Getting Matcher Strings 16 | 17 | + (NSArray *)matcherStrings; 18 | 19 | #pragma mark - Getting Matcher Compatability 20 | 21 | + (BOOL)canMatchSubject:(id)anObject; 22 | 23 | #pragma mark - Matching 24 | 25 | @optional 26 | 27 | - (BOOL)isNilMatcher; 28 | - (BOOL)shouldBeEvaluatedAtEndOfExample; 29 | - (BOOL)willEvaluateMultipleTimes; 30 | - (void)setWillEvaluateMultipleTimes:(BOOL)shouldEvaluateMultipleTimes; 31 | - (void)setWillEvaluateAgainstNegativeExpectation:(BOOL)willEvaluateAgainstNegativeExpectation; 32 | 33 | @required 34 | 35 | - (BOOL)evaluate; 36 | 37 | #pragma mark - Getting Failure Messages 38 | 39 | - (NSString *)failureMessageForShould; 40 | - (NSString *)failureMessageForShouldNot; 41 | 42 | @end 43 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Nodes/KWRegisterMatchersNode.m: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KWRegisterMatchersNode.h" 8 | 9 | #import "KWCallSite.h" 10 | #import "KWExampleNodeVisitor.h" 11 | 12 | @implementation KWRegisterMatchersNode 13 | 14 | #pragma mark - Initializing 15 | 16 | - (id)initWithCallSite:(KWCallSite *)aCallSite namespacePrefix:(NSString *)aNamespacePrefix { 17 | self = [super init]; 18 | if (self) { 19 | _callSite = aCallSite; 20 | _namespacePrefix = [aNamespacePrefix copy]; 21 | } 22 | 23 | return self; 24 | } 25 | 26 | + (id)registerMatchersNodeWithCallSite:(KWCallSite *)aCallSite namespacePrefix:(NSString *)aNamespacePrefix { 27 | return [[self alloc] initWithCallSite:aCallSite namespacePrefix:aNamespacePrefix]; 28 | } 29 | 30 | #pragma mark - Accepting Visitors 31 | 32 | - (void)acceptExampleNodeVisitor:(id)aVisitor { 33 | [aVisitor visitRegisterMatchersNode:self]; 34 | } 35 | 36 | @end 37 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Core/KWExampleNodeVisitor.h: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KiwiConfiguration.h" 8 | 9 | @class KWAfterAllNode; 10 | @class KWAfterEachNode; 11 | @class KWBeforeAllNode; 12 | @class KWBeforeEachNode; 13 | @class KWContextNode; 14 | @class KWLetNode; 15 | @class KWItNode; 16 | @class KWPendingNode; 17 | @class KWRegisterMatchersNode; 18 | 19 | @protocol KWExampleNodeVisitor 20 | 21 | #pragma mark - Visiting Nodes 22 | 23 | @optional 24 | 25 | - (void)visitContextNode:(KWContextNode *)aNode; 26 | - (void)visitRegisterMatchersNode:(KWRegisterMatchersNode *)aNode; 27 | - (void)visitBeforeAllNode:(KWBeforeAllNode *)aNode; 28 | - (void)visitAfterAllNode:(KWAfterAllNode *)aNode; 29 | - (void)visitBeforeEachNode:(KWBeforeEachNode *)aNode; 30 | - (void)visitAfterEachNode:(KWAfterEachNode *)aNode; 31 | - (void)visitLetNode:(KWLetNode *)aNode; 32 | - (void)visitItNode:(KWItNode *)aNode; 33 | - (void)visitPendingNode:(KWPendingNode *)aNode; 34 | 35 | @end 36 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Core/NSObject+KiwiSpyAdditions.m: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "NSObject+KiwiSpyAdditions.h" 8 | 9 | #import "KWCaptureSpy.h" 10 | #import "KWMessagePattern.h" 11 | #import "NSObject+KiwiStubAdditions.h" 12 | 13 | @implementation NSObject (KiwiSpyAdditions) 14 | 15 | - (KWCaptureSpy *)captureArgument:(SEL)selector atIndex:(NSUInteger)index { 16 | KWCaptureSpy *spy = [[KWCaptureSpy alloc] initWithArgumentIndex:index]; 17 | KWMessagePattern *pattern = [[KWMessagePattern alloc] initWithSelector:selector]; 18 | [self addMessageSpy:spy forMessagePattern:pattern]; 19 | return spy; 20 | } 21 | 22 | + (KWCaptureSpy *)captureArgument:(SEL)selector atIndex:(NSUInteger)index { 23 | KWCaptureSpy *spy = [[KWCaptureSpy alloc] initWithArgumentIndex:index]; 24 | KWMessagePattern *pattern = [[KWMessagePattern alloc] initWithSelector:selector]; 25 | [self addMessageSpy:spy forMessagePattern:pattern]; 26 | return spy; 27 | } 28 | 29 | @end 30 | -------------------------------------------------------------------------------- /Example/Pods/MJRefresh/MJRefresh/Base/MJRefreshHeader.h: -------------------------------------------------------------------------------- 1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh 2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000 3 | // MJRefreshHeader.h 4 | // MJRefreshExample 5 | // 6 | // Created by MJ Lee on 15/3/4. 7 | // Copyright (c) 2015年 小码哥. All rights reserved. 8 | // 下拉刷新控件:负责监控用户下拉的状态 9 | 10 | #import "MJRefreshComponent.h" 11 | 12 | @interface MJRefreshHeader : MJRefreshComponent 13 | /** 创建header */ 14 | + (instancetype)headerWithRefreshingBlock:(MJRefreshComponentRefreshingBlock)refreshingBlock; 15 | /** 创建header */ 16 | + (instancetype)headerWithRefreshingTarget:(id)target refreshingAction:(SEL)action; 17 | 18 | /** 这个key用来存储上一次下拉刷新成功的时间 */ 19 | @property (copy, nonatomic) NSString *lastUpdatedTimeKey; 20 | /** 上一次下拉刷新成功的时间 */ 21 | @property (strong, nonatomic, readonly) NSDate *lastUpdatedTime; 22 | 23 | /** 忽略多少scrollView的contentInset的top */ 24 | @property (assign, nonatomic) CGFloat ignoredScrollViewContentInsetTop; 25 | @end 26 | -------------------------------------------------------------------------------- /Example/Pods/MJRefresh/MJRefresh/UIScrollView+MJRefresh.h: -------------------------------------------------------------------------------- 1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh 2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000 3 | // UIScrollView+MJRefresh.h 4 | // MJRefreshExample 5 | // 6 | // Created by MJ Lee on 15/3/4. 7 | // Copyright (c) 2015年 小码哥. All rights reserved. 8 | // 给ScrollView增加下拉刷新、上拉刷新的功能 9 | 10 | #import 11 | #import "MJRefreshConst.h" 12 | 13 | @class MJRefreshHeader, MJRefreshFooter; 14 | 15 | @interface UIScrollView (MJRefresh) 16 | /** 下拉刷新控件 */ 17 | @property (strong, nonatomic) MJRefreshHeader *mj_header; 18 | @property (strong, nonatomic) MJRefreshHeader *header MJRefreshDeprecated("使用mj_header"); 19 | /** 上拉刷新控件 */ 20 | @property (strong, nonatomic) MJRefreshFooter *mj_footer; 21 | @property (strong, nonatomic) MJRefreshFooter *footer MJRefreshDeprecated("使用mj_footer"); 22 | 23 | #pragma mark - other 24 | - (NSInteger)mj_totalDataCount; 25 | @property (copy, nonatomic) void (^mj_reloadDataBlock)(NSInteger totalDataCount); 26 | @end 27 | -------------------------------------------------------------------------------- /Example/Tests/Tests.m: -------------------------------------------------------------------------------- 1 | // 2 | // FORScrollViewEmptyAssistantTests.m 3 | // FORScrollViewEmptyAssistantTests 4 | // 5 | // Created by XcodeYang on 05/19/2016. 6 | // Copyright (c) 2016 XcodeYang. All rights reserved. 7 | // 8 | 9 | // https://github.com/kiwi-bdd/Kiwi 10 | 11 | SPEC_BEGIN(InitialTests) 12 | 13 | describe(@"My initial tests", ^{ 14 | 15 | context(@"will fail", ^{ 16 | 17 | it(@"can do maths", ^{ 18 | [[@1 should] equal:@2]; 19 | }); 20 | 21 | it(@"can read", ^{ 22 | [[@"number" should] equal:@"string"]; 23 | }); 24 | 25 | it(@"will wait and fail", ^{ 26 | NSObject *object = [[NSObject alloc] init]; 27 | [[expectFutureValue(object) shouldEventually] receive:@selector(autoContentAccessingProxy)]; 28 | }); 29 | }); 30 | 31 | context(@"will pass", ^{ 32 | 33 | it(@"can do maths", ^{ 34 | [[@1 should] beLessThan:@23]; 35 | }); 36 | 37 | it(@"can read", ^{ 38 | [[@"team" shouldNot] containString:@"I"]; 39 | }); 40 | }); 41 | 42 | }); 43 | 44 | SPEC_END 45 | 46 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/MJRefresh/MJRefresh-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | #import "MJRefreshAutoFooter.h" 14 | #import "MJRefreshBackFooter.h" 15 | #import "MJRefreshComponent.h" 16 | #import "MJRefreshFooter.h" 17 | #import "MJRefreshHeader.h" 18 | #import "MJRefreshAutoGifFooter.h" 19 | #import "MJRefreshAutoNormalFooter.h" 20 | #import "MJRefreshAutoStateFooter.h" 21 | #import "MJRefreshBackGifFooter.h" 22 | #import "MJRefreshBackNormalFooter.h" 23 | #import "MJRefreshBackStateFooter.h" 24 | #import "MJRefreshGifHeader.h" 25 | #import "MJRefreshNormalHeader.h" 26 | #import "MJRefreshStateHeader.h" 27 | #import "MJRefresh.h" 28 | #import "MJRefreshConst.h" 29 | #import "UIScrollView+MJExtension.h" 30 | #import "UIScrollView+MJRefresh.h" 31 | #import "UIView+MJExtension.h" 32 | 33 | FOUNDATION_EXPORT double MJRefreshVersionNumber; 34 | FOUNDATION_EXPORT const unsigned char MJRefreshVersionString[]; 35 | 36 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Matchers/KWStringContainsMatcher.m: -------------------------------------------------------------------------------- 1 | // 2 | // StringContainsMatcher.m 3 | // Kiwi 4 | // 5 | // Created by Stewart Gleadow on 7/06/12. 6 | // Copyright (c) 2012 Allen Ding. All rights reserved. 7 | // 8 | 9 | #import "KWStringContainsMatcher.h" 10 | 11 | @interface KWStringContainsMatcher(){} 12 | @property (nonatomic, copy) NSString *substring; 13 | @end 14 | 15 | @implementation KWStringContainsMatcher 16 | 17 | + (id)matcherWithSubstring:(NSString *)aSubstring { 18 | return [[self alloc] initWithSubstring:aSubstring]; 19 | } 20 | 21 | - (id)initWithSubstring:(NSString *)aSubstring { 22 | self = [super init]; 23 | if (self) { 24 | _substring = [aSubstring copy]; 25 | } 26 | return self; 27 | } 28 | 29 | 30 | - (BOOL)matches:(id)item { 31 | if (![item respondsToSelector:@selector(rangeOfString:)]) { 32 | return NO; 33 | } 34 | 35 | return [item rangeOfString:self.substring].location != NSNotFound; 36 | } 37 | 38 | - (NSString *)description { 39 | return [NSString stringWithFormat:@"a string with substring '%@'", self.substring]; 40 | } 41 | 42 | @end 43 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2016 XcodeYang 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | # osx_image: xcode8.1 2 | # language: objective-c 3 | # sudo: required 4 | 5 | # cache: 6 | # - bundler 7 | # - cocoapods 8 | 9 | # before_install: 10 | # - bundle install 11 | # - bundle exec danger 12 | 13 | # env: 14 | # global: 15 | # - LANG=en_US.UTF-8 16 | 17 | # - WORKSPACE="Example/FORScrollViewEmptyAssistant.xcworkspace" 18 | # - IOS_SCHEME="FORScrollViewEmptyAssistant_Example" 19 | # - IOS_SDK="iphonesimulator10.0" 20 | 21 | # matrix: 22 | # - DESTINATION="OS=10.1,name=iPhone 7" SDK="$IOS_SDK" SCHEME="$IOS_SCHEME" 23 | 24 | # script: 25 | # - xcodebuild clean build test -scheme "$SCHEME" -workspace "$WORKSPACE" SDK="$IOS_SDK" -destination "$DESTINATION" -configuration Debug GCC_INSTRUMENT_PROGRAM_FLOW_ARCS=YES GCC_GENERATE_TEST_COVERAGE_FILES=YES 26 | language: objective-c 27 | osx_image: xcode8.0 28 | podfile: Example/Podfile 29 | # before_install: 30 | # - gem install cocoapods --no-rdoc --no-ri --no-document --quiet 31 | # - pod install 32 | before_script: 33 | - export LANG=en_US.UTF-8 34 | xcode_workspace: Example/FORScrollViewEmptyAssistant.xcworkspace 35 | 36 | -------------------------------------------------------------------------------- /Example/Pods/DZNEmptyDataSet/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 Ignacio Romero Zurbuchen iromero@dzen.cl 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 6 | 7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 8 | 9 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 10 | -------------------------------------------------------------------------------- /Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIApplication+StrictKeyWindow.m: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015, Facebook, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the BSD-style license found in the 6 | * LICENSE file in the root directory of this source tree. An additional grant 7 | * of patent rights can be found in the PATENTS file in the same directory. 8 | * 9 | */ 10 | 11 | #import 12 | 13 | @implementation UIApplication (StrictKeyWindow) 14 | 15 | - (UIWindow *)fb_strictKeyWindow 16 | { 17 | UIWindow *keyWindow = [UIApplication sharedApplication].keyWindow; 18 | if (!keyWindow) { 19 | [NSException raise:@"FBSnapshotTestCaseNilKeyWindowException" 20 | format:@"Snapshot tests must be hosted by an application with a key window. Please ensure your test" 21 | " host sets up a key window at launch (either via storyboards or programmatically) and doesn't" 22 | " do anything to remove it while snapshot tests are running."]; 23 | } 24 | return keyWindow; 25 | } 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Matchers/KWGenericMatcher.m: -------------------------------------------------------------------------------- 1 | // 2 | // KWGenericMatcher.m 3 | // Kiwi 4 | // 5 | // Created by Luke Redpath on 24/01/2011. 6 | // Copyright 2011 Allen Ding. All rights reserved. 7 | // 8 | 9 | #import "KWGenericMatcher.h" 10 | #import "KWGenericMatchEvaluator.h" 11 | 12 | @interface KWGenericMatcher () 13 | 14 | @property (nonatomic, strong) id matcher; 15 | 16 | @end 17 | 18 | @implementation KWGenericMatcher 19 | 20 | #pragma mark - Matching 21 | 22 | - (BOOL)evaluate { 23 | return [KWGenericMatchEvaluator genericMatcher:self.matcher matches:self.subject]; 24 | } 25 | 26 | - (NSString *)failureMessageForShould { 27 | return [NSString stringWithFormat:@"expected subject to match %@", self.matcher]; 28 | } 29 | 30 | - (NSString *)description 31 | { 32 | return [NSString stringWithFormat:@"match %@", [self.matcher description]]; 33 | } 34 | 35 | #pragma mark - Getting Matcher Strings 36 | 37 | + (NSArray *)matcherStrings { 38 | return @[@"match:"]; 39 | } 40 | 41 | #pragma mark - Configuring Matchers 42 | 43 | - (void)match:(id)aMatcher; 44 | { 45 | self.matcher = aMatcher; 46 | } 47 | 48 | @end 49 | -------------------------------------------------------------------------------- /Example/Pods/FORGestureTrackDisplay/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 Zhiping Yang 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Core/KWInvocationCapturer.h: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KiwiConfiguration.h" 8 | 9 | @protocol KWInvocationCapturerDelegate; 10 | 11 | @interface KWInvocationCapturer : NSProxy 12 | 13 | #pragma mark - Initializing 14 | 15 | - (id)initWithDelegate:(id)aDelegate; 16 | - (id)initWithDelegate:(id)aDelegate userInfo:(NSDictionary *)aUserInfo; 17 | 18 | + (id)invocationCapturerWithDelegate:(id)aDelegate; 19 | + (id)invocationCapturerWithDelegate:(id)aDelegate userInfo:(NSDictionary *)aUserInfo; 20 | 21 | #pragma mark - Properties 22 | 23 | @property (nonatomic, weak, readonly) id delegate; 24 | @property (nonatomic, strong, readonly) NSDictionary *userInfo; 25 | 26 | @end 27 | 28 | @protocol KWInvocationCapturerDelegate 29 | 30 | #pragma mark - Capturing Invocations 31 | 32 | - (NSMethodSignature *)invocationCapturer:(KWInvocationCapturer *)anInvocationCapturer methodSignatureForSelector:(SEL)aSelector; 33 | - (void)invocationCapturer:(KWInvocationCapturer *)anInvocationCapturer didCaptureInvocation:(NSInvocation *)anInvocation; 34 | 35 | @end 36 | -------------------------------------------------------------------------------- /Example/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - DZNEmptyDataSet (1.8.1) 3 | - FBSnapshotTestCase (2.1.4): 4 | - FBSnapshotTestCase/SwiftSupport (= 2.1.4) 5 | - FBSnapshotTestCase/Core (2.1.4) 6 | - FBSnapshotTestCase/SwiftSupport (2.1.4): 7 | - FBSnapshotTestCase/Core 8 | - FORGestureTrackDisplay (0.1.0) 9 | - FORScrollViewEmptyAssistant (1.0.0): 10 | - DZNEmptyDataSet 11 | - Kiwi (2.4.0) 12 | - MJRefresh (3.0.8) 13 | 14 | DEPENDENCIES: 15 | - FBSnapshotTestCase 16 | - FORGestureTrackDisplay 17 | - FORScrollViewEmptyAssistant (from `../`) 18 | - Kiwi 19 | - MJRefresh (~> 3.0.7) 20 | 21 | EXTERNAL SOURCES: 22 | FORScrollViewEmptyAssistant: 23 | :path: ../ 24 | 25 | SPEC CHECKSUMS: 26 | DZNEmptyDataSet: 9525833b9e68ac21c30253e1d3d7076cc828eaa7 27 | FBSnapshotTestCase: 094f9f314decbabe373b87cc339bea235a63e07a 28 | FORGestureTrackDisplay: a0c14d65cbe49ee54dbc1ca15cfd14d905e0cf79 29 | FORScrollViewEmptyAssistant: 37ec00e959a1ff44fce8f827aaa1fcbb5722f284 30 | Kiwi: f49c9d54b28917df5928fe44968a39ed198cb8a8 31 | MJRefresh: fafde8f18f4afd66b434331a9beb67a6c0264056 32 | 33 | PODFILE CHECKSUM: 294d902f35f53f1c8948c5aecb4ee9731cfd9f11 34 | 35 | COCOAPODS: 1.2.1 36 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Verifiers/KWAsyncVerifier.h: -------------------------------------------------------------------------------- 1 | // 2 | // KWAsyncVerifier.h 3 | // iOSFalconCore 4 | // 5 | // Created by Luke Redpath on 13/01/2011. 6 | // Copyright 2011 LJR Software Limited. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "KWMatchVerifier.h" 11 | #import "KWProbe.h" 12 | 13 | #define kKW_DEFAULT_PROBE_TIMEOUT 1.0 14 | 15 | @class KWAsyncMatcherProbe; 16 | 17 | @interface KWAsyncVerifier : KWMatchVerifier 18 | 19 | @property (nonatomic, assign) NSTimeInterval timeout; 20 | @property (nonatomic, assign) BOOL shouldWait; 21 | 22 | + (id)asyncVerifierWithExpectationType:(KWExpectationType)anExpectationType callSite:(KWCallSite *)aCallSite matcherFactory:(KWMatcherFactory *)aMatcherFactory reporter:(id)aReporter probeTimeout:(NSTimeInterval)probeTimeout shouldWait:(BOOL)shouldWait; 23 | - (void)verifyWithProbe:(KWAsyncMatcherProbe *)aProbe; 24 | 25 | @end 26 | 27 | 28 | @interface KWAsyncMatcherProbe : NSObject 29 | 30 | @property (nonatomic, assign) BOOL matchResult; 31 | @property (nonatomic, readonly) id matcher; 32 | 33 | - (id)initWithMatcher:(id)aMatcher; 34 | 35 | @end 36 | -------------------------------------------------------------------------------- /Example/Pods/MJRefresh/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2013-2015 MJRefresh (https://github.com/CoderMJLee/MJRefresh) 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /Example/Pods/Manifest.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - DZNEmptyDataSet (1.8.1) 3 | - FBSnapshotTestCase (2.1.4): 4 | - FBSnapshotTestCase/SwiftSupport (= 2.1.4) 5 | - FBSnapshotTestCase/Core (2.1.4) 6 | - FBSnapshotTestCase/SwiftSupport (2.1.4): 7 | - FBSnapshotTestCase/Core 8 | - FORGestureTrackDisplay (0.1.0) 9 | - FORScrollViewEmptyAssistant (1.0.0): 10 | - DZNEmptyDataSet 11 | - Kiwi (2.4.0) 12 | - MJRefresh (3.0.8) 13 | 14 | DEPENDENCIES: 15 | - FBSnapshotTestCase 16 | - FORGestureTrackDisplay 17 | - FORScrollViewEmptyAssistant (from `../`) 18 | - Kiwi 19 | - MJRefresh (~> 3.0.7) 20 | 21 | EXTERNAL SOURCES: 22 | FORScrollViewEmptyAssistant: 23 | :path: ../ 24 | 25 | SPEC CHECKSUMS: 26 | DZNEmptyDataSet: 9525833b9e68ac21c30253e1d3d7076cc828eaa7 27 | FBSnapshotTestCase: 094f9f314decbabe373b87cc339bea235a63e07a 28 | FORGestureTrackDisplay: a0c14d65cbe49ee54dbc1ca15cfd14d905e0cf79 29 | FORScrollViewEmptyAssistant: 37ec00e959a1ff44fce8f827aaa1fcbb5722f284 30 | Kiwi: f49c9d54b28917df5928fe44968a39ed198cb8a8 31 | MJRefresh: fafde8f18f4afd66b434331a9beb67a6c0264056 32 | 33 | PODFILE CHECKSUM: 294d902f35f53f1c8948c5aecb4ee9731cfd9f11 34 | 35 | COCOAPODS: 1.2.1 36 | -------------------------------------------------------------------------------- /Example/Pods/MJRefresh/MJRefresh/Base/MJRefreshFooter.h: -------------------------------------------------------------------------------- 1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh 2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000 3 | // MJRefreshFooter.h 4 | // MJRefreshExample 5 | // 6 | // Created by MJ Lee on 15/3/5. 7 | // Copyright (c) 2015年 小码哥. All rights reserved. 8 | // 上拉刷新控件 9 | 10 | #import "MJRefreshComponent.h" 11 | 12 | @interface MJRefreshFooter : MJRefreshComponent 13 | /** 创建footer */ 14 | + (instancetype)footerWithRefreshingBlock:(MJRefreshComponentRefreshingBlock)refreshingBlock; 15 | /** 创建footer */ 16 | + (instancetype)footerWithRefreshingTarget:(id)target refreshingAction:(SEL)action; 17 | 18 | /** 提示没有更多的数据 */ 19 | - (void)endRefreshingWithNoMoreData; 20 | - (void)noticeNoMoreData MJRefreshDeprecated("使用endRefreshingWithNoMoreData"); 21 | 22 | /** 重置没有更多的数据(消除没有更多数据的状态) */ 23 | - (void)resetNoMoreData; 24 | 25 | /** 忽略多少scrollView的contentInset的bottom */ 26 | @property (assign, nonatomic) CGFloat ignoredScrollViewContentInsetBottom; 27 | 28 | /** 自动根据有无数据来显示和隐藏(有数据就显示,没有数据隐藏) */ 29 | @property (assign, nonatomic, getter=isAutomaticallyHidden) BOOL automaticallyHidden; 30 | @end 31 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Core/KWBackgroundTask.h: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import 8 | 9 | // Used to suppress compiler warnings by 10 | // casting receivers to this protocol 11 | @protocol NSTask_KWWarningSuppressor 12 | 13 | - (void)setLaunchPath:(NSString *)path; 14 | - (void)setArguments:(NSArray *)arguments; 15 | - (void)setEnvironment:(NSDictionary *)dict; 16 | - (void)setStandardOutput:(id)output; 17 | - (void)setStandardError:(id)output; 18 | - (void)launch; 19 | - (void)waitUntilExit; 20 | 21 | @property (readonly) int terminationStatus; 22 | 23 | @end 24 | 25 | @interface KWBackgroundTask : NSObject 26 | 27 | @property (nonatomic, readonly) id task; 28 | @property (nonatomic, readonly) NSPipe *standardOutput; 29 | @property (nonatomic, readonly) NSPipe *standardError; 30 | @property (nonatomic, readonly) NSString *command; 31 | @property (nonatomic, readonly) NSArray *arguments; 32 | @property (nonatomic, readonly) NSData *output; 33 | 34 | - (instancetype)initWithCommand:(NSString *)command arguments:(NSArray *)arguments; 35 | 36 | - (void)launchAndWaitForExit; 37 | 38 | @end 39 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Core/KWObjCUtilities.h: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KiwiConfiguration.h" 8 | 9 | #pragma mark - Objective-C Type Utilities 10 | 11 | BOOL KWObjCTypeEqualToObjCType(const char *firstObjCType, const char *secondObjCType); 12 | BOOL KWObjCTypeIsNumeric(const char *objCType); 13 | BOOL KWObjCTypeIsFloatingPoint(const char *objCType); 14 | BOOL KWObjCTypeIsIntegral(const char *objCType); 15 | BOOL KWObjCTypeIsSignedIntegral(const char *objCType); 16 | BOOL KWObjCTypeIsUnsignedIntegral(const char *objCType); 17 | BOOL KWObjCTypeIsBoolean(const char *objCType); 18 | BOOL KWObjCTypeIsObject(const char *objCType); 19 | BOOL KWObjCTypeIsCharString(const char *objCType); 20 | BOOL KWObjCTypeIsClass(const char *objCType); 21 | BOOL KWObjCTypeIsSelector(const char *objCType); 22 | BOOL KWObjCTypeIsPointerToType(const char *objCType); 23 | BOOL KWObjCTypeIsPointerLike(const char *objCType); 24 | BOOL KWObjCTypeIsUnknown(const char *objCType); 25 | BOOL KWObjCTypeIsBlock(const char *objCType); 26 | 27 | NSUInteger KWObjCTypeLength(const char *objCType); 28 | 29 | #pragma mark - Selector Utlities 30 | 31 | NSUInteger KWSelectorParameterCount(SEL selector); 32 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Core/NSNumber+KiwiAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KiwiConfiguration.h" 8 | 9 | @interface NSNumber(KiwiAdditions) 10 | 11 | #pragma mark - Creating Numbers 12 | 13 | + (id)numberWithBytes:(const void *)bytes objCType:(const char *)anObjCType; 14 | + (id)numberWithBoolBytes:(const void *)bytes; 15 | + (id)numberWithStdBoolBytes:(const void *)bytes; 16 | + (id)numberWithCharBytes:(const void *)bytes; 17 | + (id)numberWithDoubleBytes:(const void *)bytes; 18 | + (id)numberWithFloatBytes:(const void *)bytes; 19 | + (id)numberWithIntBytes:(const void *)bytes; 20 | + (id)numberWithIntegerBytes:(const void *)bytes; 21 | + (id)numberWithLongBytes:(const void *)bytes; 22 | + (id)numberWithLongLongBytes:(const void *)bytes; 23 | + (id)numberWithShortBytes:(const void *)bytes; 24 | + (id)numberWithUnsignedCharBytes:(const void *)bytes; 25 | + (id)numberWithUnsignedIntBytes:(const void *)bytes; 26 | + (id)numberWithUnsignedIntegerBytes:(const void *)bytes; 27 | + (id)numberWithUnsignedLongBytes:(const void *)bytes; 28 | + (id)numberWithUnsignedLongLongBytes:(const void *)bytes; 29 | + (id)numberWithUnsignedShortBytes:(const void *)bytes; 30 | 31 | @end 32 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Core/KWCallSite.m: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KWCallSite.h" 8 | 9 | @implementation KWCallSite 10 | 11 | #pragma mark - Initializing 12 | 13 | - (id)initWithFilename:(NSString *)aFilename lineNumber:(NSUInteger)aLineNumber { 14 | self = [super init]; 15 | if (self) { 16 | _filename = [aFilename copy]; 17 | _lineNumber = aLineNumber; 18 | } 19 | 20 | return self; 21 | } 22 | 23 | + (id)callSiteWithFilename:(NSString *)aFilename lineNumber:(NSUInteger)aLineNumber { 24 | return [[self alloc] initWithFilename:aFilename lineNumber:aLineNumber]; 25 | } 26 | 27 | #pragma mark - Identifying and Comparing 28 | 29 | - (NSUInteger)hash { 30 | return [[NSString stringWithFormat:@"%@%u", self.filename, (unsigned)self.lineNumber] hash]; 31 | } 32 | 33 | - (BOOL)isEqual:(id)anObject { 34 | if (![anObject isKindOfClass:[KWCallSite class]]) 35 | return NO; 36 | 37 | return [self isEqualToCallSite:anObject]; 38 | } 39 | 40 | - (BOOL)isEqualToCallSite:(KWCallSite *)aCallSite { 41 | return [self.filename isEqualToString:aCallSite.filename] && (self.lineNumber == aCallSite.lineNumber); 42 | } 43 | 44 | @end 45 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-FORScrollViewEmptyAssistant_Example/Pods-FORScrollViewEmptyAssistant_Example.debug.xcconfig: -------------------------------------------------------------------------------- 1 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/DZNEmptyDataSet" "$PODS_CONFIGURATION_BUILD_DIR/FORGestureTrackDisplay" "$PODS_CONFIGURATION_BUILD_DIR/FORScrollViewEmptyAssistant" "$PODS_CONFIGURATION_BUILD_DIR/MJRefresh" 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 4 | OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/DZNEmptyDataSet/DZNEmptyDataSet.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/FORGestureTrackDisplay/FORGestureTrackDisplay.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/FORScrollViewEmptyAssistant/FORScrollViewEmptyAssistant.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/MJRefresh/MJRefresh.framework/Headers" 5 | OTHER_LDFLAGS = $(inherited) -framework "DZNEmptyDataSet" -framework "FORGestureTrackDisplay" -framework "FORScrollViewEmptyAssistant" -framework "MJRefresh" 6 | PODS_BUILD_DIR = $BUILD_DIR 7 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 9 | PODS_ROOT = ${SRCROOT}/Pods 10 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-FORScrollViewEmptyAssistant_Example/Pods-FORScrollViewEmptyAssistant_Example.release.xcconfig: -------------------------------------------------------------------------------- 1 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/DZNEmptyDataSet" "$PODS_CONFIGURATION_BUILD_DIR/FORGestureTrackDisplay" "$PODS_CONFIGURATION_BUILD_DIR/FORScrollViewEmptyAssistant" "$PODS_CONFIGURATION_BUILD_DIR/MJRefresh" 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 4 | OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/DZNEmptyDataSet/DZNEmptyDataSet.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/FORGestureTrackDisplay/FORGestureTrackDisplay.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/FORScrollViewEmptyAssistant/FORScrollViewEmptyAssistant.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/MJRefresh/MJRefresh.framework/Headers" 5 | OTHER_LDFLAGS = $(inherited) -framework "DZNEmptyDataSet" -framework "FORGestureTrackDisplay" -framework "FORScrollViewEmptyAssistant" -framework "MJRefresh" 6 | PODS_BUILD_DIR = $BUILD_DIR 7 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 9 | PODS_ROOT = ${SRCROOT}/Pods 10 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Core/KWMessageTracker.h: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KiwiConfiguration.h" 8 | #import "KWCountType.h" 9 | #import "KWMessageSpying.h" 10 | 11 | @class KWMessagePattern; 12 | 13 | @interface KWMessageTracker : NSObject 14 | 15 | #pragma mark - Initializing 16 | 17 | - (id)initWithSubject:(id)anObject messagePattern:(KWMessagePattern *)aMessagePattern countType:(KWCountType)aCountType count:(NSUInteger)aCount; 18 | 19 | + (id)messageTrackerWithSubject:(id)anObject messagePattern:(KWMessagePattern *)aMessagePattern countType:(KWCountType)aCountType count:(NSUInteger)aCount; 20 | 21 | #pragma mark - Properties 22 | 23 | @property (nonatomic, readonly) id subject; 24 | @property (nonatomic, readonly) KWMessagePattern *messagePattern; 25 | @property (nonatomic, readonly) KWCountType countType; 26 | @property (nonatomic, readonly) NSUInteger count; 27 | 28 | #pragma mark - Stopping Tracking 29 | 30 | - (void)stopTracking; 31 | 32 | #pragma mark - Getting Message Tracker Status 33 | 34 | - (BOOL)succeeded; 35 | 36 | #pragma mark - Getting Phrases 37 | 38 | - (NSString *)expectedCountPhrase; 39 | - (NSString *)receivedCountPhrase; 40 | 41 | @end 42 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Matchers/KWConformToProtocolMatcher.m: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KWConformToProtocolMatcher.h" 8 | #import "KWFormatter.h" 9 | 10 | @interface KWConformToProtocolMatcher() 11 | 12 | @property (nonatomic, assign) Protocol *protocol; 13 | 14 | @end 15 | 16 | @implementation KWConformToProtocolMatcher 17 | 18 | #pragma mark - Getting Matcher Strings 19 | 20 | + (NSArray *)matcherStrings { 21 | return @[@"conformToProtocol:"]; 22 | } 23 | 24 | #pragma mark - Matching 25 | 26 | - (BOOL)evaluate { 27 | return [self.subject conformsToProtocol:self.protocol]; 28 | } 29 | 30 | #pragma mark - Getting Failure Messages 31 | 32 | - (NSString *)failureMessageForShould { 33 | return [NSString stringWithFormat:@"expected subject to conform to %@ protocol", 34 | NSStringFromProtocol(self.protocol)]; 35 | } 36 | 37 | - (NSString *)description { 38 | return [NSString stringWithFormat:@"conform to %@ protocol", NSStringFromProtocol(self.protocol)]; 39 | } 40 | 41 | #pragma mark - Configuring Matchers 42 | 43 | - (void)conformToProtocol:(Protocol *)aProtocol { 44 | self.protocol = aProtocol; 45 | } 46 | 47 | @end 48 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Matchers/KWRespondToSelectorMatcher.m: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KWRespondToSelectorMatcher.h" 8 | #import "KWFormatter.h" 9 | 10 | @interface KWRespondToSelectorMatcher() 11 | 12 | #pragma mark - Properties 13 | 14 | @property (nonatomic, assign) SEL selector; 15 | 16 | @end 17 | 18 | @implementation KWRespondToSelectorMatcher 19 | 20 | #pragma mark - Getting Matcher Strings 21 | 22 | + (NSArray *)matcherStrings { 23 | return @[@"respondToSelector:"]; 24 | } 25 | 26 | #pragma mark - Matching 27 | 28 | - (BOOL)evaluate { 29 | return [self.subject respondsToSelector:self.selector]; 30 | } 31 | 32 | #pragma mark - Getting Failure Messages 33 | 34 | - (NSString *)failureMessageForShould { 35 | return [NSString stringWithFormat:@"expected subject to respond to -%@", 36 | NSStringFromSelector(self.selector)]; 37 | } 38 | 39 | - (NSString *)description { 40 | return [NSString stringWithFormat:@"respond to -%@", NSStringFromSelector(self.selector)]; 41 | } 42 | 43 | #pragma mark - Configuring Matchers 44 | 45 | - (void)respondToSelector:(SEL)aSelector { 46 | self.selector = aSelector; 47 | } 48 | 49 | @end 50 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Matchers/KWBeKindOfClassMatcher.m: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KWBeKindOfClassMatcher.h" 8 | #import "KWFormatter.h" 9 | 10 | @interface KWBeKindOfClassMatcher() 11 | 12 | @property (nonatomic, assign) Class targetClass; 13 | 14 | @end 15 | 16 | @implementation KWBeKindOfClassMatcher 17 | 18 | #pragma mark - Getting Matcher Strings 19 | 20 | + (NSArray *)matcherStrings { 21 | return @[@"beKindOfClass:"]; 22 | } 23 | 24 | #pragma mark - Matching 25 | 26 | - (BOOL)evaluate { 27 | return [self.subject isKindOfClass:self.targetClass]; 28 | } 29 | 30 | #pragma mark - Getting Failure Messages 31 | 32 | - (NSString *)failureMessageForShould { 33 | return [NSString stringWithFormat:@"expected subject to be kind of %@, got %@", 34 | NSStringFromClass(self.targetClass), 35 | NSStringFromClass([self.subject class])]; 36 | } 37 | 38 | - (NSString *)description { 39 | return [NSString stringWithFormat:@"be kind of %@", NSStringFromClass(self.targetClass)]; 40 | } 41 | 42 | #pragma mark - Configuring Matchers 43 | 44 | - (void)beKindOfClass:(Class)aClass { 45 | self.targetClass = aClass; 46 | } 47 | 48 | @end 49 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Shared Examples/KWSharedExample.m: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2014 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KWSharedExample.h" 8 | #import "KWSharedExampleRegistry.h" 9 | #import "KWExample.h" 10 | 11 | @implementation KWSharedExample 12 | 13 | #pragma mark - Initializing 14 | 15 | - (id)initWithName:(NSString *)name block:(KWSharedExampleBlock)block { 16 | NSParameterAssert(name); 17 | NSParameterAssert(block); 18 | 19 | self = [super init]; 20 | if (self) { 21 | _name = name; 22 | _block = block; 23 | } 24 | return self; 25 | } 26 | 27 | @end 28 | 29 | #pragma mark - Building Example Groups 30 | 31 | void sharedExamplesFor(NSString *name, KWSharedExampleBlock block) { 32 | KWSharedExample *sharedExample = [[KWSharedExample alloc] initWithName:name block:block]; 33 | [[KWSharedExampleRegistry sharedRegistry] registerSharedExample:sharedExample]; 34 | } 35 | 36 | void itBehavesLike(NSString *name, NSDictionary *data) { 37 | KWSharedExample *sharedExample = [[KWSharedExampleRegistry sharedRegistry] sharedExampleForName:name]; 38 | NSString *description = [NSString stringWithFormat:@"behaves like %@", sharedExample.name]; 39 | context(description, ^{ sharedExample.block(data); }); 40 | } 41 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Matchers/KWBeZeroMatcher.m: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KWBeZeroMatcher.h" 8 | #import "KWFormatter.h" 9 | #import "KWValue.h" 10 | 11 | @implementation KWBeZeroMatcher 12 | 13 | #pragma mark - Getting Matcher Strings 14 | 15 | + (NSArray *)matcherStrings { 16 | return @[@"beZero"]; 17 | } 18 | 19 | #pragma mark - Matching 20 | 21 | - (BOOL)evaluate { 22 | if ([self.subject isKindOfClass:[NSNumber class]]) { 23 | return [self.subject isEqualToNumber:@0]; 24 | } 25 | 26 | if ([self.subject respondsToSelector:@selector(numberValue)]) { 27 | return [[self.subject numberValue] isEqualToNumber:@0]; 28 | } 29 | 30 | return NO; 31 | } 32 | 33 | #pragma mark - Getting Failure Messages 34 | 35 | - (NSString *)failureMessageForShould { 36 | return [NSString stringWithFormat:@"expected subject to be zero, got %@", 37 | [KWFormatter formatObject:self.subject]]; 38 | } 39 | 40 | - (NSString *)failureMessageForShouldNot { 41 | return [NSString stringWithFormat:@"expected subject not to be zero"]; 42 | } 43 | 44 | - (NSString *)description { 45 | return @"be zero"; 46 | } 47 | 48 | #pragma mark - Configuring Matchers 49 | 50 | - (void)beZero { 51 | } 52 | 53 | @end 54 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Nodes/KWLetNode.h: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KiwiConfiguration.h" 8 | #import "KWExampleNode.h" 9 | 10 | @interface KWLetNode : NSObject 11 | 12 | - (instancetype)initWithSymbolName:(NSString *)aSymbolName objectRef:(id *)anObjectRef block:(id (^)(void))block; 13 | + (instancetype)letNodeWithSymbolName:(NSString *)aSymbolName objectRef:(id *)anObjectRef block:(id (^)(void))block; 14 | 15 | @property (nonatomic, copy) NSString *symbolName; 16 | @property (nonatomic, copy) id (^block)(void); 17 | @property (nonatomic, readonly) __autoreleasing id *objectRef; 18 | 19 | - (id)evaluate; 20 | - (void)evaluateTree; 21 | 22 | - (void)addLetNode:(KWLetNode *)aNode; 23 | - (void)unlink; 24 | 25 | // The parent/child relationship describes let nodes declared in nested 26 | // contexts -- evaluating a node returns the value of the deepest 27 | // evaluated child. 28 | @property (nonatomic, readonly, weak) KWLetNode *parent; 29 | @property (nonatomic, readonly, strong) KWLetNode *child; 30 | 31 | // The next/previous relationship describes the order in which nodes 32 | // of different symbols were declared. 33 | @property (nonatomic, readonly, strong) KWLetNode *next; 34 | @property (nonatomic, readonly, weak) KWLetNode *previous; 35 | 36 | @end 37 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Matchers/KWBeMemberOfClassMatcher.m: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KWBeMemberOfClassMatcher.h" 8 | #import "KWFormatter.h" 9 | 10 | @interface KWBeMemberOfClassMatcher() 11 | 12 | @property (nonatomic, assign) Class targetClass; 13 | 14 | @end 15 | 16 | @implementation KWBeMemberOfClassMatcher 17 | 18 | #pragma mark - Getting Matcher Strings 19 | 20 | + (NSArray *)matcherStrings { 21 | return @[@"beMemberOfClass:"]; 22 | } 23 | 24 | #pragma mark - Matching 25 | 26 | - (BOOL)evaluate { 27 | return [self.subject isMemberOfClass:self.targetClass]; 28 | } 29 | 30 | #pragma mark - Getting Failure Messages 31 | 32 | - (NSString *)failureMessageForShould { 33 | return [NSString stringWithFormat:@"expected subject to be member of %@, got %@", 34 | NSStringFromClass(self.targetClass), 35 | NSStringFromClass([self.subject class])]; 36 | } 37 | 38 | - (NSString *)description { 39 | return [NSString stringWithFormat:@"be member of %@", 40 | NSStringFromClass(self.targetClass)]; 41 | } 42 | 43 | #pragma mark - Configuring Matchers 44 | 45 | - (void)beMemberOfClass:(Class)aClass { 46 | self.targetClass = aClass; 47 | } 48 | 49 | @end 50 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Core/KWMessagePattern.h: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KiwiConfiguration.h" 8 | 9 | @interface KWMessagePattern : NSObject 10 | 11 | #pragma mark - Initializing 12 | 13 | - (id)initWithSelector:(SEL)aSelector; 14 | - (id)initWithSelector:(SEL)aSelector argumentFilters:(NSArray *)anArray; 15 | - (id)initWithSelector:(SEL)aSelector firstArgumentFilter:(id)firstArgumentFilter argumentList:(va_list)argumentList; 16 | 17 | + (id)messagePatternWithSelector:(SEL)aSelector; 18 | + (id)messagePatternWithSelector:(SEL)aSelector argumentFilters:(NSArray *)anArray; 19 | + (id)messagePatternWithSelector:(SEL)aSelector firstArgumentFilter:(id)firstArgumentFilter argumentList:(va_list)argumentList; 20 | 21 | + (id)messagePatternFromInvocation:(NSInvocation *)anInvocation; 22 | 23 | #pragma mark - Properties 24 | 25 | @property (nonatomic, readonly) SEL selector; 26 | @property (nonatomic, readonly) NSArray *argumentFilters; 27 | 28 | #pragma mark - Matching Invocations 29 | 30 | - (BOOL)matchesInvocation:(NSInvocation *)anInvocation; 31 | 32 | #pragma mark - Comparing Message Patterns 33 | 34 | - (BOOL)isEqualToMessagePattern:(KWMessagePattern *)aMessagePattern; 35 | 36 | #pragma mark - Retrieving String Representations 37 | 38 | - (NSString *)stringValue; 39 | 40 | @end 41 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Matchers/KWHaveMatcher.h: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KiwiConfiguration.h" 8 | #import "KWMatcher.h" 9 | #import "KWMatchVerifier.h" 10 | 11 | @interface KWHaveMatcher : KWMatcher 12 | 13 | #pragma mark - Configuring Matchers 14 | 15 | - (void)haveCountOf:(NSUInteger)aCount; 16 | - (void)haveCountOfAtLeast:(NSUInteger)aCount; 17 | - (void)haveCountOfAtMost:(NSUInteger)aCount; 18 | - (void)haveLengthOf:(NSUInteger)aCount; 19 | - (void)haveLengthOfAtLeast:(NSUInteger)aCount; 20 | - (void)haveLengthOfAtMost:(NSUInteger)aCount; 21 | - (void)have:(NSUInteger)aCount itemsForInvocation:(NSInvocation *)anInvocation; 22 | - (void)haveAtLeast:(NSUInteger)aCount itemsForInvocation:(NSInvocation *)anInvocation; 23 | - (void)haveAtMost:(NSUInteger)aCount itemsForInvocation:(NSInvocation *)anInvocation; 24 | 25 | @end 26 | 27 | @protocol KWContainmentCountMatcherTerminals 28 | 29 | #pragma mark - Terminals 30 | 31 | - (id)objects; 32 | - (id)items; 33 | - (id)elements; 34 | 35 | @end 36 | 37 | #pragma mark - Verifying 38 | 39 | @interface KWMatchVerifier(KWHaveMatcherAdditions) 40 | 41 | #pragma mark - Invocation Capturing Methods 42 | 43 | - (id)have:(NSUInteger)aCount; 44 | - (id)haveAtLeast:(NSUInteger)aCount; 45 | - (id)haveAtMost:(NSUInteger)aCount; 46 | 47 | @end 48 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Matchers/KWContainStringMatcher.h: -------------------------------------------------------------------------------- 1 | // 2 | // KWContainStringMatcher.h 3 | // Kiwi 4 | // 5 | // Created by Kristopher Johnson on 4/28/13. 6 | // Copyright (c) 2013 Allen Ding. All rights reserved. 7 | // 8 | 9 | #import "KiwiConfiguration.h" 10 | #import "KWMatcher.h" 11 | 12 | // Kiwi matcher for determining whether a string contains an expected substring 13 | // 14 | // Examples: 15 | // 16 | // [[@"Hello, world!" should] containString:@"world"]; 17 | // [[@"Hello, world!" shouldNot] containString:@"xyzzy"]; 18 | // 19 | // [[@"Hello, world!" should] containString:@"WORLD" 20 | // options:NSCaseInsensitiveSearch]; 21 | // 22 | // [[@"Hello, world!" should] startWithString:@"Hello,"]; 23 | // [[@"Hello, world!" should] endWithString:@"world!"]; 24 | 25 | @interface KWContainStringMatcher : KWMatcher 26 | 27 | // Match if subject contains specified substring 28 | - (void)containString:(NSString *)string; 29 | 30 | // Match if subject contains specified substring, using specified comparison options 31 | - (void)containString:(NSString *)string options:(NSStringCompareOptions)options; 32 | 33 | // Match if subject starts with the specified prefix 34 | - (void)startWithString:(NSString *)prefix; 35 | 36 | // Match if subject ends with the specified prefix 37 | - (void)endWithString:(NSString *)suffix; 38 | 39 | @end 40 | -------------------------------------------------------------------------------- /Example/FORScrollViewEmptyAssistant/Images.xcassets/LaunchImage.launchimage/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "orientation" : "portrait", 5 | "idiom" : "iphone", 6 | "extent" : "full-screen", 7 | "minimum-system-version" : "7.0", 8 | "scale" : "2x" 9 | }, 10 | { 11 | "orientation" : "portrait", 12 | "idiom" : "iphone", 13 | "subtype" : "retina4", 14 | "extent" : "full-screen", 15 | "minimum-system-version" : "7.0", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "orientation" : "portrait", 20 | "idiom" : "ipad", 21 | "extent" : "full-screen", 22 | "minimum-system-version" : "7.0", 23 | "scale" : "1x" 24 | }, 25 | { 26 | "orientation" : "landscape", 27 | "idiom" : "ipad", 28 | "extent" : "full-screen", 29 | "minimum-system-version" : "7.0", 30 | "scale" : "1x" 31 | }, 32 | { 33 | "orientation" : "portrait", 34 | "idiom" : "ipad", 35 | "extent" : "full-screen", 36 | "minimum-system-version" : "7.0", 37 | "scale" : "2x" 38 | }, 39 | { 40 | "orientation" : "landscape", 41 | "idiom" : "ipad", 42 | "extent" : "full-screen", 43 | "minimum-system-version" : "7.0", 44 | "scale" : "2x" 45 | } 46 | ], 47 | "info" : { 48 | "version" : 1, 49 | "author" : "xcode" 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Matchers/KWBeSubclassOfClassMatcher.m: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KWBeSubclassOfClassMatcher.h" 8 | #import "KWFormatter.h" 9 | 10 | @interface KWBeSubclassOfClassMatcher() 11 | 12 | #pragma mark - Properties 13 | 14 | @property (nonatomic, assign) Class targetClass; 15 | 16 | @end 17 | 18 | @implementation KWBeSubclassOfClassMatcher 19 | 20 | #pragma mark - Getting Matcher Strings 21 | 22 | + (NSArray *)matcherStrings { 23 | return @[@"beSubclassOfClass:"]; 24 | } 25 | 26 | #pragma mark - Matching 27 | 28 | - (BOOL)evaluate { 29 | return [self.subject isSubclassOfClass:self.targetClass]; 30 | } 31 | 32 | #pragma mark - Getting Failure Messages 33 | 34 | - (NSString *)failureMessageForShould { 35 | return [NSString stringWithFormat:@"expected subject to be subclass of %@, got %@", 36 | NSStringFromClass(self.targetClass), 37 | NSStringFromClass([self.subject class])]; 38 | } 39 | 40 | - (NSString *)description { 41 | return [NSString stringWithFormat:@"be subclass of %@", 42 | NSStringFromClass(self.targetClass)]; 43 | } 44 | 45 | #pragma mark - Configuring Matchers 46 | 47 | - (void)beSubclassOfClass:(Class)aClass { 48 | self.targetClass = aClass; 49 | } 50 | 51 | @end 52 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Core/KWFailure.m: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KWFailure.h" 8 | #import "KWCallSite.h" 9 | 10 | @implementation KWFailure 11 | 12 | #pragma mark - Initializing 13 | 14 | - (id)initWithCallSite:(KWCallSite *)aCallSite message:(NSString *)aMessage { 15 | self = [super init]; 16 | if (self) { 17 | _callSite = aCallSite; 18 | _message = [aMessage copy]; 19 | } 20 | 21 | return self; 22 | } 23 | 24 | - (id)initWithCallSite:(KWCallSite *)aCallSite format:(NSString *)format, ... { 25 | va_list argumentList; 26 | va_start(argumentList, format); 27 | NSString *aMessage = [[NSString alloc] initWithFormat:format arguments:argumentList]; 28 | va_end(argumentList); 29 | return [self initWithCallSite:aCallSite message:aMessage]; 30 | } 31 | 32 | + (id)failureWithCallSite:(KWCallSite *)aCallSite message:(NSString *)aMessage { 33 | return [[self alloc] initWithCallSite:aCallSite message:aMessage]; 34 | } 35 | 36 | + (id)failureWithCallSite:(KWCallSite *)aCallSite format:(NSString *)format, ... { 37 | va_list argumentList; 38 | va_start(argumentList, format); 39 | NSString *message = [[NSString alloc] initWithFormat:format arguments:argumentList]; 40 | va_end(argumentList); 41 | return [self failureWithCallSite:aCallSite message:message]; 42 | } 43 | 44 | @end 45 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Config/KWAllTestsSuite.m: -------------------------------------------------------------------------------- 1 | // 2 | // XCTestSuite+KWConfiguration.m 3 | // Kiwi 4 | // 5 | // Created by Adam Sharp on 1/07/2014. 6 | // Copyright (c) 2014 Allen Ding. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import "KWSuiteConfigurationBase.h" 12 | 13 | @interface _KWAllTestsSuite : XCTestSuite 14 | @end 15 | 16 | @implementation _KWAllTestsSuite 17 | 18 | - (void)setUp { 19 | [super setUp]; 20 | [[KWSuiteConfigurationBase defaultConfiguration] setUp]; 21 | } 22 | 23 | - (void)tearDown { 24 | [[KWSuiteConfigurationBase defaultConfiguration] tearDown]; 25 | [super tearDown]; 26 | } 27 | 28 | @end 29 | 30 | @interface XCTestSuite (KWConfiguration) 31 | @end 32 | 33 | @implementation XCTestSuite (KWConfiguration) 34 | 35 | + (void)load { 36 | Method testSuiteWithName = class_getClassMethod(self, @selector(testSuiteWithName:)); 37 | Method kiwi_testSuiteWithName = class_getClassMethod(self, @selector(kiwi_testSuiteWithName:)); 38 | method_exchangeImplementations(testSuiteWithName, kiwi_testSuiteWithName); 39 | } 40 | 41 | + (id)kiwi_testSuiteWithName:(NSString *)aName { 42 | id suite = [self kiwi_testSuiteWithName:aName]; 43 | if ([aName isEqualToString:@"All tests"]) { 44 | if ([suite isMemberOfClass:[XCTestSuite class]]) { 45 | object_setClass(suite, [_KWAllTestsSuite class]); 46 | } 47 | } 48 | return suite; 49 | } 50 | 51 | @end 52 | -------------------------------------------------------------------------------- /Example/Pods/MJRefresh/MJRefresh/MJRefreshConst.m: -------------------------------------------------------------------------------- 1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh 2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000 3 | #import 4 | 5 | const CGFloat MJRefreshHeaderHeight = 54.0; 6 | const CGFloat MJRefreshFooterHeight = 44.0; 7 | const CGFloat MJRefreshFastAnimationDuration = 0.25; 8 | const CGFloat MJRefreshSlowAnimationDuration = 0.4; 9 | 10 | NSString *const MJRefreshKeyPathContentOffset = @"contentOffset"; 11 | NSString *const MJRefreshKeyPathContentInset = @"contentInset"; 12 | NSString *const MJRefreshKeyPathContentSize = @"contentSize"; 13 | NSString *const MJRefreshKeyPathPanState = @"state"; 14 | 15 | NSString *const MJRefreshHeaderLastUpdatedTimeKey = @"MJRefreshHeaderLastUpdatedTimeKey"; 16 | 17 | NSString *const MJRefreshHeaderIdleText = @"下拉可以刷新"; 18 | NSString *const MJRefreshHeaderPullingText = @"松开立即刷新"; 19 | NSString *const MJRefreshHeaderRefreshingText = @"正在刷新数据中..."; 20 | 21 | NSString *const MJRefreshAutoFooterIdleText = @"点击或上拉加载更多"; 22 | NSString *const MJRefreshAutoFooterRefreshingText = @"正在加载更多的数据..."; 23 | NSString *const MJRefreshAutoFooterNoMoreDataText = @"已经全部加载完毕"; 24 | 25 | NSString *const MJRefreshBackFooterIdleText = @"上拉可以加载更多"; 26 | NSString *const MJRefreshBackFooterPullingText = @"松开立即加载更多"; 27 | NSString *const MJRefreshBackFooterRefreshingText = @"正在加载更多的数据..."; 28 | NSString *const MJRefreshBackFooterNoMoreDataText = @"已经全部加载完毕"; -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Stubbing/KWStub.h: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KiwiConfiguration.h" 8 | 9 | @class KWMessagePattern; 10 | 11 | @interface KWStub : NSObject 12 | 13 | #pragma mark - Initializing 14 | 15 | - (id)initWithMessagePattern:(KWMessagePattern *)aMessagePattern; 16 | - (id)initWithMessagePattern:(KWMessagePattern *)aMessagePattern value:(id)aValue; 17 | - (id)initWithMessagePattern:(KWMessagePattern *)aMessagePattern block:(id (^)(NSArray *params))aBlock; 18 | - (id)initWithMessagePattern:(KWMessagePattern *)aMessagePattern value:(id)aValue times:(id)times afterThatReturn:(id)aSecondValue; 19 | 20 | + (id)stubWithMessagePattern:(KWMessagePattern *)aMessagePattern; 21 | + (id)stubWithMessagePattern:(KWMessagePattern *)aMessagePattern value:(id)aValue; 22 | + (id)stubWithMessagePattern:(KWMessagePattern *)aMessagePattern block:(id (^)(NSArray *params))aBlock; 23 | + (id)stubWithMessagePattern:(KWMessagePattern *)aMessagePattern value:(id)aValue times:(id)times afterThatReturn:(id)aSecondValue; 24 | 25 | #pragma mark - Properties 26 | 27 | @property (nonatomic, readonly) KWMessagePattern *messagePattern; 28 | @property (nonatomic, readonly) id value; 29 | @property (nonatomic, readonly) id returnValueTimes; 30 | @property (nonatomic, readonly) int returnedValueTimes; 31 | @property (nonatomic, readonly) id secondValue; 32 | 33 | #pragma mark - Processing Invocations 34 | 35 | - (BOOL)processInvocation:(NSInvocation *)anInvocation; 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Core/NSInvocation+OCMAdditions.h: -------------------------------------------------------------------------------- 1 | //--------------------------------------------------------------------------------------- 2 | // $Id$ 3 | // Copyright (c) 2006-2009 by Mulle Kybernetik. See License file for details. 4 | //--------------------------------------------------------------------------------------- 5 | 6 | #import 7 | 8 | @interface NSInvocation(OCMAdditions) 9 | 10 | - (id)getArgumentAtIndexAsObject:(int)argIndex; 11 | 12 | - (NSString *)invocationDescription; 13 | 14 | - (NSString *)argumentDescriptionAtIndex:(int)argIndex; 15 | 16 | - (NSString *)objectDescriptionAtIndex:(int)anInt; 17 | - (NSString *)charDescriptionAtIndex:(int)anInt; 18 | - (NSString *)unsignedCharDescriptionAtIndex:(int)anInt; 19 | - (NSString *)intDescriptionAtIndex:(int)anInt; 20 | - (NSString *)unsignedIntDescriptionAtIndex:(int)anInt; 21 | - (NSString *)shortDescriptionAtIndex:(int)anInt; 22 | - (NSString *)unsignedShortDescriptionAtIndex:(int)anInt; 23 | - (NSString *)longDescriptionAtIndex:(int)anInt; 24 | - (NSString *)unsignedLongDescriptionAtIndex:(int)anInt; 25 | - (NSString *)longLongDescriptionAtIndex:(int)anInt; 26 | - (NSString *)unsignedLongLongDescriptionAtIndex:(int)anInt; 27 | - (NSString *)doubleDescriptionAtIndex:(int)anInt; 28 | - (NSString *)floatDescriptionAtIndex:(int)anInt; 29 | - (NSString *)structDescriptionAtIndex:(int)anInt; 30 | - (NSString *)pointerDescriptionAtIndex:(int)anInt; 31 | - (NSString *)cStringDescriptionAtIndex:(int)anInt; 32 | - (NSString *)selectorDescriptionAtIndex:(int)anInt; 33 | 34 | @end 35 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Verifiers/KWMatchVerifier.h: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KiwiConfiguration.h" 8 | #import "KWExpectationType.h" 9 | #import "KWVerifying.h" 10 | 11 | @class KWCallSite; 12 | @class KWMatcherFactory; 13 | 14 | @protocol KWMatching; 15 | @protocol KWReporting; 16 | 17 | @interface KWMatchVerifier : NSObject 18 | 19 | #pragma mark - Properties 20 | 21 | @property (nonatomic, readonly) KWExpectationType expectationType; 22 | 23 | @property (nonatomic, readonly) KWMatcherFactory *matcherFactory; 24 | @property (nonatomic, readonly) id reporter; 25 | 26 | @property (nonatomic, strong) id subject; 27 | 28 | 29 | #pragma mark - Initializing 30 | 31 | - (id)initForShouldWithCallSite:(KWCallSite *)aCallSite matcherFactory:(KWMatcherFactory *)aMatcherFactory reporter:(id)aReporter; 32 | - (id)initForShouldNotWithCallSite:(KWCallSite *)aCallSite matcherFactory:(KWMatcherFactory *)aMatcherFactory reporter:(id)aReporter; 33 | - (id)initWithExpectationType:(KWExpectationType)anExpectationType callSite:(KWCallSite *)aCallSite matcherFactory:(KWMatcherFactory *)aMatcherFactory reporter:(id)aReporter; 34 | 35 | + (id)matchVerifierWithExpectationType:(KWExpectationType)anExpectationType callSite:(KWCallSite *)aCallSite matcherFactory:(KWMatcherFactory *)aMatcherFactory reporter:(id)aReporter; 36 | 37 | - (void)verifyWithMatcher:(id)aMatcher; 38 | 39 | @end 40 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Matchers/KWBeTrueMatcher.m: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KWBeTrueMatcher.h" 8 | 9 | @interface KWBeTrueMatcher() 10 | 11 | @property (nonatomic, readwrite) BOOL expectedValue; 12 | 13 | @end 14 | 15 | @implementation KWBeTrueMatcher 16 | 17 | #pragma mark - Getting Matcher Strings 18 | 19 | + (NSArray *)matcherStrings { 20 | return @[@"beTrue", @"beFalse", @"beYes", @"beNo"]; 21 | } 22 | 23 | #pragma mark - Matching 24 | 25 | - (BOOL)evaluate { 26 | if (![self.subject respondsToSelector:@selector(boolValue)]) 27 | [NSException raise:@"KWMatcherException" format:@"subject does not respond to -boolValue"]; 28 | 29 | return [self.subject boolValue] == self.expectedValue; 30 | } 31 | 32 | #pragma mark - Getting Failure Messages 33 | 34 | - (NSString *)failureMessageForShould { 35 | return [NSString stringWithFormat:@"expected subject to be %@", 36 | self.expectedValue ? @"true" : @"false"]; 37 | } 38 | 39 | - (NSString *)description { 40 | if (self.expectedValue == YES) { 41 | return @"be true"; 42 | } 43 | return @"be false"; 44 | } 45 | 46 | #pragma mark - Configuring Matchers 47 | 48 | - (void)beTrue { 49 | self.expectedValue = YES; 50 | } 51 | 52 | - (void)beFalse { 53 | self.expectedValue = NO; 54 | } 55 | 56 | - (void)beYes { 57 | self.expectedValue = YES; 58 | } 59 | 60 | - (void)beNo { 61 | self.expectedValue = NO; 62 | } 63 | 64 | @end 65 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/License.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2010, Allen Ding 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | 7 | 1. Redistributions of source code must retain the above copyright notice, this 8 | list of conditions and the following disclaimer. 9 | 10 | 2. Redistributions in binary form must reproduce the above copyright notice, 11 | this list of conditions and the following disclaimer in the documentation 12 | and/or other materials provided with the distribution. 13 | 14 | 3. Neither the name of Allen Ding nor the names of any contributors may be 15 | used to endorse or promote products derived from this software without specific 16 | prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 19 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 20 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 21 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 22 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 24 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 25 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 26 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Stubbing/KWIntercept.h: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KiwiConfiguration.h" 8 | #import 9 | 10 | @class KWMessagePattern; 11 | @class KWStub; 12 | 13 | #pragma mark - Getting Forwarding Implementations 14 | 15 | IMP KWRegularForwardingImplementation(void); 16 | IMP KWStretForwardingImplementation(void); 17 | IMP KWForwardingImplementationForMethodEncoding(const char* encoding); 18 | 19 | #pragma mark - Getting Intercept Class Information 20 | 21 | BOOL KWObjectIsClass(id anObject); 22 | BOOL KWClassIsInterceptClass(Class aClass); 23 | NSString *KWInterceptClassNameForClass(Class aClass); 24 | Class KWInterceptClassForCanonicalClass(Class canonicalClass); 25 | Class KWRealClassForClass(Class aClass); 26 | 27 | #pragma mark - Enabling Intercepting 28 | 29 | Class KWSetupObjectInterceptSupport(id anObject); 30 | void KWSetupMethodInterceptSupport(Class interceptClass, SEL aSelector); 31 | 32 | #pragma mark - Managing Stubs & Spies 33 | void KWClearStubsAndSpies(void); 34 | 35 | #pragma mark - Managing Objects Stubs 36 | 37 | void KWAssociateObjectStub(id anObject, KWStub *aStub, BOOL overrideExisting); 38 | void KWClearObjectStubs(id anObject); 39 | void KWClearAllObjectStubs(void); 40 | 41 | #pragma mark - Managing Message Spies 42 | 43 | void KWAssociateMessageSpy(id anObject, id aSpy, KWMessagePattern *aMessagePattern); 44 | void KWClearObjectSpy(id anObject, id aSpy, KWMessagePattern *aMessagePattern); 45 | void KWClearAllMessageSpies(void); 46 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Nodes/KWPendingNode.m: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KWPendingNode.h" 8 | 9 | #import "KWCallSite.h" 10 | #import "KWContextNode.h" 11 | #import "KWExampleNodeVisitor.h" 12 | 13 | @implementation KWPendingNode 14 | 15 | @synthesize description = _description; 16 | 17 | #pragma mark - Initializing 18 | 19 | - (id)initWithCallSite:(KWCallSite *)aCallSite context:(KWContextNode *)context description:(NSString *)aDescription { 20 | self = [super init]; 21 | if (self) { 22 | _callSite = aCallSite; 23 | _description = [aDescription copy]; 24 | _context = context; 25 | } 26 | 27 | return self; 28 | } 29 | 30 | + (id)pendingNodeWithCallSite:(KWCallSite *)aCallSite context:(KWContextNode *)context description:(NSString *)aDescription { 31 | return [[self alloc] initWithCallSite:aCallSite context:context description:aDescription]; 32 | } 33 | 34 | #pragma mark - Accepting Visitors 35 | 36 | - (void)acceptExampleNodeVisitor:(id)aVisitor { 37 | [aVisitor visitPendingNode:self]; 38 | } 39 | 40 | #pragma mark - Accessing the context stack 41 | 42 | - (NSArray *)contextStack 43 | { 44 | NSMutableArray *contextStack = [NSMutableArray array]; 45 | 46 | KWContextNode *currentContext = _context; 47 | 48 | while (currentContext) { 49 | [contextStack addObject:currentContext]; 50 | currentContext = currentContext.parentContext; 51 | } 52 | return contextStack; 53 | } 54 | 55 | @end 56 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-FORScrollViewEmptyAssistant_Tests/Pods-FORScrollViewEmptyAssistant_Tests.debug.xcconfig: -------------------------------------------------------------------------------- 1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) $(PLATFORM_DIR)/Developer/Library/Frameworks "$PODS_CONFIGURATION_BUILD_DIR/FBSnapshotTestCase" "$PODS_CONFIGURATION_BUILD_DIR/Kiwi" "$PODS_CONFIGURATION_BUILD_DIR/DZNEmptyDataSet" "$PODS_CONFIGURATION_BUILD_DIR/FORGestureTrackDisplay" "$PODS_CONFIGURATION_BUILD_DIR/FORScrollViewEmptyAssistant" "$PODS_CONFIGURATION_BUILD_DIR/MJRefresh" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 5 | OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/FBSnapshotTestCase/FBSnapshotTestCase.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Kiwi/Kiwi.framework/Headers" $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/DZNEmptyDataSet/DZNEmptyDataSet.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/FORGestureTrackDisplay/FORGestureTrackDisplay.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/FORScrollViewEmptyAssistant/FORScrollViewEmptyAssistant.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/MJRefresh/MJRefresh.framework/Headers" 6 | OTHER_LDFLAGS = $(inherited) -framework "FBSnapshotTestCase" -framework "Kiwi" 7 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 8 | PODS_BUILD_DIR = $BUILD_DIR 9 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 10 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 11 | PODS_ROOT = ${SRCROOT}/Pods 12 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-FORScrollViewEmptyAssistant_Tests/Pods-FORScrollViewEmptyAssistant_Tests.release.xcconfig: -------------------------------------------------------------------------------- 1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) $(PLATFORM_DIR)/Developer/Library/Frameworks "$PODS_CONFIGURATION_BUILD_DIR/FBSnapshotTestCase" "$PODS_CONFIGURATION_BUILD_DIR/Kiwi" "$PODS_CONFIGURATION_BUILD_DIR/DZNEmptyDataSet" "$PODS_CONFIGURATION_BUILD_DIR/FORGestureTrackDisplay" "$PODS_CONFIGURATION_BUILD_DIR/FORScrollViewEmptyAssistant" "$PODS_CONFIGURATION_BUILD_DIR/MJRefresh" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 5 | OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/FBSnapshotTestCase/FBSnapshotTestCase.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Kiwi/Kiwi.framework/Headers" $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/DZNEmptyDataSet/DZNEmptyDataSet.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/FORGestureTrackDisplay/FORGestureTrackDisplay.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/FORScrollViewEmptyAssistant/FORScrollViewEmptyAssistant.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/MJRefresh/MJRefresh.framework/Headers" 6 | OTHER_LDFLAGS = $(inherited) -framework "FBSnapshotTestCase" -framework "Kiwi" 7 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 8 | PODS_BUILD_DIR = $BUILD_DIR 9 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 10 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 11 | PODS_ROOT = ${SRCROOT}/Pods 12 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Readme.md: -------------------------------------------------------------------------------- 1 | # Simple BDD for iOS 2 | [![Build Status](https://travis-ci.org/kiwi-bdd/Kiwi.svg?branch=master)](https://travis-ci.org/kiwi-bdd/Kiwi) 3 | 4 | Kiwi is a Behavior Driven Development library for iOS development. 5 | The goal is to provide a BDD library that is exquisitely simple to setup and use. 6 | 7 | ## Why? 8 | The idea behind Kiwi is to have tests that are more readable than what is possible with the bundled test framework. 9 | 10 | Tests (or rather specs) are written in Objective-C and run within the comfort of Xcode to provide a test environment that is as unobtrusive and seamless as possible in terms of running tests and error reporting. 11 | 12 | Specs look like this: 13 | 14 | ```objective-c 15 | describe(@"Team", ^{ 16 | context(@"when newly created", ^{ 17 | it(@"has a name", ^{ 18 | id team = [Team team]; 19 | [[team.name should] equal:@"Black Hawks"]; 20 | }); 21 | 22 | it(@"has 11 players", ^{ 23 | id team = [Team team]; 24 | [[[team should] have:11] players]; 25 | }); 26 | }); 27 | }); 28 | ``` 29 | 30 | ## Documentation 31 | The [Kiwi Wiki](https://github.com/kiwi-bdd/Kiwi/wiki) is the official documentation source. 32 | 33 | ## Getting it 34 | The best way to get Kiwi is by using [CocoaPods](https://github.com/cocoapods/cocoapods). 35 | For all the installation details, check out the [Wiki](https://github.com/kiwi-bdd/Kiwi/wiki) 36 | 37 | ## Support 38 | For all the questions / suggestions you have, that aren't bug reports please use our [Google Group](https://groups.google.com/forum/#!forum/kiwi-bdd) 39 | 40 | -------------------------------------------------------------------------------- /Example/Pods/FBSnapshotTestCase/LICENSE: -------------------------------------------------------------------------------- 1 | BSD License 2 | 3 | For the FBSnapshotTestCase software 4 | 5 | Copyright (c) 2013, Facebook, Inc. 6 | All rights reserved. 7 | 8 | Redistribution and use in source and binary forms, with or without 9 | modification, are permitted provided that the following conditions are met: 10 | 11 | * Redistributions of source code must retain the above copyright notice, 12 | this list of conditions and the following disclaimer. 13 | * Redistributions in binary form must reproduce the above copyright notice, 14 | this list of conditions and the following disclaimer in the documentation 15 | and/or other materials provided with the distribution. 16 | * Neither the name Facebook nor the names of its contributors may be used to 17 | endorse or promote products derived from this software without specific 18 | prior written permission. 19 | 20 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 23 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 24 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 25 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 26 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 27 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 28 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | -------------------------------------------------------------------------------- /Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Diff.h: -------------------------------------------------------------------------------- 1 | // 2 | // Created by Gabriel Handford on 3/1/09. 3 | // Copyright 2009-2013. All rights reserved. 4 | // Created by John Boiles on 10/20/11. 5 | // Copyright (c) 2011. All rights reserved 6 | // Modified by Felix Schulze on 2/11/13. 7 | // Copyright 2013. All rights reserved. 8 | // 9 | // Permission is hereby granted, free of charge, to any person 10 | // obtaining a copy of this software and associated documentation 11 | // files (the "Software"), to deal in the Software without 12 | // restriction, including without limitation the rights to use, 13 | // copy, modify, merge, publish, distribute, sublicense, and/or sell 14 | // copies of the Software, and to permit persons to whom the 15 | // Software is furnished to do so, subject to the following 16 | // conditions: 17 | // 18 | // The above copyright notice and this permission notice shall be 19 | // included in all copies or substantial portions of the Software. 20 | // 21 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 22 | // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 23 | // OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 24 | // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 25 | // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 26 | // WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 27 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 28 | // OTHER DEALINGS IN THE SOFTWARE. 29 | // 30 | 31 | #import 32 | 33 | @interface UIImage (Diff) 34 | 35 | - (UIImage *)fb_diffWithImage:(UIImage *)image; 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Compare.h: -------------------------------------------------------------------------------- 1 | // 2 | // Created by Gabriel Handford on 3/1/09. 3 | // Copyright 2009-2013. All rights reserved. 4 | // Created by John Boiles on 10/20/11. 5 | // Copyright (c) 2011. All rights reserved 6 | // Modified by Felix Schulze on 2/11/13. 7 | // Copyright 2013. All rights reserved. 8 | // 9 | // Permission is hereby granted, free of charge, to any person 10 | // obtaining a copy of this software and associated documentation 11 | // files (the "Software"), to deal in the Software without 12 | // restriction, including without limitation the rights to use, 13 | // copy, modify, merge, publish, distribute, sublicense, and/or sell 14 | // copies of the Software, and to permit persons to whom the 15 | // Software is furnished to do so, subject to the following 16 | // conditions: 17 | // 18 | // The above copyright notice and this permission notice shall be 19 | // included in all copies or substantial portions of the Software. 20 | // 21 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 22 | // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 23 | // OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 24 | // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 25 | // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 26 | // WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 27 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 28 | // OTHER DEALINGS IN THE SOFTWARE. 29 | // 30 | 31 | #import 32 | 33 | @interface UIImage (Compare) 34 | 35 | - (BOOL)fb_compareWithImage:(UIImage *)image tolerance:(CGFloat)tolerance; 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCasePlatform.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015, Facebook, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the BSD-style license found in the 6 | * LICENSE file in the root directory of this source tree. An additional grant 7 | * of patent rights can be found in the PATENTS file in the same directory. 8 | * 9 | */ 10 | 11 | #import 12 | 13 | #ifdef __cplusplus 14 | extern "C" { 15 | #endif 16 | 17 | /** 18 | Returns a Boolean value that indicates whether the snapshot test is running in 64Bit. 19 | This method is a convenience for creating the suffixes set based on the architecture 20 | that the test is running. 21 | 22 | @returns @c YES if the test is running in 64bit, otherwise @c NO. 23 | */ 24 | BOOL FBSnapshotTestCaseIs64Bit(void); 25 | 26 | /** 27 | Returns a default set of strings that is used to append a suffix based on the architectures. 28 | @warning Do not modify this function, you can create your own and use it with @c FBSnapshotVerifyViewWithOptions() 29 | 30 | @returns An @c NSOrderedSet object containing strings that are appended to the reference images directory. 31 | */ 32 | NSOrderedSet *FBSnapshotTestCaseDefaultSuffixes(void); 33 | 34 | /** 35 | Returns a fully «normalized» file name. 36 | Strips punctuation and spaces and replaces them with @c _. Also appends the device model, running OS and screen size to the file name. 37 | 38 | @returns An @c NSString object containing the passed @c fileName with the device model, OS and screen size appended at the end. 39 | */ 40 | NSString *FBDeviceAgnosticNormalizedFileName(NSString *fileName); 41 | 42 | #ifdef __cplusplus 43 | } 44 | #endif 45 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Matchers/KWBeEmptyMatcher.m: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KWBeEmptyMatcher.h" 8 | #import "KWFormatter.h" 9 | 10 | @interface KWBeEmptyMatcher() 11 | 12 | #pragma mark - Properties 13 | 14 | @property (nonatomic, readwrite) NSUInteger count; 15 | 16 | @end 17 | 18 | @implementation KWBeEmptyMatcher 19 | 20 | #pragma mark - Getting Matcher Strings 21 | 22 | + (NSArray *)matcherStrings { 23 | return @[@"beEmpty"]; 24 | } 25 | 26 | #pragma mark - Matching 27 | 28 | - (BOOL)evaluate { 29 | if ([self.subject respondsToSelector:@selector(count)]) { 30 | self.count = [self.subject count]; 31 | return self.count == 0; 32 | } 33 | else if ([self.subject respondsToSelector:@selector(length)]) { 34 | self.count = [self.subject length]; 35 | return self.count == 0; 36 | } 37 | 38 | [NSException raise:@"KWMatcherException" format:@"subject does not respond to -count or -length"]; 39 | return NO; 40 | } 41 | 42 | #pragma mark - Getting Failure Messages 43 | 44 | - (NSString *)countPhrase { 45 | if (self.count == 1) 46 | return @"1 item"; 47 | else 48 | return [NSString stringWithFormat:@"%u items", (unsigned)self.count]; 49 | } 50 | 51 | - (NSString *)failureMessageForShould { 52 | return [NSString stringWithFormat:@"expected subject to be empty, got %@", [self countPhrase]]; 53 | } 54 | 55 | - (NSString *)failureMessageForShouldNot { 56 | return @"expected subject not to be empty"; 57 | } 58 | 59 | - (NSString *)description { 60 | return @"be empty"; 61 | } 62 | 63 | #pragma mark - Configuring Matchers 64 | 65 | - (void)beEmpty { 66 | } 67 | 68 | @end 69 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Nodes/KWItNode.m: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KWItNode.h" 8 | #import "KWExampleNodeVisitor.h" 9 | #import "KWExample.h" 10 | #import "KWVerifying.h" 11 | #import "KWContextNode.h" 12 | 13 | @interface KWItNode () 14 | 15 | @property (nonatomic, weak) KWContextNode *context; 16 | 17 | @end 18 | 19 | @implementation KWItNode 20 | 21 | #pragma mark - Initializing 22 | 23 | + (id)itNodeWithCallSite:(KWCallSite *)aCallSite 24 | description:(NSString *)aDescription 25 | context:(KWContextNode *)context 26 | block:(void (^)(void))block { 27 | KWItNode *itNode = [[self alloc] initWithCallSite:aCallSite description:aDescription block:block]; 28 | itNode.context = context; 29 | return itNode; 30 | } 31 | 32 | #pragma mark - Accepting Visitors 33 | 34 | - (void)acceptExampleNodeVisitor:(id)aVisitor { 35 | [aVisitor visitItNode:self]; 36 | } 37 | 38 | #pragma mark - Runtime Description support 39 | 40 | - (NSString *)description { 41 | NSString *description = [super description]; 42 | if (description == nil) { 43 | description = [self.example generateDescriptionForAnonymousItNode]; 44 | } 45 | return description; 46 | } 47 | 48 | #pragma mark - Accessing the context stack 49 | 50 | - (NSArray *)contextStack { 51 | NSMutableArray *contextStack = [NSMutableArray array]; 52 | 53 | KWContextNode *currentContext = _context; 54 | 55 | while (currentContext) { 56 | [contextStack addObject:currentContext]; 57 | currentContext = currentContext.parentContext; 58 | } 59 | return contextStack; 60 | } 61 | 62 | @end 63 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Matchers/KWBeIdenticalToMatcher.m: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KWBeIdenticalToMatcher.h" 8 | #import "KWFormatter.h" 9 | 10 | @interface KWBeIdenticalToMatcher() 11 | 12 | #pragma mark - Properties 13 | 14 | @property (nonatomic, readwrite, strong) id otherSubject; 15 | 16 | @end 17 | 18 | @implementation KWBeIdenticalToMatcher 19 | 20 | #pragma mark - Getting Matcher Strings 21 | 22 | + (NSArray *)matcherStrings { 23 | return @[@"beIdenticalTo:"]; 24 | } 25 | 26 | #pragma mark - Matching 27 | 28 | - (BOOL)evaluate { 29 | return self.subject == self.otherSubject; 30 | } 31 | 32 | #pragma mark - Getting Failure Messages 33 | 34 | - (NSString *)failureMessageForShould { 35 | return [NSString stringWithFormat:@"expected subject to be identical to %@ (%p), got %@ (%p)", 36 | [KWFormatter formatObject:self.otherSubject], 37 | self.otherSubject, 38 | [KWFormatter formatObject:self.subject], 39 | self.subject]; 40 | } 41 | 42 | - (NSString *)failureMessageForShouldNot { 43 | return [NSString stringWithFormat:@"expected subject not to be identical to %@ (%p)", 44 | [KWFormatter formatObject:self.otherSubject], 45 | self.otherSubject]; 46 | } 47 | 48 | - (NSString *)description { 49 | return [NSString stringWithFormat:@"be identical to %@", self.otherSubject]; 50 | } 51 | 52 | #pragma mark - Configuring Matchers 53 | 54 | - (void)beIdenticalTo:(id)anObject { 55 | self.otherSubject = anObject; 56 | } 57 | 58 | @end 59 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Core/KWFormatter.m: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KWFormatter.h" 8 | 9 | @implementation KWFormatter 10 | 11 | 12 | #pragma mark - Getting Descriptions 13 | 14 | + (NSString *)formatObject:(id)anObject { 15 | if ([anObject isKindOfClass:[NSString class]]) 16 | return [NSString stringWithFormat:@"\"%@\"", anObject]; 17 | 18 | else if ([anObject isKindOfClass:[NSDictionary class]]) 19 | return [anObject description]; // NSDictionary conforms to NSFastEnumeration 20 | 21 | else if ([anObject conformsToProtocol:@protocol(NSFastEnumeration)]) 22 | return [self formattedCollection:anObject]; 23 | 24 | return [anObject description]; 25 | } 26 | 27 | + (NSString *)formatObjectIncludingClass:(id)anObject { 28 | NSString *classString = [[anObject class] description]; 29 | 30 | if ([anObject isKindOfClass:[NSString class]]) 31 | classString = @"NSString"; 32 | 33 | return [NSString stringWithFormat:@"(%@) %@", classString, [self formatObject:anObject]]; 34 | } 35 | 36 | 37 | #pragma mark - Internal Methods 38 | 39 | + (NSString *)formattedCollection:(id)collection { 40 | 41 | NSMutableString *description = [[NSMutableString alloc] initWithString:@"("]; 42 | NSUInteger index = 0; 43 | 44 | for (id object in collection) { 45 | if (index == 0) 46 | [description appendFormat:@"%@", [self formatObject:object]]; 47 | else 48 | [description appendFormat:@", %@", [self formatObject:object]]; 49 | 50 | ++index; 51 | } 52 | 53 | [description appendString:@")"]; 54 | return description; 55 | } 56 | 57 | 58 | 59 | @end 60 | -------------------------------------------------------------------------------- /Example/FORScrollViewEmptyAssistant/FORScrollViewEmptyAssistant-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleDisplayName 8 | ${PRODUCT_NAME} 9 | CFBundleExecutable 10 | ${EXECUTABLE_NAME} 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | ${PRODUCT_NAME} 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1.0 25 | LSRequiresIPhoneOS 26 | 27 | UILaunchStoryboardName 28 | launch 29 | UIMainStoryboardFile 30 | Main 31 | UIRequiredDeviceCapabilities 32 | 33 | armv7 34 | 35 | UISupportedInterfaceOrientations 36 | 37 | UIInterfaceOrientationPortrait 38 | UIInterfaceOrientationLandscapeLeft 39 | UIInterfaceOrientationLandscapeRight 40 | 41 | UISupportedInterfaceOrientations~ipad 42 | 43 | UIInterfaceOrientationPortrait 44 | UIInterfaceOrientationPortraitUpsideDown 45 | UIInterfaceOrientationLandscapeLeft 46 | UIInterfaceOrientationLandscapeRight 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /FORScrollViewEmptyAssistant.podspec: -------------------------------------------------------------------------------- 1 | # 2 | # Be sure to run `pod lib lint FORScrollViewEmptyAssistant.podspec' to ensure this is a 3 | # valid spec before submitting. 4 | # 5 | # Any lines starting with a # are optional, but their use is encouraged 6 | # To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html 7 | # 8 | 9 | Pod::Spec.new do |s| 10 | s.name = "FORScrollViewEmptyAssistant" 11 | s.version = "1.2.2" 12 | s.summary = "Table/Collection的空白页" 13 | 14 | # This description is used to generate tags and improve search results. 15 | # * Think: What does it do? Why did you write it? What is the focus? 16 | # * Try to keep it short, snappy and to the point. 17 | # * Write the description between the DESC delimiters below. 18 | # * Finally, don't worry about the indent, CocoaPods strips it! 19 | 20 | s.description = <<-DESC 21 | UI列表数据为空的空白页,可以自定义空白页的样式,包括空白图,标题,副标题及按钮四个元素。 22 | DESC 23 | 24 | s.homepage = "https://github.com/ZhipingYang/FORScrollViewEmptyAssistant" 25 | # s.screenshots = "www.example.com/screenshots_1", "www.example.com/screenshots_2" 26 | s.license = 'MIT' 27 | s.author = { "XcodeYang" => "xcodeyang@gmail.com" } 28 | s.source = { :git => "https://github.com/ZhipingYang/FORScrollViewEmptyAssistant.git", :tag => s.version.to_s } 29 | # s.social_media_url = 'https://twitter.com/' 30 | 31 | s.ios.deployment_target = '8.0' 32 | 33 | s.source_files = 'FORScrollViewEmptyAssistant/Classes/**/*' 34 | 35 | s.resource_bundles = { 36 | 'FORScrollViewEmptyAssistant' => ['FORScrollViewEmptyAssistant/Assets/*.png'] 37 | } 38 | 39 | # s.public_header_files = 'Pod/Classes/**/*.h' 40 | s.frameworks = 'UIKit' 41 | s.dependency 'DZNEmptyDataSet','1.8.1' 42 | end 43 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Core/KWProbePoller.m: -------------------------------------------------------------------------------- 1 | // 2 | // KWProbePoller.m 3 | // iOSFalconCore 4 | // 5 | // Created by Luke Redpath on 13/01/2011. 6 | // Copyright 2011 LJR Software Limited. All rights reserved. 7 | // 8 | 9 | #import "KWProbePoller.h" 10 | 11 | @interface KWTimeout : NSObject 12 | 13 | @property (nonatomic) CFTimeInterval timeoutDateStamp; 14 | 15 | @end 16 | 17 | @implementation KWTimeout 18 | 19 | - (id)initWithTimeout:(NSTimeInterval)timeout 20 | { 21 | self = [super init]; 22 | if (self) { 23 | _timeoutDateStamp = CFAbsoluteTimeGetCurrent() + timeout; 24 | } 25 | return self; 26 | } 27 | 28 | 29 | - (BOOL)hasTimedOut { 30 | return (_timeoutDateStamp - CFAbsoluteTimeGetCurrent()) < 0; 31 | } 32 | 33 | @end 34 | 35 | 36 | @interface KWProbePoller() 37 | 38 | @property (nonatomic, assign) NSTimeInterval timeoutInterval; 39 | @property (nonatomic, assign) NSTimeInterval delayInterval; 40 | @property (nonatomic, assign) BOOL shouldWait; 41 | 42 | @end 43 | 44 | @implementation KWProbePoller 45 | 46 | - (id)initWithTimeout:(NSTimeInterval)theTimeout 47 | delay:(NSTimeInterval)theDelay 48 | shouldWait:(BOOL)wait { 49 | self = [super init]; 50 | if (self) { 51 | _timeoutInterval = theTimeout; 52 | _delayInterval = theDelay; 53 | _shouldWait = wait; 54 | } 55 | return self; 56 | } 57 | 58 | - (BOOL)check:(id)probe; { 59 | KWTimeout *timeout = [[KWTimeout alloc] initWithTimeout:self.timeoutInterval]; 60 | 61 | while (self.shouldWait || ![probe isSatisfied]) { 62 | if ([timeout hasTimedOut]) { 63 | return [probe isSatisfied]; 64 | } 65 | CFRunLoopRunInMode(kCFRunLoopDefaultMode, _delayInterval, false); 66 | [probe sample]; 67 | } 68 | 69 | return YES; 70 | } 71 | 72 | @end 73 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Matchers/KWUserDefinedMatcher.h: -------------------------------------------------------------------------------- 1 | // 2 | // KWUserDefinedMatcher.h 3 | // Kiwi 4 | // 5 | // Created by Luke Redpath on 16/06/2011. 6 | // Copyright 2011 Allen Ding. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "KWMatcher.h" 11 | 12 | typedef BOOL (^KWUserDefinedMatcherBlock)(); 13 | 14 | @interface KWUserDefinedMatcher : KWMatcher 15 | 16 | @property (nonatomic, assign) SEL selector; 17 | @property (nonatomic, copy) NSString *failureMessageForShould; 18 | @property (nonatomic, copy) NSString *failureMessageForShouldNot; 19 | @property (nonatomic, copy) KWUserDefinedMatcherBlock matcherBlock; 20 | @property (nonatomic, copy) NSString *description; 21 | 22 | + (id)matcherWithSubject:(id)aSubject block:(KWUserDefinedMatcherBlock)aBlock; 23 | - (id)initWithSubject:(id)aSubject block:(KWUserDefinedMatcherBlock)aBlock; 24 | @end 25 | 26 | #pragma mark - 27 | 28 | typedef NSString * (^KWUserDefinedMatcherMessageBlock)(id); 29 | 30 | @interface KWUserDefinedMatcherBuilder : NSObject 31 | { 32 | KWUserDefinedMatcher *matcher; 33 | KWUserDefinedMatcherMessageBlock failureMessageForShouldBlock; 34 | KWUserDefinedMatcherMessageBlock failureMessageForShouldNotBlock; 35 | NSString *description; 36 | } 37 | @property (nonatomic, copy, readonly) NSString *key; 38 | 39 | + (id)builder; 40 | + (id)builderForSelector:(SEL)aSelector; 41 | - (id)initWithSelector:(SEL)aSelector; 42 | 43 | #pragma mark - Configuring The Matcher 44 | 45 | - (void)match:(KWUserDefinedMatcherBlock)block; 46 | - (void)failureMessageForShould:(KWUserDefinedMatcherMessageBlock)block; 47 | - (void)failureMessageForShouldNot:(KWUserDefinedMatcherMessageBlock)block; 48 | - (void)description:(NSString *)description; 49 | 50 | #pragma mark - Buiding The Matcher 51 | 52 | - (KWUserDefinedMatcher *)buildMatcherWithSubject:(id)subject; 53 | @end 54 | -------------------------------------------------------------------------------- /Example/Pods/MJRefresh/MJRefresh/UIView+MJExtension.m: -------------------------------------------------------------------------------- 1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh 2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000 3 | // UIView+Extension.m 4 | // MJRefreshExample 5 | // 6 | // Created by MJ Lee on 14-5-28. 7 | // Copyright (c) 2014年 小码哥. All rights reserved. 8 | // 9 | 10 | #import "UIView+MJExtension.h" 11 | 12 | @implementation UIView (MJExtension) 13 | - (void)setMj_x:(CGFloat)mj_x 14 | { 15 | CGRect frame = self.frame; 16 | frame.origin.x = mj_x; 17 | self.frame = frame; 18 | } 19 | 20 | - (CGFloat)mj_x 21 | { 22 | return self.frame.origin.x; 23 | } 24 | 25 | - (void)setMj_y:(CGFloat)mj_y 26 | { 27 | CGRect frame = self.frame; 28 | frame.origin.y = mj_y; 29 | self.frame = frame; 30 | } 31 | 32 | - (CGFloat)mj_y 33 | { 34 | return self.frame.origin.y; 35 | } 36 | 37 | - (void)setMj_w:(CGFloat)mj_w 38 | { 39 | CGRect frame = self.frame; 40 | frame.size.width = mj_w; 41 | self.frame = frame; 42 | } 43 | 44 | - (CGFloat)mj_w 45 | { 46 | return self.frame.size.width; 47 | } 48 | 49 | - (void)setMj_h:(CGFloat)mj_h 50 | { 51 | CGRect frame = self.frame; 52 | frame.size.height = mj_h; 53 | self.frame = frame; 54 | } 55 | 56 | - (CGFloat)mj_h 57 | { 58 | return self.frame.size.height; 59 | } 60 | 61 | - (void)setMj_size:(CGSize)mj_size 62 | { 63 | CGRect frame = self.frame; 64 | frame.size = mj_size; 65 | self.frame = frame; 66 | } 67 | 68 | - (CGSize)mj_size 69 | { 70 | return self.frame.size; 71 | } 72 | 73 | - (void)setMj_origin:(CGPoint)mj_origin 74 | { 75 | CGRect frame = self.frame; 76 | frame.origin = mj_origin; 77 | self.frame = frame; 78 | } 79 | 80 | - (CGPoint)mj_origin 81 | { 82 | return self.frame.origin; 83 | } 84 | @end 85 | -------------------------------------------------------------------------------- /Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCasePlatform.m: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015, Facebook, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the BSD-style license found in the 6 | * LICENSE file in the root directory of this source tree. An additional grant 7 | * of patent rights can be found in the PATENTS file in the same directory. 8 | * 9 | */ 10 | 11 | #import 12 | #import 13 | #import 14 | 15 | BOOL FBSnapshotTestCaseIs64Bit(void) 16 | { 17 | #if __LP64__ 18 | return YES; 19 | #else 20 | return NO; 21 | #endif 22 | } 23 | 24 | NSOrderedSet *FBSnapshotTestCaseDefaultSuffixes(void) 25 | { 26 | NSMutableOrderedSet *suffixesSet = [[NSMutableOrderedSet alloc] init]; 27 | [suffixesSet addObject:@"_32"]; 28 | [suffixesSet addObject:@"_64"]; 29 | if (FBSnapshotTestCaseIs64Bit()) { 30 | return [suffixesSet reversedOrderedSet]; 31 | } 32 | return [suffixesSet copy]; 33 | } 34 | 35 | NSString *FBDeviceAgnosticNormalizedFileName(NSString *fileName) 36 | { 37 | UIDevice *device = [UIDevice currentDevice]; 38 | UIWindow *keyWindow = [[UIApplication sharedApplication] fb_strictKeyWindow]; 39 | CGSize screenSize = keyWindow.bounds.size; 40 | NSString *os = device.systemVersion; 41 | 42 | fileName = [NSString stringWithFormat:@"%@_%@%@_%.0fx%.0f", fileName, device.model, os, screenSize.width, screenSize.height]; 43 | 44 | NSMutableCharacterSet *invalidCharacters = [NSMutableCharacterSet new]; 45 | [invalidCharacters formUnionWithCharacterSet:[NSCharacterSet whitespaceCharacterSet]]; 46 | [invalidCharacters formUnionWithCharacterSet:[NSCharacterSet punctuationCharacterSet]]; 47 | NSArray *validComponents = [fileName componentsSeparatedByCharactersInSet:invalidCharacters]; 48 | fileName = [validComponents componentsJoinedByString:@"_"]; 49 | 50 | return fileName; 51 | } -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Core/KWCaptureSpy.m: -------------------------------------------------------------------------------- 1 | #import "KWCaptureSpy.h" 2 | 3 | #import "KWObjCUtilities.h" 4 | #import "KWNull.h" 5 | #import "KWValue.h" 6 | #import "NSInvocation+KiwiAdditions.h" 7 | #import "NSMethodSignature+KiwiAdditions.h" 8 | 9 | @interface KWCaptureSpy() 10 | 11 | @property (nonatomic, strong) id argument; 12 | 13 | @end 14 | 15 | @implementation KWCaptureSpy { 16 | NSUInteger _argumentIndex; 17 | } 18 | 19 | - (id)initWithArgumentIndex:(NSUInteger)index { 20 | self = [super init]; 21 | if (self) { 22 | _argumentIndex = index; 23 | } 24 | return self; 25 | } 26 | 27 | - (id)argument { 28 | if (!_argument) { 29 | @throw [NSException exceptionWithName:NSInternalInconsistencyException reason:@"Argument requested has yet to be captured." userInfo:nil]; 30 | } 31 | 32 | if(_argument == [KWNull null]) { 33 | return nil; 34 | } 35 | else { 36 | return _argument; 37 | } 38 | } 39 | 40 | - (void)object:(id)anObject didReceiveInvocation:(NSInvocation *)anInvocation { 41 | if (!_argument) { 42 | NSMethodSignature *signature = [anInvocation methodSignature]; 43 | const char *objCType = [signature messageArgumentTypeAtIndex:_argumentIndex]; 44 | if (KWObjCTypeIsObject(objCType) || KWObjCTypeIsClass(objCType)) { 45 | void* argumentBuffer = NULL; 46 | [anInvocation getMessageArgument:&argumentBuffer atIndex:_argumentIndex]; 47 | id argument = (__bridge id)argumentBuffer; 48 | if (KWObjCTypeIsBlock(objCType)) { 49 | _argument = [argument copy]; 50 | } else { 51 | if(argument == nil) { 52 | _argument = [KWNull null]; 53 | } else { 54 | _argument = argument; 55 | } 56 | } 57 | } else { 58 | NSData *data = [anInvocation messageArgumentDataAtIndex:_argumentIndex]; 59 | _argument = [KWValue valueWithBytes:[data bytes] objCType:objCType]; 60 | } 61 | } 62 | } 63 | 64 | @end 65 | -------------------------------------------------------------------------------- /Example/Pods/Kiwi/Classes/Core/KWExampleSuiteBuilder.h: -------------------------------------------------------------------------------- 1 | // 2 | // Licensed under the terms in License.txt 3 | // 4 | // Copyright 2010 Allen Ding. All rights reserved. 5 | // 6 | 7 | #import "KiwiConfiguration.h" 8 | #import "KWBlock.h" 9 | 10 | @class KWCallSite; 11 | @class KWExample; 12 | @class KWExampleSuite; 13 | @class KWContextNode; 14 | 15 | @interface KWExampleSuiteBuilder : NSObject 16 | 17 | #pragma mark - Initializing 18 | 19 | + (id)sharedExampleSuiteBuilder; 20 | 21 | #pragma mark - Building Example Groups 22 | 23 | @property (nonatomic, readonly) BOOL isBuildingExampleSuite; 24 | @property (nonatomic, strong, readonly) KWExampleSuite *currentExampleSuite; 25 | @property (nonatomic, strong) KWExample *currentExample; 26 | @property (nonatomic, strong) KWCallSite *focusedCallSite; 27 | 28 | //spec file name:line number of callsite 29 | - (void)focusWithURI:(NSString *)nodeUrl; 30 | - (KWExampleSuite *)buildExampleSuite:(void (^)(void))buildingBlock; 31 | 32 | - (void)pushContextNodeWithCallSite:(KWCallSite *)aCallSite description:(NSString *)aDescription; 33 | - (void)popContextNode; 34 | - (void)setRegisterMatchersNodeWithCallSite:(KWCallSite *)aCallSite namespacePrefix:(NSString *)aNamespacePrefix; 35 | - (void)setBeforeAllNodeWithCallSite:(KWCallSite *)aCallSite block:(void (^)(void))block; 36 | - (void)setAfterAllNodeWithCallSite:(KWCallSite *)aCallSite block:(void (^)(void))block; 37 | - (void)setBeforeEachNodeWithCallSite:(KWCallSite *)aCallSite block:(void (^)(void))block; 38 | - (void)setAfterEachNodeWithCallSite:(KWCallSite *)aCallSite block:(void (^)(void))block; 39 | - (void)addLetNodeWithCallSite:(KWCallSite *)aCallSite objectRef:(id *)anObjectRef symbolName:(NSString *)aSymbolName block:(id (^)(void))block; 40 | - (void)addItNodeWithCallSite:(KWCallSite *)aCallSite description:(NSString *)aDescription block:(void (^)(void))block; 41 | - (void)addPendingNodeWithCallSite:(KWCallSite *)aCallSite description:(NSString *)aDescription; 42 | 43 | - (BOOL)isFocused; 44 | - (BOOL)foundFocus; 45 | 46 | @end 47 | --------------------------------------------------------------------------------