├── .DS_Store
├── .gitignore
├── .idea
    ├── PPDemos.iml
    ├── modules.xml
    ├── vcs.xml
    ├── workspace.xml
    └── xcode.xml
├── LICENSE
├── PPDemo.xcodeproj
    ├── project.pbxproj
    └── project.xcworkspace
    │   ├── contents.xcworkspacedata
    │   └── xcshareddata
    │       └── IDEWorkspaceChecks.plist
├── PPDemo.xcworkspace
    ├── contents.xcworkspacedata
    └── xcshareddata
    │   └── IDEWorkspaceChecks.plist
├── PPDemo
    ├── .DS_Store
    ├── AppDelegate.h
    ├── AppDelegate.m
    ├── Assets.xcassets
    │   ├── .DS_Store
    │   ├── AccentColor.colorset
    │   │   └── Contents.json
    │   ├── AppIcon.appiconset
    │   │   └── Contents.json
    │   └── Contents.json
    ├── Base.lproj
    │   ├── LaunchScreen.storyboard
    │   └── Main.storyboard
    ├── Info.plist
    ├── MyLibs「我的开源库」
    │   ├── .DS_Store
    │   ├── MyLibsBaseTableViewController.h
    │   ├── MyLibsBaseTableViewController.m
    │   ├── PPCarousel「万能轮播」
    │   │   ├── PPCarouselBaseTableViewController.h
    │   │   └── PPCarouselBaseTableViewController.m
    │   ├── PPMaker「快速开发」
    │   │   ├── PPMakerBaseTableViewController.h
    │   │   ├── PPMakerBaseTableViewController.m
    │   │   └── PPMakerInfiniteLoopVerifyViewController
    │   │   │   ├── PPMakerInfiniteLoopVerifyViewController.h
    │   │   │   └── PPMakerInfiniteLoopVerifyViewController.m
    │   ├── PPTextField「设置各种输入限制」
    │   │   ├── PPTextFieldBaseTableViewController.h
    │   │   └── PPTextFieldBaseTableViewController.m
    │   └── VVStandardizedCode「标准化代码」
    │   │   ├── Examples
    │   │       ├── CollectionView
    │   │       │   └── SimpleDemo
    │   │       │   │   ├── VVSimpleCollectionDemoCell1.h
    │   │       │   │   ├── VVSimpleCollectionDemoCell1.m
    │   │       │   │   ├── VVSimpleCollectionDemoReusableView1.h
    │   │       │   │   ├── VVSimpleCollectionDemoReusableView1.m
    │   │       │   │   ├── VVSimpleCollectionDemoViewController.h
    │   │       │   │   └── VVSimpleCollectionDemoViewController.m
    │   │       ├── VVStandardizedCodeViewController.h
    │   │       └── VVStandardizedCodeViewController.m
    │   │   ├── VVAssert
    │   │       └── VVAssert.h
    │   │   ├── VVCollectionView
    │   │       ├── Protocol
    │   │       │   ├── VVCollectionCellProtocol.h
    │   │       │   ├── VVCollectionContainerProtocol.h
    │   │       │   ├── VVCollectionCustomLayoutProtocol.h
    │   │       │   ├── VVCollectionReusableViewProtocol.h
    │   │       │   ├── VVCollectionVMConfigProtocol.h
    │   │       │   ├── VVCollectionVMProtocol.h
    │   │       │   └── VVDecorationModelProtocol.h
    │   │       ├── View
    │   │       │   ├── VVBaseCollectionCell.h
    │   │       │   ├── VVBaseCollectionCell.m
    │   │       │   ├── VVBaseCollectionContainerView.h
    │   │       │   ├── VVBaseCollectionContainerView.m
    │   │       │   ├── VVBaseCollectionReusableView.h
    │   │       │   ├── VVBaseCollectionReusableView.m
    │   │       │   └── VVSimpleCollectionContainerView
    │   │       │   │   ├── VVSimpleCollectionContainerView.h
    │   │       │   │   └── VVSimpleCollectionContainerView.m
    │   │       └── ViewModel
    │   │       │   ├── VVBaseCollectionVM.h
    │   │       │   ├── VVBaseCollectionVM.m
    │   │       │   ├── VVBaseCollectionVMConfig.h
    │   │       │   └── VVBaseCollectionVMConfig.m
    │   │   ├── VVSCCommon
    │   │       ├── Model
    │   │       │   ├── VVBaseReuseVM.h
    │   │       │   ├── VVBaseReuseVM.m
    │   │       │   ├── VVBaseVM.h
    │   │       │   └── VVBaseVM.m
    │   │       └── Protocol
    │   │       │   ├── VVListVMProtocol.h
    │   │       │   ├── VVListViewProtocol.h
    │   │       │   ├── VVReuseModelProtocol.h
    │   │       │   ├── VVReuseViewProtocol.h
    │   │       │   ├── VVSectionModelProtocol.h
    │   │       │   └── VVViewProtocol.h
    │   │   └── VVSafe
    │   │       ├── VVSafe.h
    │   │       └── VVSafeArray.h
    ├── Notes「笔记&经验&杂谈」
    │   ├── .DS_Store
    │   ├── DevelopmentExperience「开发经验」
    │   │   └── 判断[tableView reloadData]结束.md
    │   ├── README.md
    │   └── SetOfMeat「干货集中营」
    │   │   └── 别人如此用心写的Blogs,岂能错过?怎敢浪费!.md
    ├── PPDemo-Bridging-Header.h
    ├── Person.swift
    ├── SceneDelegate.h
    ├── SceneDelegate.m
    ├── Summary「总览」
    │   ├── .DS_Store
    │   ├── Code Verification「实践是检验真理的唯一标准」
    │   │   ├── .DS_Store
    │   │   ├── CodeVerificationBaseTableViewController.h
    │   │   ├── CodeVerificationBaseTableViewController.m
    │   │   ├── UnderlyingInquiry「底层探究」
    │   │   │   ├── Block
    │   │   │   │   ├── Block实战
    │   │   │   │   │   ├── Block1ViewController.h
    │   │   │   │   │   ├── Block1ViewController.m
    │   │   │   │   │   ├── Block2ViewController.h
    │   │   │   │   │   └── Block2ViewController.m
    │   │   │   │   ├── Block的分类
    │   │   │   │   │   ├── CategoriesOfBlockViewController.h
    │   │   │   │   │   └── CategoriesOfBlockViewController.m
    │   │   │   │   ├── UI_BlockBaseTableViewController.h
    │   │   │   │   ├── UI_BlockBaseTableViewController.m
    │   │   │   │   └── __block
    │   │   │   │   │   ├── __blockViewController.cpp
    │   │   │   │   │   ├── __blockViewController.h
    │   │   │   │   │   └── __blockViewController.m
    │   │   │   ├── UnderlyingInquiryBaseTableViewController.h
    │   │   │   ├── UnderlyingInquiryBaseTableViewController.m
    │   │   │   ├── load和initialize
    │   │   │   │   ├── .DS_Store
    │   │   │   │   ├── Models
    │   │   │   │   │   ├── .DS_Store
    │   │   │   │   │   ├── CPPs
    │   │   │   │   │   │   └── person_one.cpp
    │   │   │   │   │   ├── LI_Man+One.h
    │   │   │   │   │   ├── LI_Man+One.m
    │   │   │   │   │   ├── LI_Man+Two.h
    │   │   │   │   │   ├── LI_Man+Two.m
    │   │   │   │   │   ├── LI_Man.h
    │   │   │   │   │   ├── LI_Man.m
    │   │   │   │   │   ├── LI_Person+One.h
    │   │   │   │   │   ├── LI_Person+One.m
    │   │   │   │   │   ├── LI_Person+Two.h
    │   │   │   │   │   ├── LI_Person+Two.m
    │   │   │   │   │   ├── LI_Person.h
    │   │   │   │   │   └── LI_Person.m
    │   │   │   │   ├── UI_LoadAndInitializeViewController.h
    │   │   │   │   └── UI_LoadAndInitializeViewController.m
    │   │   │   └── performSelector
    │   │   │   │   ├── PerformSelectorViewController.h
    │   │   │   │   └── PerformSelectorViewController.m
    │   │   ├── atomic
    │   │   │   ├── CV_AtomicViewController.h
    │   │   │   └── CV_AtomicViewController.m
    │   │   ├── layoutSubviews调用时机
    │   │   │   ├── CV_layoutSubviewsViewController.h
    │   │   │   ├── CV_layoutSubviewsViewController.m
    │   │   │   ├── LSCustomView.h
    │   │   │   └── LSCustomView.m
    │   │   └── 深拷贝和浅拷贝
    │   │   │   ├── CV_Coder.h
    │   │   │   ├── CV_Coder.m
    │   │   │   ├── CV_ObjectCopyingViewController.h
    │   │   │   └── CV_ObjectCopyingViewController.m
    │   ├── ExampleBaseUI
    │   │   ├── BaseTableViewController.h
    │   │   └── BaseTableViewController.m
    │   ├── Macros「宏」
    │   │   └── PPMacros.h
    │   ├── OpenSourceLibs「开源库」
    │   │   ├── Masonry
    │   │   │   ├── MasonryBaseTableViewController.h
    │   │   │   ├── MasonryBaseTableViewController.m
    │   │   │   ├── 两个view(前者隐藏,后者前移)
    │   │   │   │   ├── MAS_CommentModel.h
    │   │   │   │   ├── MAS_CommentModel.m
    │   │   │   │   ├── MAS_TwoViewHiddenViewController.h
    │   │   │   │   └── MAS_TwoViewHiddenViewController.m
    │   │   │   ├── 仿JD|TB商详跳转评价
    │   │   │   │   ├── MAS_JDGoodsDetailCommentViewController.h
    │   │   │   │   ├── MAS_JDGoodsDetailCommentViewController.m
    │   │   │   │   └── Views
    │   │   │   │   │   ├── MAS_JDGoodsDetailCommentListView.h
    │   │   │   │   │   ├── MAS_JDGoodsDetailCommentListView.m
    │   │   │   │   │   ├── MAS_JDGoodsDetailContainerView.h
    │   │   │   │   │   └── MAS_JDGoodsDetailContainerView.m
    │   │   │   └── 自动撑开
    │   │   │   │   ├── MAS_AutoSizeContentView.h
    │   │   │   │   ├── MAS_AutoSizeContentView.m
    │   │   │   │   ├── MAS_AutoSizeViewController.h
    │   │   │   │   └── MAS_AutoSizeViewController.m
    │   │   ├── OpenSourceLibsBaseTableViewController.h
    │   │   └── OpenSourceLibsBaseTableViewController.m
    │   ├── Other「其它」
    │   │   ├── OtherBaseTableViewController.h
    │   │   ├── OtherBaseTableViewController.m
    │   │   └── 单例「严谨的单例和可继承的单例」
    │   │   │   ├── Singleton.h
    │   │   │   ├── Singleton.m
    │   │   │   ├── SingletonViewController.h
    │   │   │   ├── SingletonViewController.m
    │   │   │   ├── SubSingleton.h
    │   │   │   └── SubSingleton.m
    │   ├── PPDemoDebugConfiguration.h
    │   ├── PPDemoDebugConfiguration.m
    │   ├── Special「专题」
    │   │   ├── CoreAnimation「核心动画」
    │   │   │   ├── CABasicAnimation
    │   │   │   │   ├── CABasicAnimationViewController.h
    │   │   │   │   └── CABasicAnimationViewController.m
    │   │   │   ├── CoreAnimationBaseTableViewController.h
    │   │   │   └── CoreAnimationBaseTableViewController.m
    │   │   ├── Metal
    │   │   │   ├── MetalBaseTableViewController.h
    │   │   │   └── MetalBaseTableViewController.m
    │   │   ├── MutipleThread「多线程」
    │   │   │   ├── GCD
    │   │   │   │   ├── 信号量
    │   │   │   │   │   ├── GCD_SemaphoreViewController.h
    │   │   │   │   │   ├── GCD_SemaphoreViewController.m
    │   │   │   │   │   └── 【GCD】信号量.md
    │   │   │   │   └── 栅栏函数
    │   │   │   │   │   ├── GCD_BarrierViewController.h
    │   │   │   │   │   ├── GCD_BarrierViewController.m
    │   │   │   │   │   └── 【GCD】栅栏函数.md
    │   │   │   ├── MutipleThreadBaseTableViewController.h
    │   │   │   ├── MutipleThreadBaseTableViewController.m
    │   │   │   └── 锁
    │   │   │   │   ├── LockBaseTableViewController.h
    │   │   │   │   ├── LockBaseTableViewController.m
    │   │   │   │   ├── dispatch_semaphore_ViewController.h
    │   │   │   │   └── dispatch_semaphore_ViewController.m
    │   │   ├── OpenGL ES
    │   │   │   ├── OpenGLESBaseTableViewController.h
    │   │   │   └── OpenGLESBaseTableViewController.m
    │   │   ├── SpecialBaseTableViewController.h
    │   │   └── SpecialBaseTableViewController.m
    │   ├── Swift
    │   │   ├── Closure(闭包).swift
    │   │   ├── Function(函数).swift
    │   │   ├── SwiftBaseTableViewController.h
    │   │   └── SwiftBaseTableViewController.m
    │   ├── SystemAPI「系统API」
    │   │   ├── ContextMenus「iOS 13.0」
    │   │   │   ├── ContextMenusViewController.h
    │   │   │   └── ContextMenusViewController.m
    │   │   ├── SystemAPIBaseTableViewController.h
    │   │   ├── SystemAPIBaseTableViewController.m
    │   │   ├── UICollectionView
    │   │   │   ├── FlowLayout
    │   │   │   │   ├── MinimumXXSpacingViewController.h
    │   │   │   │   └── MinimumXXSpacingViewController.m
    │   │   │   ├── UICollectionViewBaseTableViewController.h
    │   │   │   └── UICollectionViewBaseTableViewController.m
    │   │   ├── WebKit
    │   │   │   ├── API简单使用
    │   │   │   │   ├── JSContextAndJSValueViewController.h
    │   │   │   │   └── JSContextAndJSValueViewController.m
    │   │   │   ├── WebKitBaseTableViewController.h
    │   │   │   └── WebKitBaseTableViewController.m
    │   │   └── 多线程
    │   │   │   ├── MultiThreadingBaseTableViewController.h
    │   │   │   ├── MultiThreadingBaseTableViewController.m
    │   │   │   └── NSOperation
    │   │   │       ├── NSOperationViewController.h
    │   │   │       └── NSOperationViewController.m
    │   ├── iOS基础知识
    │   │   ├── iOSBasicKnowledgeBaseTableViewController.h
    │   │   ├── iOSBasicKnowledgeBaseTableViewController.m
    │   │   ├── layoutSubviews_setNeedsLayout_layoutIfNeeded
    │   │   │   ├── LS_SNL_LIN_ViewController.h
    │   │   │   └── LS_SNL_LIN_ViewController.m
    │   │   ├── 一个界面2次present
    │   │   │   ├── One2PresentFirstViewController.h
    │   │   │   ├── One2PresentFirstViewController.m
    │   │   │   ├── One2PresentOneViewController.h
    │   │   │   ├── One2PresentOneViewController.m
    │   │   │   ├── One2PresentSecondViewController.h
    │   │   │   └── One2PresentSecondViewController.m
    │   │   └── 点语法与—>的区别
    │   │   │   ├── PGLAStudent.h
    │   │   │   ├── PGLAStudent.m
    │   │   │   ├── PointGrammarAndLineArrowViewController.h
    │   │   │   └── PointGrammarAndLineArrowViewController.m
    │   └── 拓展学习,夯实基础
    │   │   ├── .DS_Store
    │   │   └── DesignPattern「设计模式」
    │   │       └── 职责链模式「Chain of responsibility」
    │   │           └── 【设计模式】职责链模式.md
    ├── ViewController.h
    ├── ViewController.m
    └── main.m
├── PPDemoTests
    ├── Info.plist
    └── PPDemoTests.m
├── PPDemoUITests
    ├── Info.plist
    └── PPDemoUITests.m
├── Podfile
├── Podfile.lock
└── Pods
    ├── .DS_Store
    ├── AFNetworking
        ├── AFNetworking
        │   ├── AFCompatibilityMacros.h
        │   ├── AFHTTPSessionManager.h
        │   ├── AFHTTPSessionManager.m
        │   ├── AFNetworkReachabilityManager.h
        │   ├── AFNetworkReachabilityManager.m
        │   ├── AFNetworking.h
        │   ├── AFSecurityPolicy.h
        │   ├── AFSecurityPolicy.m
        │   ├── AFURLRequestSerialization.h
        │   ├── AFURLRequestSerialization.m
        │   ├── AFURLResponseSerialization.h
        │   ├── AFURLResponseSerialization.m
        │   ├── AFURLSessionManager.h
        │   └── AFURLSessionManager.m
        ├── LICENSE
        ├── README.md
        └── UIKit+AFNetworking
        │   ├── AFAutoPurgingImageCache.h
        │   ├── AFAutoPurgingImageCache.m
        │   ├── AFImageDownloader.h
        │   ├── AFImageDownloader.m
        │   ├── AFNetworkActivityIndicatorManager.h
        │   ├── AFNetworkActivityIndicatorManager.m
        │   ├── UIActivityIndicatorView+AFNetworking.h
        │   ├── UIActivityIndicatorView+AFNetworking.m
        │   ├── UIButton+AFNetworking.h
        │   ├── UIButton+AFNetworking.m
        │   ├── UIImageView+AFNetworking.h
        │   ├── UIImageView+AFNetworking.m
        │   ├── UIKit+AFNetworking.h
        │   ├── UIProgressView+AFNetworking.h
        │   ├── UIProgressView+AFNetworking.m
        │   ├── UIRefreshControl+AFNetworking.h
        │   ├── UIRefreshControl+AFNetworking.m
        │   ├── WKWebView+AFNetworking.h
        │   └── WKWebView+AFNetworking.m
    ├── Local Podspecs
        ├── PPTextField.podspec.json
        └── SDWebImage.podspec.json
    ├── MJExtension
        ├── LICENSE
        ├── MJExtension
        │   ├── MJExtension.h
        │   ├── MJExtensionConst.h
        │   ├── MJExtensionConst.m
        │   ├── MJFoundation.h
        │   ├── MJFoundation.m
        │   ├── MJProperty.h
        │   ├── MJProperty.m
        │   ├── MJPropertyKey.h
        │   ├── MJPropertyKey.m
        │   ├── MJPropertyType.h
        │   ├── MJPropertyType.m
        │   ├── NSObject+MJClass.h
        │   ├── NSObject+MJClass.m
        │   ├── NSObject+MJCoding.h
        │   ├── NSObject+MJCoding.m
        │   ├── NSObject+MJKeyValue.h
        │   ├── NSObject+MJKeyValue.m
        │   ├── NSObject+MJProperty.h
        │   ├── NSObject+MJProperty.m
        │   ├── NSString+MJExtension.h
        │   └── NSString+MJExtension.m
        └── README.md
    ├── MJRefresh
        ├── LICENSE
        ├── MJRefresh
        │   ├── Base
        │   │   ├── MJRefreshAutoFooter.h
        │   │   ├── MJRefreshAutoFooter.m
        │   │   ├── MJRefreshBackFooter.h
        │   │   ├── MJRefreshBackFooter.m
        │   │   ├── MJRefreshComponent.h
        │   │   ├── MJRefreshComponent.m
        │   │   ├── MJRefreshFooter.h
        │   │   ├── MJRefreshFooter.m
        │   │   ├── MJRefreshHeader.h
        │   │   ├── MJRefreshHeader.m
        │   │   ├── MJRefreshTrailer.h
        │   │   └── MJRefreshTrailer.m
        │   ├── Custom
        │   │   ├── Footer
        │   │   │   ├── Auto
        │   │   │   │   ├── MJRefreshAutoGifFooter.h
        │   │   │   │   ├── MJRefreshAutoGifFooter.m
        │   │   │   │   ├── MJRefreshAutoNormalFooter.h
        │   │   │   │   ├── MJRefreshAutoNormalFooter.m
        │   │   │   │   ├── MJRefreshAutoStateFooter.h
        │   │   │   │   └── MJRefreshAutoStateFooter.m
        │   │   │   └── Back
        │   │   │   │   ├── MJRefreshBackGifFooter.h
        │   │   │   │   ├── MJRefreshBackGifFooter.m
        │   │   │   │   ├── MJRefreshBackNormalFooter.h
        │   │   │   │   ├── MJRefreshBackNormalFooter.m
        │   │   │   │   ├── MJRefreshBackStateFooter.h
        │   │   │   │   └── MJRefreshBackStateFooter.m
        │   │   ├── Header
        │   │   │   ├── MJRefreshGifHeader.h
        │   │   │   ├── MJRefreshGifHeader.m
        │   │   │   ├── MJRefreshNormalHeader.h
        │   │   │   ├── MJRefreshNormalHeader.m
        │   │   │   ├── MJRefreshStateHeader.h
        │   │   │   └── MJRefreshStateHeader.m
        │   │   └── Trailer
        │   │   │   ├── MJRefreshNormalTrailer.h
        │   │   │   ├── MJRefreshNormalTrailer.m
        │   │   │   ├── MJRefreshStateTrailer.h
        │   │   │   └── MJRefreshStateTrailer.m
        │   ├── MJRefresh.bundle
        │   │   ├── arrow@2x.png
        │   │   ├── en.lproj
        │   │   │   └── Localizable.strings
        │   │   ├── ko.lproj
        │   │   │   └── Localizable.strings
        │   │   ├── ru.lproj
        │   │   │   └── Localizable.strings
        │   │   ├── trail_arrow@2x.png
        │   │   ├── uk.lproj
        │   │   │   └── Localizable.strings
        │   │   ├── zh-Hans.lproj
        │   │   │   └── Localizable.strings
        │   │   └── zh-Hant.lproj
        │   │   │   └── Localizable.strings
        │   ├── MJRefresh.h
        │   ├── MJRefreshConfig.h
        │   ├── MJRefreshConfig.m
        │   ├── MJRefreshConst.h
        │   ├── MJRefreshConst.m
        │   ├── NSBundle+MJRefresh.h
        │   ├── NSBundle+MJRefresh.m
        │   ├── UIScrollView+MJExtension.h
        │   ├── UIScrollView+MJExtension.m
        │   ├── UIScrollView+MJRefresh.h
        │   ├── UIScrollView+MJRefresh.m
        │   ├── UIView+MJExtension.h
        │   └── UIView+MJExtension.m
        └── README.md
    ├── Manifest.lock
    ├── Masonry
        ├── LICENSE
        ├── Masonry
        │   ├── MASCompositeConstraint.h
        │   ├── MASCompositeConstraint.m
        │   ├── MASConstraint+Private.h
        │   ├── MASConstraint.h
        │   ├── MASConstraint.m
        │   ├── MASConstraintMaker.h
        │   ├── MASConstraintMaker.m
        │   ├── MASLayoutConstraint.h
        │   ├── MASLayoutConstraint.m
        │   ├── MASUtilities.h
        │   ├── MASViewAttribute.h
        │   ├── MASViewAttribute.m
        │   ├── MASViewConstraint.h
        │   ├── MASViewConstraint.m
        │   ├── Masonry.h
        │   ├── NSArray+MASAdditions.h
        │   ├── NSArray+MASAdditions.m
        │   ├── NSArray+MASShorthandAdditions.h
        │   ├── NSLayoutConstraint+MASDebugAdditions.h
        │   ├── NSLayoutConstraint+MASDebugAdditions.m
        │   ├── View+MASAdditions.h
        │   ├── View+MASAdditions.m
        │   ├── View+MASShorthandAdditions.h
        │   ├── ViewController+MASAdditions.h
        │   └── ViewController+MASAdditions.m
        └── README.md
    ├── PPMaker
        ├── LICENSE
        ├── PPMaker
        │   ├── PPMake
        │   │   ├── PPMake+UIButton.h
        │   │   ├── PPMake+UIButton.m
        │   │   ├── PPMake+UIImageView.h
        │   │   ├── PPMake+UIImageView.m
        │   │   ├── PPMake+UILabel.h
        │   │   ├── PPMake+UILabel.m
        │   │   ├── PPMake+UITableView.h
        │   │   ├── PPMake+UITableView.m
        │   │   ├── PPMake.h
        │   │   └── PPMake.m
        │   ├── PPMakeCategory
        │   │   ├── Foundation
        │   │   │   ├── NSDate
        │   │   │   │   ├── NSDate+PPMakeSupport.h
        │   │   │   │   ├── NSDate+PPMakeSupport.m
        │   │   │   │   ├── NSDate+Timestamp.h
        │   │   │   │   ├── NSDate+Timestamp.m
        │   │   │   │   ├── NSDateFormatterStyleConst.h
        │   │   │   │   └── NSDateFormatterStyleConst.m
        │   │   │   ├── NSMutableArray
        │   │   │   │   ├── NSMutableArray+PPMakeSupport.h
        │   │   │   │   └── NSMutableArray+PPMakeSupport.m
        │   │   │   ├── NSMutableAttributedString
        │   │   │   │   ├── NSMutableAttributedString+PPMakeSupport.h
        │   │   │   │   └── NSMutableAttributedString+PPMakeSupport.m
        │   │   │   ├── NSObject
        │   │   │   │   ├── NSObject+PPMakeSupport.h
        │   │   │   │   └── NSObject+PPMakeSupport.m
        │   │   │   ├── NSString
        │   │   │   │   ├── NSString+PPMakeSupport.h
        │   │   │   │   ├── NSString+PPMakeSupport.m
        │   │   │   │   ├── NSString+PPMakeSupport_Unicode.h
        │   │   │   │   └── NSString+PPMakeSupport_Unicode.m
        │   │   │   └── PPMakeFoundationCategory.h
        │   │   ├── PPMakeCategory.h
        │   │   └── UIKit
        │   │   │   ├── PPMakeUIKitCategory.h
        │   │   │   ├── UIButton
        │   │   │       ├── UIButton+PPMakeSupport.h
        │   │   │       └── UIButton+PPMakeSupport.m
        │   │   │   ├── UIColor
        │   │   │       ├── UIColor+PPMakeSupport.h
        │   │   │       └── UIColor+PPMakeSupport.m
        │   │   │   ├── UIDevice
        │   │   │       ├── UIDevice+PPMakeSupport.h
        │   │   │       └── UIDevice+PPMakeSupport.m
        │   │   │   ├── UIImage
        │   │   │       ├── UIImage+PPMakeSupport.h
        │   │   │       └── UIImage+PPMakeSupport.m
        │   │   │   ├── UIScrollView
        │   │   │       ├── UIScrollView+ScrollBlock.h
        │   │   │       └── UIScrollView+ScrollBlock.m
        │   │   │   ├── UITableView
        │   │   │       ├── UITableView+PPMakeDidSelectedBlock.h
        │   │   │       ├── UITableView+PPMakeDidSelectedBlock.m
        │   │   │       ├── UITableView+PPMakeSupport.h
        │   │   │       └── UITableView+PPMakeSupport.m
        │   │   │   ├── UITableViewCell
        │   │   │       ├── UITableViewCell+PPMakeSupport.h
        │   │   │       └── UITableViewCell+PPMakeSupport.m
        │   │   │   ├── UIView
        │   │   │       ├── UIView+HandyFrame.h
        │   │   │       ├── UIView+HandyFrame.m
        │   │   │       ├── UIView+PPMakeSupport.h
        │   │   │       ├── UIView+PPMakeSupport.m
        │   │   │       ├── UIView+PPMakeSupportCornerAndShadow.h
        │   │   │       └── UIView+PPMakeSupportCornerAndShadow.m
        │   │   │   └── UIViewController
        │   │   │       ├── UIViewController+UIScreenBrightness.h
        │   │   │       └── UIViewController+UIScreenBrightness.m
        │   ├── PPMaker.h
        │   └── PPToolMaker
        │   │   ├── PPTool.h
        │   │   └── PPTool.m
        └── README.md
    ├── PPTextField
        ├── LICENSE
        ├── PPTextField
        │   ├── NSString+PPTextField.h
        │   ├── NSString+PPTextField.m
        │   ├── PPTextField.h
        │   ├── PPTextField.m
        │   ├── PPTextFieldAssistant.h
        │   └── PPTextFieldAssistant.m
        └── README.md
    ├── Pods.xcodeproj
        └── project.pbxproj
    ├── SDWebImage
        ├── LICENSE
        ├── README.md
        ├── SDWebImage
        │   ├── Core
        │   │   ├── NSButton+WebCache.h
        │   │   ├── NSButton+WebCache.m
        │   │   ├── NSData+ImageContentType.h
        │   │   ├── NSData+ImageContentType.m
        │   │   ├── NSImage+Compatibility.h
        │   │   ├── NSImage+Compatibility.m
        │   │   ├── SDAnimatedImage.h
        │   │   ├── SDAnimatedImage.m
        │   │   ├── SDAnimatedImagePlayer.h
        │   │   ├── SDAnimatedImagePlayer.m
        │   │   ├── SDAnimatedImageRep.h
        │   │   ├── SDAnimatedImageRep.m
        │   │   ├── SDAnimatedImageView+WebCache.h
        │   │   ├── SDAnimatedImageView+WebCache.m
        │   │   ├── SDAnimatedImageView.h
        │   │   ├── SDAnimatedImageView.m
        │   │   ├── SDDiskCache.h
        │   │   ├── SDDiskCache.m
        │   │   ├── SDGraphicsImageRenderer.h
        │   │   ├── SDGraphicsImageRenderer.m
        │   │   ├── SDImageAPNGCoder.h
        │   │   ├── SDImageAPNGCoder.m
        │   │   ├── SDImageAWebPCoder.h
        │   │   ├── SDImageAWebPCoder.m
        │   │   ├── SDImageCache.h
        │   │   ├── SDImageCache.m
        │   │   ├── SDImageCacheConfig.h
        │   │   ├── SDImageCacheConfig.m
        │   │   ├── SDImageCacheDefine.h
        │   │   ├── SDImageCacheDefine.m
        │   │   ├── SDImageCachesManager.h
        │   │   ├── SDImageCachesManager.m
        │   │   ├── SDImageCoder.h
        │   │   ├── SDImageCoder.m
        │   │   ├── SDImageCoderHelper.h
        │   │   ├── SDImageCoderHelper.m
        │   │   ├── SDImageCodersManager.h
        │   │   ├── SDImageCodersManager.m
        │   │   ├── SDImageFrame.h
        │   │   ├── SDImageFrame.m
        │   │   ├── SDImageGIFCoder.h
        │   │   ├── SDImageGIFCoder.m
        │   │   ├── SDImageGraphics.h
        │   │   ├── SDImageGraphics.m
        │   │   ├── SDImageHEICCoder.h
        │   │   ├── SDImageHEICCoder.m
        │   │   ├── SDImageIOAnimatedCoder.h
        │   │   ├── SDImageIOAnimatedCoder.m
        │   │   ├── SDImageIOCoder.h
        │   │   ├── SDImageIOCoder.m
        │   │   ├── SDImageLoader.h
        │   │   ├── SDImageLoader.m
        │   │   ├── SDImageLoadersManager.h
        │   │   ├── SDImageLoadersManager.m
        │   │   ├── SDImageTransformer.h
        │   │   ├── SDImageTransformer.m
        │   │   ├── SDMemoryCache.h
        │   │   ├── SDMemoryCache.m
        │   │   ├── SDWebImageCacheKeyFilter.h
        │   │   ├── SDWebImageCacheKeyFilter.m
        │   │   ├── SDWebImageCacheSerializer.h
        │   │   ├── SDWebImageCacheSerializer.m
        │   │   ├── SDWebImageCompat.h
        │   │   ├── SDWebImageCompat.m
        │   │   ├── SDWebImageDefine.h
        │   │   ├── SDWebImageDefine.m
        │   │   ├── SDWebImageDownloader.h
        │   │   ├── SDWebImageDownloader.m
        │   │   ├── SDWebImageDownloaderConfig.h
        │   │   ├── SDWebImageDownloaderConfig.m
        │   │   ├── SDWebImageDownloaderDecryptor.h
        │   │   ├── SDWebImageDownloaderDecryptor.m
        │   │   ├── SDWebImageDownloaderOperation.h
        │   │   ├── SDWebImageDownloaderOperation.m
        │   │   ├── SDWebImageDownloaderRequestModifier.h
        │   │   ├── SDWebImageDownloaderRequestModifier.m
        │   │   ├── SDWebImageDownloaderResponseModifier.h
        │   │   ├── SDWebImageDownloaderResponseModifier.m
        │   │   ├── SDWebImageError.h
        │   │   ├── SDWebImageError.m
        │   │   ├── SDWebImageIndicator.h
        │   │   ├── SDWebImageIndicator.m
        │   │   ├── SDWebImageManager.h
        │   │   ├── SDWebImageManager.m
        │   │   ├── SDWebImageOperation.h
        │   │   ├── SDWebImageOperation.m
        │   │   ├── SDWebImageOptionsProcessor.h
        │   │   ├── SDWebImageOptionsProcessor.m
        │   │   ├── SDWebImagePrefetcher.h
        │   │   ├── SDWebImagePrefetcher.m
        │   │   ├── SDWebImageTransition.h
        │   │   ├── SDWebImageTransition.m
        │   │   ├── UIButton+WebCache.h
        │   │   ├── UIButton+WebCache.m
        │   │   ├── UIImage+ExtendedCacheData.h
        │   │   ├── UIImage+ExtendedCacheData.m
        │   │   ├── UIImage+ForceDecode.h
        │   │   ├── UIImage+ForceDecode.m
        │   │   ├── UIImage+GIF.h
        │   │   ├── UIImage+GIF.m
        │   │   ├── UIImage+MemoryCacheCost.h
        │   │   ├── UIImage+MemoryCacheCost.m
        │   │   ├── UIImage+Metadata.h
        │   │   ├── UIImage+Metadata.m
        │   │   ├── UIImage+MultiFormat.h
        │   │   ├── UIImage+MultiFormat.m
        │   │   ├── UIImage+Transform.h
        │   │   ├── UIImage+Transform.m
        │   │   ├── UIImageView+HighlightedWebCache.h
        │   │   ├── UIImageView+HighlightedWebCache.m
        │   │   ├── UIImageView+WebCache.h
        │   │   ├── UIImageView+WebCache.m
        │   │   ├── UIView+WebCache.h
        │   │   ├── UIView+WebCache.m
        │   │   ├── UIView+WebCacheOperation.h
        │   │   └── UIView+WebCacheOperation.m
        │   └── Private
        │   │   ├── NSBezierPath+SDRoundedCorners.h
        │   │   ├── NSBezierPath+SDRoundedCorners.m
        │   │   ├── SDAssociatedObject.h
        │   │   ├── SDAssociatedObject.m
        │   │   ├── SDAsyncBlockOperation.h
        │   │   ├── SDAsyncBlockOperation.m
        │   │   ├── SDDeviceHelper.h
        │   │   ├── SDDeviceHelper.m
        │   │   ├── SDDisplayLink.h
        │   │   ├── SDDisplayLink.m
        │   │   ├── SDFileAttributeHelper.h
        │   │   ├── SDFileAttributeHelper.m
        │   │   ├── SDImageAssetManager.h
        │   │   ├── SDImageAssetManager.m
        │   │   ├── SDImageCachesManagerOperation.h
        │   │   ├── SDImageCachesManagerOperation.m
        │   │   ├── SDImageIOAnimatedCoderInternal.h
        │   │   ├── SDInternalMacros.h
        │   │   ├── SDInternalMacros.m
        │   │   ├── SDWeakProxy.h
        │   │   ├── SDWeakProxy.m
        │   │   ├── SDWebImageTransitionInternal.h
        │   │   ├── SDmetamacros.h
        │   │   ├── UIColor+SDHexString.h
        │   │   └── UIColor+SDHexString.m
        └── WebImage
        │   └── SDWebImage.h
    ├── SQLiteRepairKit
        ├── LICENSE
        ├── README.md
        └── repair
        │   ├── SQLiteRepairKit.h
        │   ├── sqliterk.c
        │   ├── sqliterk.h
        │   ├── sqliterk_api.c
        │   ├── sqliterk_btree.c
        │   ├── sqliterk_btree.h
        │   ├── sqliterk_column.c
        │   ├── sqliterk_column.h
        │   ├── sqliterk_crypto.c
        │   ├── sqliterk_crypto.h
        │   ├── sqliterk_os.c
        │   ├── sqliterk_os.h
        │   ├── sqliterk_output.cpp
        │   ├── sqliterk_pager.c
        │   ├── sqliterk_pager.h
        │   ├── sqliterk_util.c
        │   ├── sqliterk_util.h
        │   ├── sqliterk_values.c
        │   └── sqliterk_values.h
    ├── Target Support Files
        ├── .DS_Store
        ├── AFNetworking
        │   ├── AFNetworking-Info.plist
        │   ├── AFNetworking-dummy.m
        │   ├── AFNetworking-prefix.pch
        │   ├── AFNetworking-umbrella.h
        │   ├── AFNetworking.debug.xcconfig
        │   ├── AFNetworking.modulemap
        │   └── AFNetworking.release.xcconfig
        ├── MJExtension
        │   ├── MJExtension-Info.plist
        │   ├── MJExtension-dummy.m
        │   ├── MJExtension-prefix.pch
        │   ├── MJExtension-umbrella.h
        │   ├── MJExtension.debug.xcconfig
        │   ├── MJExtension.modulemap
        │   └── MJExtension.release.xcconfig
        ├── MJRefresh
        │   ├── MJRefresh-Info.plist
        │   ├── MJRefresh-dummy.m
        │   ├── MJRefresh-prefix.pch
        │   ├── MJRefresh-umbrella.h
        │   ├── MJRefresh.debug.xcconfig
        │   ├── MJRefresh.modulemap
        │   └── MJRefresh.release.xcconfig
        ├── Masonry
        │   ├── Masonry-Info.plist
        │   ├── Masonry-dummy.m
        │   ├── Masonry-prefix.pch
        │   ├── Masonry-umbrella.h
        │   ├── Masonry.debug.xcconfig
        │   ├── Masonry.modulemap
        │   └── Masonry.release.xcconfig
        ├── PPMaker
        │   ├── PPMaker-Info.plist
        │   ├── PPMaker-dummy.m
        │   ├── PPMaker-prefix.pch
        │   ├── PPMaker-umbrella.h
        │   ├── PPMaker.debug.xcconfig
        │   ├── PPMaker.modulemap
        │   └── PPMaker.release.xcconfig
        ├── PPTextField
        │   ├── PPTextField-Info.plist
        │   ├── PPTextField-dummy.m
        │   ├── PPTextField-prefix.pch
        │   ├── PPTextField-umbrella.h
        │   ├── PPTextField.debug.xcconfig
        │   ├── PPTextField.modulemap
        │   └── PPTextField.release.xcconfig
        ├── Pods-PPDemo
        │   ├── Pods-PPDemo-Info.plist
        │   ├── Pods-PPDemo-acknowledgements.markdown
        │   ├── Pods-PPDemo-acknowledgements.plist
        │   ├── Pods-PPDemo-dummy.m
        │   ├── Pods-PPDemo-frameworks-Debug-input-files.xcfilelist
        │   ├── Pods-PPDemo-frameworks-Debug-output-files.xcfilelist
        │   ├── Pods-PPDemo-frameworks-Release-input-files.xcfilelist
        │   ├── Pods-PPDemo-frameworks-Release-output-files.xcfilelist
        │   ├── Pods-PPDemo-frameworks.sh
        │   ├── Pods-PPDemo-umbrella.h
        │   ├── Pods-PPDemo.debug.xcconfig
        │   ├── Pods-PPDemo.modulemap
        │   └── Pods-PPDemo.release.xcconfig
        ├── SDWebImage
        │   ├── SDWebImage-Info.plist
        │   ├── SDWebImage-dummy.m
        │   ├── SDWebImage-prefix.pch
        │   ├── SDWebImage-umbrella.h
        │   ├── SDWebImage.debug.xcconfig
        │   ├── SDWebImage.modulemap
        │   └── SDWebImage.release.xcconfig
        ├── SQLiteRepairKit
        │   ├── SQLiteRepairKit-Info.plist
        │   ├── SQLiteRepairKit-dummy.m
        │   ├── SQLiteRepairKit-prefix.pch
        │   ├── SQLiteRepairKit-umbrella.h
        │   ├── SQLiteRepairKit.debug.xcconfig
        │   ├── SQLiteRepairKit.modulemap
        │   └── SQLiteRepairKit.release.xcconfig
        ├── Toast
        │   ├── Toast-Info.plist
        │   ├── Toast-dummy.m
        │   ├── Toast-prefix.pch
        │   ├── Toast-umbrella.h
        │   ├── Toast.debug.xcconfig
        │   ├── Toast.modulemap
        │   └── Toast.release.xcconfig
        ├── WCDB
        │   ├── WCDB-Info.plist
        │   ├── WCDB-dummy.m
        │   ├── WCDB-prefix.pch
        │   ├── WCDB-umbrella.h
        │   ├── WCDB.debug.xcconfig
        │   ├── WCDB.modulemap
        │   └── WCDB.release.xcconfig
        ├── WCDBOptimizedSQLCipher
        │   ├── WCDBOptimizedSQLCipher-Info.plist
        │   ├── WCDBOptimizedSQLCipher-dummy.m
        │   ├── WCDBOptimizedSQLCipher-prefix.pch
        │   ├── WCDBOptimizedSQLCipher-umbrella.h
        │   ├── WCDBOptimizedSQLCipher.debug.xcconfig
        │   ├── WCDBOptimizedSQLCipher.modulemap
        │   └── WCDBOptimizedSQLCipher.release.xcconfig
        ├── YTKNetwork
        │   ├── YTKNetwork-Info.plist
        │   ├── YTKNetwork-dummy.m
        │   ├── YTKNetwork-prefix.pch
        │   ├── YTKNetwork-umbrella.h
        │   ├── YTKNetwork.debug.xcconfig
        │   ├── YTKNetwork.modulemap
        │   └── YTKNetwork.release.xcconfig
        └── YYKit
        │   ├── YYKit-Info.plist
        │   ├── YYKit-dummy.m
        │   ├── YYKit-prefix.pch
        │   ├── YYKit-umbrella.h
        │   ├── YYKit.debug.xcconfig
        │   ├── YYKit.modulemap
        │   └── YYKit.release.xcconfig
    ├── Toast
        ├── README.md
        ├── Toast-Framework
        │   └── Toast.h
        ├── Toast
        │   ├── UIView+Toast.h
        │   └── UIView+Toast.m
        └── license
    ├── WCDB
        ├── LICENSE
        ├── README.md
        └── objc
        │   └── WCDB
        │       ├── WCDB.h
        │       ├── abstract
        │           ├── abstract.h
        │           ├── clause_join.cpp
        │           ├── clause_join.hpp
        │           ├── column.cpp
        │           ├── column.hpp
        │           ├── column_def.cpp
        │           ├── column_def.hpp
        │           ├── column_index.cpp
        │           ├── column_index.hpp
        │           ├── column_result.cpp
        │           ├── column_result.hpp
        │           ├── column_type.cpp
        │           ├── column_type.hpp
        │           ├── conflict.cpp
        │           ├── conflict.hpp
        │           ├── constraint_table.cpp
        │           ├── constraint_table.hpp
        │           ├── declare.hpp
        │           ├── describable.cpp
        │           ├── describable.hpp
        │           ├── expr.cpp
        │           ├── expr.hpp
        │           ├── foreign_key.cpp
        │           ├── foreign_key.hpp
        │           ├── fts_module.cpp
        │           ├── fts_module.hpp
        │           ├── fts_modules.cpp
        │           ├── fts_modules.hpp
        │           ├── handle.cpp
        │           ├── handle.hpp
        │           ├── handle_statement.cpp
        │           ├── handle_statement.hpp
        │           ├── literal_value.cpp
        │           ├── literal_value.hpp
        │           ├── module_argument.cpp
        │           ├── module_argument.hpp
        │           ├── order.cpp
        │           ├── order.hpp
        │           ├── order_term.cpp
        │           ├── order_term.hpp
        │           ├── pragma.cpp
        │           ├── pragma.hpp
        │           ├── statement.cpp
        │           ├── statement.hpp
        │           ├── statement_alter_table.cpp
        │           ├── statement_alter_table.hpp
        │           ├── statement_attach.cpp
        │           ├── statement_attach.hpp
        │           ├── statement_create_index.cpp
        │           ├── statement_create_index.hpp
        │           ├── statement_create_table.cpp
        │           ├── statement_create_table.hpp
        │           ├── statement_create_virtual_table.cpp
        │           ├── statement_create_virtual_table.hpp
        │           ├── statement_delete.cpp
        │           ├── statement_delete.hpp
        │           ├── statement_detach.cpp
        │           ├── statement_detach.hpp
        │           ├── statement_drop_index.cpp
        │           ├── statement_drop_index.hpp
        │           ├── statement_drop_table.cpp
        │           ├── statement_drop_table.hpp
        │           ├── statement_explain.cpp
        │           ├── statement_explain.hpp
        │           ├── statement_insert.cpp
        │           ├── statement_insert.hpp
        │           ├── statement_pragma.cpp
        │           ├── statement_pragma.hpp
        │           ├── statement_reindex.cpp
        │           ├── statement_reindex.hpp
        │           ├── statement_release.cpp
        │           ├── statement_release.hpp
        │           ├── statement_rollback.cpp
        │           ├── statement_rollback.hpp
        │           ├── statement_savepoint.cpp
        │           ├── statement_savepoint.hpp
        │           ├── statement_select.cpp
        │           ├── statement_select.hpp
        │           ├── statement_transaction.cpp
        │           ├── statement_transaction.hpp
        │           ├── statement_update.cpp
        │           ├── statement_update.hpp
        │           ├── statement_vacuum.cpp
        │           ├── statement_vacuum.hpp
        │           ├── subquery.cpp
        │           └── subquery.hpp
        │       ├── core
        │           ├── config.cpp
        │           ├── config.hpp
        │           ├── core_base.cpp
        │           ├── core_base.hpp
        │           ├── database.cpp
        │           ├── database.hpp
        │           ├── database_config.cpp
        │           ├── database_file.cpp
        │           ├── database_repair_kit.cpp
        │           ├── database_sql.cpp
        │           ├── database_transaction.cpp
        │           ├── handle_pool.cpp
        │           ├── handle_pool.hpp
        │           ├── handle_recyclable.cpp
        │           ├── handle_recyclable.hpp
        │           ├── statement_recyclable.cpp
        │           ├── statement_recyclable.hpp
        │           ├── tokenizer.cpp
        │           ├── tokenizer.hpp
        │           ├── transaction.cpp
        │           └── transaction.hpp
        │       ├── interface
        │           ├── builtin
        │           │   ├── NSData+WCTColumnCoding.mm
        │           │   ├── NSDate+WCTColumnCoding.mm
        │           │   ├── NSNumber+WCTColumnCoding.mm
        │           │   ├── NSObject+WCTColumnCoding.mm
        │           │   ├── NSString+WCTColumnCoding.mm
        │           │   ├── WCTMaster+WCTTableCoding.h
        │           │   ├── WCTMaster.h
        │           │   ├── WCTMaster.mm
        │           │   ├── WCTSequence+WCTTableCoding.h
        │           │   ├── WCTSequence.h
        │           │   └── WCTSequence.mm
        │           ├── chaincall
        │           │   ├── WCTChainCall+Private.h
        │           │   ├── WCTChainCall.h
        │           │   ├── WCTChainCall.mm
        │           │   ├── WCTDelete+Private.h
        │           │   ├── WCTDelete.h
        │           │   ├── WCTDelete.mm
        │           │   ├── WCTInsert+Private.h
        │           │   ├── WCTInsert.h
        │           │   ├── WCTInsert.mm
        │           │   ├── WCTInterface+ChainCall.h
        │           │   ├── WCTInterface+ChainCall.mm
        │           │   ├── WCTMultiSelect+Private.h
        │           │   ├── WCTMultiSelect.h
        │           │   ├── WCTMultiSelect.mm
        │           │   ├── WCTRowSelect+Private.h
        │           │   ├── WCTRowSelect.h
        │           │   ├── WCTRowSelect.mm
        │           │   ├── WCTSelect+Private.h
        │           │   ├── WCTSelect.h
        │           │   ├── WCTSelect.mm
        │           │   ├── WCTSelectBase+NoARC.h
        │           │   ├── WCTSelectBase+NoARC.mm
        │           │   ├── WCTSelectBase+Private.h
        │           │   ├── WCTSelectBase.h
        │           │   ├── WCTSelectBase.mm
        │           │   ├── WCTTable+ChainCall.h
        │           │   ├── WCTTable+ChainCall.mm
        │           │   ├── WCTUpdate+Private.h
        │           │   ├── WCTUpdate.h
        │           │   └── WCTUpdate.mm
        │           ├── compatible
        │           │   ├── WCTCompatible.h
        │           │   ├── WCTCompatible.mm
        │           │   ├── WCTDatabase+Compatible.h
        │           │   ├── WCTDatabase+Compatible.mm
        │           │   ├── WCTStatement+Compatible.h
        │           │   ├── WCTStatement+Compatible.mm
        │           │   ├── WCTStatistics+Compatible.h
        │           │   ├── WCTStatistics+Compatible.mm
        │           │   ├── WCTTransaction+Compatible.h
        │           │   └── WCTTransaction+Compatible.mm
        │           ├── convenient
        │           │   ├── WCTInterface+Convenient.h
        │           │   ├── WCTInterface+Convenient.mm
        │           │   ├── WCTTable+Convenient.h
        │           │   └── WCTTable+Convenient.mm
        │           ├── core
        │           │   ├── WCTCore+Private.h
        │           │   ├── WCTCore.h
        │           │   ├── WCTCore.mm
        │           │   ├── WCTDatabase+Core.h
        │           │   ├── WCTDatabase+Core.mm
        │           │   ├── WCTInterface+Core.h
        │           │   ├── WCTInterface+Core.mm
        │           │   ├── WCTStatement+Private.h
        │           │   ├── WCTStatement.h
        │           │   ├── WCTStatement.mm
        │           │   ├── WCTValue.h
        │           │   └── WCTValue.mm
        │           ├── database
        │           │   ├── WCTDatabase+Database.h
        │           │   ├── WCTDatabase+Database.mm
        │           │   ├── WCTDatabase+File.h
        │           │   ├── WCTDatabase+File.mm
        │           │   ├── WCTDatabase+Private.h
        │           │   ├── WCTDatabase+RepairKit.h
        │           │   └── WCTDatabase+RepairKit.mm
        │           ├── declare
        │           │   ├── WCTDatabase.h
        │           │   ├── WCTDatabase.mm
        │           │   ├── WCTDeclare.h
        │           │   ├── WCTInterface.h
        │           │   ├── WCTInterface.mm
        │           │   ├── WCTTable.h
        │           │   └── WCTTable.mm
        │           ├── fts
        │           │   ├── WCTDatabase+FTS.h
        │           │   ├── WCTDatabase+FTS.mm
        │           │   ├── WCTTokenizer+Apple.h
        │           │   ├── WCTTokenizer+Apple.mm
        │           │   ├── WCTTokenizer+WCDB.h
        │           │   └── WCTTokenizer+WCDB.mm
        │           ├── orm
        │           │   ├── WCTORM.h
        │           │   ├── accessor
        │           │   │   ├── WCTBaseAccessor.h
        │           │   │   ├── WCTCppAccessor.h
        │           │   │   ├── WCTObjCAccessor.h
        │           │   │   ├── WCTRuntimeBaseAccessor.h
        │           │   │   ├── WCTRuntimeBaseAccessor.mm
        │           │   │   ├── WCTRuntimeCppAccessor.h
        │           │   │   ├── WCTRuntimeObjCAccessor.h
        │           │   │   └── WCTRuntimeObjCAccessor.mm
        │           │   ├── binding
        │           │   │   ├── WCTBinding.h
        │           │   │   ├── WCTBinding.mm
        │           │   │   ├── WCTColumnBinding.h
        │           │   │   ├── WCTColumnBinding.mm
        │           │   │   ├── WCTConstraintBinding.h
        │           │   │   ├── WCTConstraintBinding.mm
        │           │   │   ├── WCTIndexBInding.mm
        │           │   │   └── WCTIndexBinding.h
        │           │   ├── coding
        │           │   │   ├── WCTAnyProperty.h
        │           │   │   ├── WCTAnyProperty.mm
        │           │   │   ├── WCTCoding.h
        │           │   │   ├── WCTExpr.h
        │           │   │   ├── WCTExpr.mm
        │           │   │   ├── WCTProperty.h
        │           │   │   ├── WCTProperty.mm
        │           │   │   ├── WCTPropertyBase.h
        │           │   │   ├── WCTPropertyBase.mm
        │           │   │   ├── WCTResult.h
        │           │   │   ├── WCTResult.mm
        │           │   │   ├── WCTSelectBase+WCTExpr.h
        │           │   │   └── WCTSelectBase+WCTExpr.mm
        │           │   └── macro
        │           │   │   ├── WCTCodingMacro.h
        │           │   │   ├── WCTConstraintMacro.h
        │           │   │   ├── WCTIndexMacro.h
        │           │   │   ├── WCTMacroHelper.h
        │           │   │   └── WCTPropertyMacro.h
        │           ├── statictics
        │           │   ├── WCTChainCall+Statistics.h
        │           │   ├── WCTChainCall+Statistics.mm
        │           │   ├── WCTDatabase+Statistics.h
        │           │   ├── WCTDatabase+Statistics.mm
        │           │   ├── WCTError+Private.h
        │           │   ├── WCTError.h
        │           │   ├── WCTError.mm
        │           │   ├── WCTStatistics.h
        │           │   ├── WCTStatistics.mm
        │           │   ├── WCTTransaction+Statistics.h
        │           │   └── WCTTransaction+Statistics.mm
        │           ├── table
        │           │   ├── WCTDatabase+Table.h
        │           │   ├── WCTDatabase+Table.mm
        │           │   ├── WCTInterface+Table.h
        │           │   ├── WCTInterface+Table.mm
        │           │   ├── WCTTable+Database.h
        │           │   ├── WCTTable+Private.h
        │           │   ├── WCTTransaction+Table.h
        │           │   └── WCTTransaction+Table.mm
        │           └── transaction
        │           │   ├── WCTDatabase+Transaction.h
        │           │   ├── WCTDatabase+Transaction.mm
        │           │   ├── WCTTransaction+Private.h
        │           │   ├── WCTTransaction.h
        │           │   └── WCTTransaction.mm
        │       └── util
        │           ├── concurrent_list.hpp
        │           ├── error.cpp
        │           ├── error.hpp
        │           ├── file.cpp
        │           ├── file.hpp
        │           ├── macro.hpp
        │           ├── path.cpp
        │           ├── path.hpp
        │           ├── recyclable.hpp
        │           ├── rwlock.cpp
        │           ├── rwlock.hpp
        │           ├── spin.cpp
        │           ├── spin.hpp
        │           ├── thread_local.hpp
        │           ├── ticker.cpp
        │           ├── ticker.hpp
        │           ├── timed_queue.hpp
        │           └── utility.hpp
    ├── WCDBOptimizedSQLCipher
        ├── LICENSE
        ├── README.md
        ├── ext
        │   ├── fts3
        │   │   ├── fts3.c
        │   │   ├── fts3.h
        │   │   ├── fts3Int.h
        │   │   ├── fts3_aux.c
        │   │   ├── fts3_expr.c
        │   │   ├── fts3_hash.c
        │   │   ├── fts3_hash.h
        │   │   ├── fts3_icu.c
        │   │   ├── fts3_porter.c
        │   │   ├── fts3_snippet.c
        │   │   ├── fts3_tokenize_vtab.c
        │   │   ├── fts3_tokenizer.c
        │   │   ├── fts3_tokenizer.h
        │   │   ├── fts3_tokenizer1.c
        │   │   ├── fts3_unicode.c
        │   │   ├── fts3_unicode2.c
        │   │   └── fts3_write.c
        │   ├── icu
        │   │   ├── icu.c
        │   │   └── sqliteicu.h
        │   ├── rbu
        │   │   ├── sqlite3rbu.c
        │   │   └── sqlite3rbu.h
        │   ├── rtree
        │   │   ├── rtree.c
        │   │   ├── rtree.h
        │   │   └── sqlite3rtree.h
        │   └── userauth
        │   │   └── sqlite3userauth.h
        ├── fts5.c
        ├── fts5.h
        ├── keywordhash.h
        ├── opcodes.c
        ├── opcodes.h
        ├── parse.c
        ├── parse.h
        ├── sqlite3.h
        └── src
        │   ├── alter.c
        │   ├── analyze.c
        │   ├── attach.c
        │   ├── auth.c
        │   ├── backup.c
        │   ├── bitvec.c
        │   ├── btmutex.c
        │   ├── btree.c
        │   ├── btree.h
        │   ├── btreeInt.h
        │   ├── build.c
        │   ├── callback.c
        │   ├── complete.c
        │   ├── crypto.c
        │   ├── crypto.h
        │   ├── crypto_cc.c
        │   ├── crypto_impl.c
        │   ├── crypto_libtomcrypt.c
        │   ├── ctime.c
        │   ├── date.c
        │   ├── dbstat.c
        │   ├── delete.c
        │   ├── expr.c
        │   ├── fault.c
        │   ├── fkey.c
        │   ├── func.c
        │   ├── global.c
        │   ├── hash.c
        │   ├── hash.h
        │   ├── hwtime.h
        │   ├── insert.c
        │   ├── legacy.c
        │   ├── loadext.c
        │   ├── main.c
        │   ├── malloc.c
        │   ├── mem0.c
        │   ├── mem1.c
        │   ├── mem2.c
        │   ├── mem3.c
        │   ├── mem5.c
        │   ├── memjournal.c
        │   ├── msvc.h
        │   ├── mutex.c
        │   ├── mutex.h
        │   ├── mutex_noop.c
        │   ├── mutex_unix.c
        │   ├── mutex_wcdb.c
        │   ├── mutex_wcdb.h
        │   ├── notify.c
        │   ├── os.c
        │   ├── os.h
        │   ├── os_common.h
        │   ├── os_setup.h
        │   ├── os_unix.c
        │   ├── os_wcdb.c
        │   ├── os_wcdb.h
        │   ├── pager.c
        │   ├── pager.h
        │   ├── pcache.c
        │   ├── pcache.h
        │   ├── pcache1.c
        │   ├── pragma.c
        │   ├── pragma.h
        │   ├── prepare.c
        │   ├── printf.c
        │   ├── queue.c
        │   ├── queue.h
        │   ├── random.c
        │   ├── resolve.c
        │   ├── rowset.c
        │   ├── select.c
        │   ├── sqlcipher.h
        │   ├── sqlite3ext.h
        │   ├── sqliteInt.h
        │   ├── sqliteLimit.h
        │   ├── status.c
        │   ├── table.c
        │   ├── threads.c
        │   ├── tokenize.c
        │   ├── treeview.c
        │   ├── trigger.c
        │   ├── update.c
        │   ├── utf.c
        │   ├── util.c
        │   ├── vacuum.c
        │   ├── vdbe.c
        │   ├── vdbe.h
        │   ├── vdbeInt.h
        │   ├── vdbeapi.c
        │   ├── vdbeaux.c
        │   ├── vdbeblob.c
        │   ├── vdbemem.c
        │   ├── vdbesort.c
        │   ├── vdbetrace.c
        │   ├── vtab.c
        │   ├── vxworks.h
        │   ├── wal.c
        │   ├── wal.h
        │   ├── walker.c
        │   ├── where.c
        │   ├── whereInt.h
        │   ├── wherecode.c
        │   └── whereexpr.c
    ├── YTKNetwork
        ├── LICENSE
        ├── README.md
        └── YTKNetwork
        │   ├── YTKBaseRequest.h
        │   ├── YTKBaseRequest.m
        │   ├── YTKBatchRequest.h
        │   ├── YTKBatchRequest.m
        │   ├── YTKBatchRequestAgent.h
        │   ├── YTKBatchRequestAgent.m
        │   ├── YTKChainRequest.h
        │   ├── YTKChainRequest.m
        │   ├── YTKChainRequestAgent.h
        │   ├── YTKChainRequestAgent.m
        │   ├── YTKNetwork.h
        │   ├── YTKNetworkAgent.h
        │   ├── YTKNetworkAgent.m
        │   ├── YTKNetworkConfig.h
        │   ├── YTKNetworkConfig.m
        │   ├── YTKNetworkPrivate.h
        │   ├── YTKNetworkPrivate.m
        │   ├── YTKRequest.h
        │   ├── YTKRequest.m
        │   ├── YTKRequestEventAccessory.h
        │   └── YTKRequestEventAccessory.m
    └── YYKit
        ├── LICENSE
        ├── README.md
        ├── Vendor
            └── WebP.framework
            │   ├── Headers
            │       ├── config.h
            │       ├── decode.h
            │       ├── demux.h
            │       ├── encode.h
            │       ├── extras.h
            │       ├── format_constants.h
            │       ├── mux.h
            │       ├── mux_types.h
            │       └── types.h
            │   └── WebP
        └── YYKit
            ├── Base
                ├── Foundation
                │   ├── NSArray+YYAdd.h
                │   ├── NSArray+YYAdd.m
                │   ├── NSBundle+YYAdd.h
                │   ├── NSBundle+YYAdd.m
                │   ├── NSData+YYAdd.h
                │   ├── NSData+YYAdd.m
                │   ├── NSDate+YYAdd.h
                │   ├── NSDate+YYAdd.m
                │   ├── NSDictionary+YYAdd.h
                │   ├── NSDictionary+YYAdd.m
                │   ├── NSKeyedUnarchiver+YYAdd.h
                │   ├── NSKeyedUnarchiver+YYAdd.m
                │   ├── NSNotificationCenter+YYAdd.h
                │   ├── NSNotificationCenter+YYAdd.m
                │   ├── NSNumber+YYAdd.h
                │   ├── NSNumber+YYAdd.m
                │   ├── NSObject+YYAdd.h
                │   ├── NSObject+YYAdd.m
                │   ├── NSObject+YYAddForARC.h
                │   ├── NSObject+YYAddForARC.m
                │   ├── NSObject+YYAddForKVO.h
                │   ├── NSObject+YYAddForKVO.m
                │   ├── NSString+YYAdd.h
                │   ├── NSString+YYAdd.m
                │   ├── NSThread+YYAdd.h
                │   ├── NSThread+YYAdd.m
                │   ├── NSTimer+YYAdd.h
                │   └── NSTimer+YYAdd.m
                ├── Quartz
                │   ├── CALayer+YYAdd.h
                │   ├── CALayer+YYAdd.m
                │   ├── YYCGUtilities.h
                │   └── YYCGUtilities.m
                ├── UIKit
                │   ├── UIApplication+YYAdd.h
                │   ├── UIApplication+YYAdd.m
                │   ├── UIBarButtonItem+YYAdd.h
                │   ├── UIBarButtonItem+YYAdd.m
                │   ├── UIBezierPath+YYAdd.h
                │   ├── UIBezierPath+YYAdd.m
                │   ├── UIColor+YYAdd.h
                │   ├── UIColor+YYAdd.m
                │   ├── UIControl+YYAdd.h
                │   ├── UIControl+YYAdd.m
                │   ├── UIDevice+YYAdd.h
                │   ├── UIDevice+YYAdd.m
                │   ├── UIFont+YYAdd.h
                │   ├── UIFont+YYAdd.m
                │   ├── UIGestureRecognizer+YYAdd.h
                │   ├── UIGestureRecognizer+YYAdd.m
                │   ├── UIImage+YYAdd.h
                │   ├── UIImage+YYAdd.m
                │   ├── UIScreen+YYAdd.h
                │   ├── UIScreen+YYAdd.m
                │   ├── UIScrollView+YYAdd.h
                │   ├── UIScrollView+YYAdd.m
                │   ├── UITableView+YYAdd.h
                │   ├── UITableView+YYAdd.m
                │   ├── UITextField+YYAdd.h
                │   ├── UITextField+YYAdd.m
                │   ├── UIView+YYAdd.h
                │   └── UIView+YYAdd.m
                └── YYKitMacro.h
            ├── Cache
                ├── YYCache.h
                ├── YYCache.m
                ├── YYDiskCache.h
                ├── YYDiskCache.m
                ├── YYKVStorage.h
                ├── YYKVStorage.m
                ├── YYMemoryCache.h
                └── YYMemoryCache.m
            ├── Image
                ├── Categories
                │   ├── CALayer+YYWebImage.h
                │   ├── CALayer+YYWebImage.m
                │   ├── MKAnnotationView+YYWebImage.h
                │   ├── MKAnnotationView+YYWebImage.m
                │   ├── UIButton+YYWebImage.h
                │   ├── UIButton+YYWebImage.m
                │   ├── UIImageView+YYWebImage.h
                │   ├── UIImageView+YYWebImage.m
                │   ├── _YYWebImageSetter.h
                │   └── _YYWebImageSetter.m
                ├── YYAnimatedImageView.h
                ├── YYAnimatedImageView.m
                ├── YYFrameImage.h
                ├── YYFrameImage.m
                ├── YYImage.h
                ├── YYImage.m
                ├── YYImageCache.h
                ├── YYImageCache.m
                ├── YYImageCoder.h
                ├── YYImageCoder.m
                ├── YYSpriteSheetImage.h
                ├── YYSpriteSheetImage.m
                ├── YYWebImageManager.h
                ├── YYWebImageManager.m
                ├── YYWebImageOperation.h
                └── YYWebImageOperation.m
            ├── Model
                ├── NSObject+YYModel.h
                ├── NSObject+YYModel.m
                ├── YYClassInfo.h
                └── YYClassInfo.m
            ├── Text
                ├── Component
                │   ├── YYTextContainerView.h
                │   ├── YYTextContainerView.m
                │   ├── YYTextDebugOption.h
                │   ├── YYTextDebugOption.m
                │   ├── YYTextEffectWindow.h
                │   ├── YYTextEffectWindow.m
                │   ├── YYTextInput.h
                │   ├── YYTextInput.m
                │   ├── YYTextKeyboardManager.h
                │   ├── YYTextKeyboardManager.m
                │   ├── YYTextLayout.h
                │   ├── YYTextLayout.m
                │   ├── YYTextLine.h
                │   ├── YYTextLine.m
                │   ├── YYTextMagnifier.h
                │   ├── YYTextMagnifier.m
                │   ├── YYTextSelectionView.h
                │   └── YYTextSelectionView.m
                ├── String
                │   ├── NSAttributedString+YYText.h
                │   ├── NSAttributedString+YYText.m
                │   ├── NSParagraphStyle+YYText.h
                │   ├── NSParagraphStyle+YYText.m
                │   ├── UIPasteboard+YYText.h
                │   ├── UIPasteboard+YYText.m
                │   ├── YYTextArchiver.h
                │   ├── YYTextArchiver.m
                │   ├── YYTextAttribute.h
                │   ├── YYTextAttribute.m
                │   ├── YYTextParser.h
                │   ├── YYTextParser.m
                │   ├── YYTextRubyAnnotation.h
                │   ├── YYTextRubyAnnotation.m
                │   ├── YYTextRunDelegate.h
                │   ├── YYTextRunDelegate.m
                │   ├── YYTextUtilities.h
                │   └── YYTextUtilities.m
                ├── YYLabel.h
                ├── YYLabel.m
                ├── YYTextView.h
                └── YYTextView.m
            ├── Utility
                ├── YYAsyncLayer.h
                ├── YYAsyncLayer.m
                ├── YYDispatchQueuePool.h
                ├── YYDispatchQueuePool.m
                ├── YYFileHash.h
                ├── YYFileHash.m
                ├── YYGestureRecognizer.h
                ├── YYGestureRecognizer.m
                ├── YYKeychain.h
                ├── YYKeychain.m
                ├── YYReachability.h
                ├── YYReachability.m
                ├── YYSentinel.h
                ├── YYSentinel.m
                ├── YYThreadSafeArray.h
                ├── YYThreadSafeArray.m
                ├── YYThreadSafeDictionary.h
                ├── YYThreadSafeDictionary.m
                ├── YYTimer.h
                ├── YYTimer.m
                ├── YYTransaction.h
                ├── YYTransaction.m
                ├── YYWeakProxy.h
                └── YYWeakProxy.m
            └── YYKit.h
/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AbnerPei/PPDemo/a2dc2fe1328de76a776ebdd657664efb1e2c59b2/.DS_Store
--------------------------------------------------------------------------------
/.idea/PPDemos.iml:
--------------------------------------------------------------------------------
1 | 
2 | 
--------------------------------------------------------------------------------
/.idea/modules.xml:
--------------------------------------------------------------------------------
1 | 
2 | 
3 |   
4 |     
5 |       
6 |     
7 |   
8 | 
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 | 
2 | 
3 |   
4 |     
5 |   
6 | 
--------------------------------------------------------------------------------
/.idea/xcode.xml:
--------------------------------------------------------------------------------
1 | 
2 | 
3 |   
4 | 
--------------------------------------------------------------------------------
/PPDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 | 
2 | 
4 |    
6 |    
7 | 
8 | 
--------------------------------------------------------------------------------
/PPDemo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 | 
2 | 
3 | 
4 | 
5 | 	IDEDidComputeMac32BitWarning
6 | 	
7 | 
8 | 
9 | 
--------------------------------------------------------------------------------
/PPDemo.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
 1 | 
 2 | 
 4 |    
 6 |    
 7 |    
 9 |    
10 | 
11 | 
--------------------------------------------------------------------------------
/PPDemo.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 | 
2 | 
3 | 
4 | 
5 | 	IDEDidComputeMac32BitWarning
6 | 	
7 | 
8 | 
9 | 
--------------------------------------------------------------------------------
/PPDemo/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AbnerPei/PPDemo/a2dc2fe1328de76a776ebdd657664efb1e2c59b2/PPDemo/.DS_Store
--------------------------------------------------------------------------------
/PPDemo/AppDelegate.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  AppDelegate.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2020/11/20.
 6 | //
 7 | 
 8 | #import 
 9 | 
10 | @interface AppDelegate : UIResponder 
11 | 
12 | 
13 | @end
14 | 
15 | 
--------------------------------------------------------------------------------
/PPDemo/Assets.xcassets/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AbnerPei/PPDemo/a2dc2fe1328de76a776ebdd657664efb1e2c59b2/PPDemo/Assets.xcassets/.DS_Store
--------------------------------------------------------------------------------
/PPDemo/Assets.xcassets/AccentColor.colorset/Contents.json:
--------------------------------------------------------------------------------
 1 | {
 2 |   "colors" : [
 3 |     {
 4 |       "idiom" : "universal"
 5 |     }
 6 |   ],
 7 |   "info" : {
 8 |     "author" : "xcode",
 9 |     "version" : 1
10 |   }
11 | }
12 | 
--------------------------------------------------------------------------------
/PPDemo/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 |   "info" : {
3 |     "author" : "xcode",
4 |     "version" : 1
5 |   }
6 | }
7 | 
--------------------------------------------------------------------------------
/PPDemo/MyLibs「我的开源库」/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AbnerPei/PPDemo/a2dc2fe1328de76a776ebdd657664efb1e2c59b2/PPDemo/MyLibs「我的开源库」/.DS_Store
--------------------------------------------------------------------------------
/PPDemo/MyLibs「我的开源库」/MyLibsBaseTableViewController.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  MyLibsBaseTableViewController.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2020/11/20.
 6 | //
 7 | 
 8 | #import "BaseTableViewController.h"
 9 | 
10 | NS_ASSUME_NONNULL_BEGIN
11 | 
12 | @interface MyLibsBaseTableViewController : BaseTableViewController
13 | 
14 | @end
15 | 
16 | NS_ASSUME_NONNULL_END
17 | 
--------------------------------------------------------------------------------
/PPDemo/MyLibs「我的开源库」/MyLibsBaseTableViewController.m:
--------------------------------------------------------------------------------
 1 | //
 2 | //  MyLibsBaseTableViewController.m
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2020/11/20.
 6 | //
 7 | 
 8 | #import "MyLibsBaseTableViewController.h"
 9 | 
10 | @interface MyLibsBaseTableViewController ()
11 | 
12 | @end
13 | 
14 | @implementation MyLibsBaseTableViewController
15 | 
16 | - (void)viewDidLoad {
17 |     [super viewDidLoad];
18 |     // Do any additional setup after loading the view.
19 | }
20 | 
21 | - (NSArray *)titles
22 | {
23 |     return @[
24 |         @"VVStandardizedCode「标准化代码」",
25 |         @"PPTextField「设置各种输入限制」",
26 |         @"PPMaker「快速开发」",
27 |         @"PPCarousel「万能轮播」"
28 |     ];
29 | }
30 | 
31 | - (NSArray *)vcs
32 | {
33 |     return @[
34 |         @"VVStandardizedCodeViewController",
35 |         @"PPTextFieldBaseTableViewController",
36 |         @"PPMakerBaseTableViewController",
37 |         @"PPCarouselBaseTableViewController",
38 |     ];
39 | }
40 | 
41 | @end
42 | 
--------------------------------------------------------------------------------
/PPDemo/MyLibs「我的开源库」/PPCarousel「万能轮播」/PPCarouselBaseTableViewController.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  PPCarouselBaseTableViewController.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2020/11/20.
 6 | //
 7 | 
 8 | #import "BaseTableViewController.h"
 9 | 
10 | NS_ASSUME_NONNULL_BEGIN
11 | 
12 | @interface PPCarouselBaseTableViewController : BaseTableViewController
13 | 
14 | @end
15 | 
16 | NS_ASSUME_NONNULL_END
17 | 
--------------------------------------------------------------------------------
/PPDemo/MyLibs「我的开源库」/PPCarousel「万能轮播」/PPCarouselBaseTableViewController.m:
--------------------------------------------------------------------------------
 1 | //
 2 | //  PPCarouselBaseTableViewController.m
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2020/11/20.
 6 | //
 7 | 
 8 | #import "PPCarouselBaseTableViewController.h"
 9 | 
10 | @interface PPCarouselBaseTableViewController ()
11 | 
12 | @end
13 | 
14 | @implementation PPCarouselBaseTableViewController
15 | 
16 | - (void)viewDidLoad {
17 |     [super viewDidLoad];
18 |     // Do any additional setup after loading the view.
19 | }
20 | 
21 | /*
22 | #pragma mark - Navigation
23 | 
24 | // In a storyboard-based application, you will often want to do a little preparation before navigation
25 | - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
26 |     // Get the new view controller using [segue destinationViewController].
27 |     // Pass the selected object to the new view controller.
28 | }
29 | */
30 | 
31 | @end
32 | 
--------------------------------------------------------------------------------
/PPDemo/MyLibs「我的开源库」/PPMaker「快速开发」/PPMakerBaseTableViewController.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  PPMakerBaseTableViewController.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2020/11/20.
 6 | //
 7 | 
 8 | #import "BaseTableViewController.h"
 9 | 
10 | NS_ASSUME_NONNULL_BEGIN
11 | 
12 | @interface PPMakerBaseTableViewController : BaseTableViewController
13 | 
14 | @end
15 | 
16 | NS_ASSUME_NONNULL_END
17 | 
--------------------------------------------------------------------------------
/PPDemo/MyLibs「我的开源库」/PPMaker「快速开发」/PPMakerInfiniteLoopVerifyViewController/PPMakerInfiniteLoopVerifyViewController.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  PPMakerInfiniteLoopVerifyViewController.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2020/12/14.
 6 | //
 7 | 
 8 | #import 
 9 | 
10 | NS_ASSUME_NONNULL_BEGIN
11 | 
12 | @interface PPMakerInfiniteLoopVerifyViewController : UIViewController
13 | 
14 | @end
15 | 
16 | NS_ASSUME_NONNULL_END
17 | 
--------------------------------------------------------------------------------
/PPDemo/MyLibs「我的开源库」/PPMaker「快速开发」/PPMakerInfiniteLoopVerifyViewController/PPMakerInfiniteLoopVerifyViewController.m:
--------------------------------------------------------------------------------
 1 | //
 2 | //  PPMakerInfiniteLoopVerifyViewController.m
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2020/12/14.
 6 | //
 7 | 
 8 | #import "PPMakerInfiniteLoopVerifyViewController.h"
 9 | 
10 | @interface PPMakerInfiniteLoopVerifyViewController ()
11 | 
12 | @end
13 | 
14 | @implementation PPMakerInfiniteLoopVerifyViewController
15 | 
16 | - (void)viewDidLoad {
17 |     [super viewDidLoad];
18 |     // Do any additional setup after loading the view.
19 | }
20 | 
21 | /*
22 | #pragma mark - Navigation
23 | 
24 | // In a storyboard-based application, you will often want to do a little preparation before navigation
25 | - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
26 |     // Get the new view controller using [segue destinationViewController].
27 |     // Pass the selected object to the new view controller.
28 | }
29 | */
30 | 
31 | @end
32 | 
--------------------------------------------------------------------------------
/PPDemo/MyLibs「我的开源库」/PPTextField「设置各种输入限制」/PPTextFieldBaseTableViewController.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  PPTextFieldBaseTableViewController.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2020/11/20.
 6 | //
 7 | 
 8 | #import "BaseTableViewController.h"
 9 | 
10 | NS_ASSUME_NONNULL_BEGIN
11 | 
12 | @interface PPTextFieldBaseTableViewController : BaseTableViewController
13 | 
14 | @end
15 | 
16 | NS_ASSUME_NONNULL_END
17 | 
--------------------------------------------------------------------------------
/PPDemo/MyLibs「我的开源库」/PPTextField「设置各种输入限制」/PPTextFieldBaseTableViewController.m:
--------------------------------------------------------------------------------
 1 | //
 2 | //  PPTextFieldBaseTableViewController.m
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2020/11/20.
 6 | //
 7 | 
 8 | #import "PPTextFieldBaseTableViewController.h"
 9 | 
10 | @interface PPTextFieldBaseTableViewController ()
11 | 
12 | @end
13 | 
14 | @implementation PPTextFieldBaseTableViewController
15 | 
16 | - (void)viewDidLoad {
17 |     [super viewDidLoad];
18 |     // Do any additional setup after loading the view.
19 | }
20 | 
21 | /*
22 | #pragma mark - Navigation
23 | 
24 | // In a storyboard-based application, you will often want to do a little preparation before navigation
25 | - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
26 |     // Get the new view controller using [segue destinationViewController].
27 |     // Pass the selected object to the new view controller.
28 | }
29 | */
30 | 
31 | @end
32 | 
--------------------------------------------------------------------------------
/PPDemo/MyLibs「我的开源库」/VVStandardizedCode「标准化代码」/Examples/CollectionView/SimpleDemo/VVSimpleCollectionDemoCell1.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  VVSimpleCollectionDemoCell1.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by AbnerPei on 2021/6/14.
 6 | //
 7 | 
 8 | #import "VVBaseCollectionCell.h"
 9 | 
10 | NS_ASSUME_NONNULL_BEGIN
11 | 
12 | @interface VVSimpleCollectionDemoCell1 : VVBaseCollectionCell
13 | 
14 | @end
15 | 
16 | NS_ASSUME_NONNULL_END
17 | 
--------------------------------------------------------------------------------
/PPDemo/MyLibs「我的开源库」/VVStandardizedCode「标准化代码」/Examples/CollectionView/SimpleDemo/VVSimpleCollectionDemoCell1.m:
--------------------------------------------------------------------------------
 1 | //
 2 | //  VVSimpleCollectionDemoCell1.m
 3 | //  PPDemo
 4 | //
 5 | //  Created by AbnerPei on 2021/6/14.
 6 | //
 7 | 
 8 | #import "VVSimpleCollectionDemoCell1.h"
 9 | 
10 | @implementation VVSimpleCollectionDemoCell1
11 | 
12 | + (CGSize)itemSizeWithModel:(id)model
13 | {
14 |     return CGSizeMake(UIScreen.mainScreen.bounds.size.width, 50);
15 | }
16 | 
17 | - (void)setupUI
18 | {
19 |     self.contentView.backgroundColor = UIColor.redColor;
20 | }
21 | 
22 | @end
23 | 
--------------------------------------------------------------------------------
/PPDemo/MyLibs「我的开源库」/VVStandardizedCode「标准化代码」/Examples/CollectionView/SimpleDemo/VVSimpleCollectionDemoReusableView1.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  VVSimpleCollectionDemoReusableView1.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by AbnerPei on 2021/6/14.
 6 | //
 7 | 
 8 | #import "VVBaseCollectionReusableView.h"
 9 | 
10 | NS_ASSUME_NONNULL_BEGIN
11 | 
12 | @interface VVSimpleCollectionDemoReusableView1 : VVBaseCollectionReusableView
13 | 
14 | @end
15 | 
16 | NS_ASSUME_NONNULL_END
17 | 
--------------------------------------------------------------------------------
/PPDemo/MyLibs「我的开源库」/VVStandardizedCode「标准化代码」/Examples/CollectionView/SimpleDemo/VVSimpleCollectionDemoReusableView1.m:
--------------------------------------------------------------------------------
 1 | //
 2 | //  VVSimpleCollectionDemoReusableView1.m
 3 | //  PPDemo
 4 | //
 5 | //  Created by AbnerPei on 2021/6/14.
 6 | //
 7 | 
 8 | #import "VVSimpleCollectionDemoReusableView1.h"
 9 | 
10 | @implementation VVSimpleCollectionDemoReusableView1
11 | 
12 | + (CGSize)headerSizeWithModel:(id)model
13 | {
14 |     return CGSizeMake(UIScreen.mainScreen.bounds.size.width, 30);
15 | }
16 | 
17 | - (void)setupUI
18 | {
19 |     self.backgroundColor = UIColor.purpleColor;
20 | }
21 | 
22 | @end
23 | 
--------------------------------------------------------------------------------
/PPDemo/MyLibs「我的开源库」/VVStandardizedCode「标准化代码」/Examples/CollectionView/SimpleDemo/VVSimpleCollectionDemoViewController.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  VVSimpleCollectionDemoViewController.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by AbnerPei on 2021/6/14.
 6 | //
 7 | 
 8 | #import 
 9 | 
10 | NS_ASSUME_NONNULL_BEGIN
11 | 
12 | @interface VVSimpleCollectionDemoViewController : UIViewController
13 | 
14 | @end
15 | 
16 | NS_ASSUME_NONNULL_END
17 | 
--------------------------------------------------------------------------------
/PPDemo/MyLibs「我的开源库」/VVStandardizedCode「标准化代码」/Examples/VVStandardizedCodeViewController.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  VVStandardizedCodeViewController.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by AbnerPei on 2021/5/17.
 6 | //
 7 | 
 8 | #import "BaseTableViewController.h"
 9 | 
10 | NS_ASSUME_NONNULL_BEGIN
11 | 
12 | @interface VVStandardizedCodeViewController : BaseTableViewController
13 | 
14 | @end
15 | 
16 | NS_ASSUME_NONNULL_END
17 | 
--------------------------------------------------------------------------------
/PPDemo/MyLibs「我的开源库」/VVStandardizedCode「标准化代码」/Examples/VVStandardizedCodeViewController.m:
--------------------------------------------------------------------------------
 1 | //
 2 | //  VVStandardizedCodeViewController.m
 3 | //  PPDemo
 4 | //
 5 | //  Created by AbnerPei on 2021/5/17.
 6 | //
 7 | 
 8 | #import "VVStandardizedCodeViewController.h"
 9 | 
10 | @interface VVStandardizedCodeViewController ()
11 | 
12 | @end
13 | 
14 | @implementation VVStandardizedCodeViewController
15 | 
16 | - (void)viewDidLoad {
17 |     [super viewDidLoad];
18 |     // Do any additional setup after loading the view.
19 | }
20 | 
21 | - (NSArray *)titles
22 | {
23 |     return @[
24 |         @"【1个section 1种cell】SC_CollectionView_SimpleDemo",
25 |     ];
26 | }
27 | 
28 | - (NSArray *)vcs
29 | {
30 |     return @[
31 |         @"VVSimpleCollectionDemoViewController",
32 |     ];
33 | }
34 | 
35 | @end
36 | 
--------------------------------------------------------------------------------
/PPDemo/MyLibs「我的开源库」/VVStandardizedCode「标准化代码」/VVCollectionView/Protocol/VVCollectionCellProtocol.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  VVCollectionCellProtocol.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by AbnerPei on 2021/6/12.
 6 | //
 7 | 
 8 | #ifndef VVCollectionCellProtocol_h
 9 | #define VVCollectionCellProtocol_h
10 | #import 
11 | #import "VVReuseViewProtocol.h"
12 | 
13 | @protocol VVCollectionCellProtocol 
14 | 
15 | @optional
16 | /// item的大小
17 | + (CGSize)itemSizeWithModel:(nullable id)model;
18 | 
19 | @end
20 | 
21 | #endif /* VVCollectionCellProtocol_h */
22 | 
--------------------------------------------------------------------------------
/PPDemo/MyLibs「我的开源库」/VVStandardizedCode「标准化代码」/VVCollectionView/Protocol/VVCollectionContainerProtocol.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  VVCollectionContainerProtocol.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by AbnerPei on 2021/6/12.
 6 | //
 7 | 
 8 | #ifndef VVCollectionContainerProtocol_h
 9 | #define VVCollectionContainerProtocol_h
10 | #import "VVCollectionVMProtocol.h"
11 | 
12 | @protocol VVCollectionContainerProtocol 
13 | 
14 | @required
15 | @property (nonatomic, strong) UICollectionView *collectionView;
16 | @property (nonatomic, strong) __kindof id collectionVM;
17 | 
18 | @optional
19 | - (void)preloadAtIndexPath:(NSIndexPath *)indexPath;
20 | 
21 | @end
22 | 
23 | #endif /* VVCollectionContainerProtocol_h */
24 | 
--------------------------------------------------------------------------------
/PPDemo/MyLibs「我的开源库」/VVStandardizedCode「标准化代码」/VVCollectionView/Protocol/VVCollectionReusableViewProtocol.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  VVCollectionReusableViewProtocol.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by AbnerPei on 2021/6/12.
 6 | //
 7 | 
 8 | #ifndef VVCollectionReusableViewProtocol_h
 9 | #define VVCollectionReusableViewProtocol_h
10 | #import "VVReuseViewProtocol.h"
11 | 
12 | @protocol VVCollectionReusableViewProtocol 
13 | 
14 | @required
15 | /// section头视图的kind,只能为以下两个之一:
16 | /// UICollectionElementKindSectionHeader
17 | /// UICollectionElementKindSectionFooter
18 | + (nonnull NSString *)kind;
19 | 
20 | @optional
21 | /// section的hader大小
22 | + (CGSize)headerSizeWithModel:(nullable id)model;
23 | 
24 | /// section的footer大小
25 | + (CGSize)footerSizeWithModel:(nullable id)model;
26 | 
27 | @end
28 | 
29 | #endif /* VVCollectionReusableViewProtocol_h */
30 | 
--------------------------------------------------------------------------------
/PPDemo/MyLibs「我的开源库」/VVStandardizedCode「标准化代码」/VVCollectionView/Protocol/VVDecorationModelProtocol.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  VVDecorationModelProtocol.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by AbnerPei on 2021/6/14.
 6 | //
 7 | 
 8 | #ifndef VVDecorationModelProtocol_h
 9 | #define VVDecorationModelProtocol_h
10 | #import "VVReuseModelProtocol.h"
11 | 
12 | @protocol VVDecorationModelProtocol 
13 | 
14 | /// DecorationView 区域的insets
15 | @property (nonatomic, assign) UIEdgeInsets insets;
16 | 
17 | /// DecorationView 区域的zIndex
18 | @property (nonatomic, assign) NSInteger zIndex;
19 | 
20 | @end
21 | 
22 | #endif /* VVDecorationModelProtocol_h */
23 | 
--------------------------------------------------------------------------------
/PPDemo/MyLibs「我的开源库」/VVStandardizedCode「标准化代码」/VVCollectionView/View/VVBaseCollectionCell.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  VVBaseCollectionCell.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by AbnerPei on 2021/6/12.
 6 | //
 7 | 
 8 | #import 
 9 | #import "VVCollectionCellProtocol.h"
10 | 
11 | NS_ASSUME_NONNULL_BEGIN
12 | 
13 | @interface VVBaseCollectionCell : UICollectionViewCell 
14 | 
15 | #warning pp605
16 | /// <#注释#>
17 | @property (nonatomic, strong) __kindof NSObject *viewModel;
18 | 
19 | @end
20 | 
21 | NS_ASSUME_NONNULL_END
22 | 
--------------------------------------------------------------------------------
/PPDemo/MyLibs「我的开源库」/VVStandardizedCode「标准化代码」/VVCollectionView/View/VVBaseCollectionReusableView.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  VVBaseCollectionReusableView.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by AbnerPei on 2021/6/12.
 6 | //
 7 | 
 8 | #import 
 9 | #import "VVCollectionReusableViewProtocol.h"
10 | 
11 | NS_ASSUME_NONNULL_BEGIN
12 | 
13 | @interface VVBaseCollectionReusableView : UICollectionReusableView 
14 | 
15 | #warning pp605
16 | /// <#注释#>
17 | @property (nonatomic, strong) __kindof NSObject *viewModel;
18 | 
19 | @end
20 | 
21 | NS_ASSUME_NONNULL_END
22 | 
--------------------------------------------------------------------------------
/PPDemo/MyLibs「我的开源库」/VVStandardizedCode「标准化代码」/VVCollectionView/ViewModel/VVBaseCollectionVM.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  VVBaseCollectionVM.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by AbnerPei on 2021/5/22.
 6 | //
 7 | 
 8 | #import 
 9 | #import "VVCollectionVMProtocol.h"
10 | 
11 | NS_ASSUME_NONNULL_BEGIN
12 | 
13 | @interface VVBaseCollectionVM : NSObject 
14 | 
15 | @end
16 | 
17 | NS_ASSUME_NONNULL_END
18 | 
--------------------------------------------------------------------------------
/PPDemo/MyLibs「我的开源库」/VVStandardizedCode「标准化代码」/VVCollectionView/ViewModel/VVBaseCollectionVMConfig.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  VVBaseCollectionVMConfig.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by AbnerPei on 2021/6/13.
 6 | //
 7 | 
 8 | #import 
 9 | #import "VVCollectionVMConfigProtocol.h"
10 | 
11 | NS_ASSUME_NONNULL_BEGIN
12 | 
13 | @interface VVBaseCollectionVMConfig : NSObject 
14 | 
15 | @property (nonatomic, strong, readonly, class) VVBaseCollectionVMConfig *defaultConfig;
16 | 
17 | @end
18 | 
19 | NS_ASSUME_NONNULL_END
20 | 
--------------------------------------------------------------------------------
/PPDemo/MyLibs「我的开源库」/VVStandardizedCode「标准化代码」/VVSCCommon/Model/VVBaseReuseVM.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  VVBaseReuseVM.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by AbnerPei on 2021/6/14.
 6 | //
 7 | 
 8 | #import "VVBaseVM.h"
 9 | #import "VVReuseModelProtocol.h"
10 | 
11 | NS_ASSUME_NONNULL_BEGIN
12 | 
13 | @interface VVBaseReuseVM : VVBaseVM 
14 | 
15 | @end
16 | 
17 | NS_ASSUME_NONNULL_END
18 | 
--------------------------------------------------------------------------------
/PPDemo/MyLibs「我的开源库」/VVStandardizedCode「标准化代码」/VVSCCommon/Model/VVBaseReuseVM.m:
--------------------------------------------------------------------------------
 1 | //
 2 | //  VVBaseReuseVM.m
 3 | //  PPDemo
 4 | //
 5 | //  Created by AbnerPei on 2021/6/14.
 6 | //
 7 | 
 8 | #import "VVBaseReuseVM.h"
 9 | 
10 | @implementation VVBaseReuseVM
11 | @synthesize reuseViewClassName;
12 | 
13 | @end
14 | 
--------------------------------------------------------------------------------
/PPDemo/MyLibs「我的开源库」/VVStandardizedCode「标准化代码」/VVSCCommon/Model/VVBaseVM.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  VVBaseVM.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by AbnerPei on 2021/6/14.
 6 | //
 7 | 
 8 | #import 
 9 | 
10 | NS_ASSUME_NONNULL_BEGIN
11 | 
12 | @interface VVBaseVM : NSObject
13 | 
14 | /// 源数据,通常指api返回的数据
15 | @property (nonatomic, strong, nullable) id vv_rawData;
16 | 
17 | @end
18 | 
19 | NS_ASSUME_NONNULL_END
20 | 
--------------------------------------------------------------------------------
/PPDemo/MyLibs「我的开源库」/VVStandardizedCode「标准化代码」/VVSCCommon/Model/VVBaseVM.m:
--------------------------------------------------------------------------------
 1 | //
 2 | //  VVBaseVM.m
 3 | //  PPDemo
 4 | //
 5 | //  Created by AbnerPei on 2021/6/14.
 6 | //
 7 | 
 8 | #import "VVBaseVM.h"
 9 | 
10 | @implementation VVBaseVM
11 | 
12 | @end
13 | 
--------------------------------------------------------------------------------
/PPDemo/MyLibs「我的开源库」/VVStandardizedCode「标准化代码」/VVSCCommon/Protocol/VVReuseModelProtocol.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  VVReuseModelProtocol.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by AbnerPei on 2021/6/13.
 6 | //
 7 | 
 8 | #ifndef VVReuseModelProtocol_h
 9 | #define VVReuseModelProtocol_h
10 | 
11 | @protocol VVReuseModelProtocol 
12 | 
13 | @optional
14 | /// 可重用视图(cell/reusableView)的类名字符串
15 | @property (nonatomic, copy, nullable) NSString *reuseViewClassName;
16 | 
17 | @end
18 | 
19 | #endif /* VVReuseModelProtocol_h */
20 | 
--------------------------------------------------------------------------------
/PPDemo/MyLibs「我的开源库」/VVStandardizedCode「标准化代码」/VVSCCommon/Protocol/VVReuseViewProtocol.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  VVReuseViewProtocol.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by AbnerPei on 2021/6/12.
 6 | //
 7 | 
 8 | #ifndef VVReuseViewProtocol_h
 9 | #define VVReuseViewProtocol_h
10 | #import "VVViewProtocol.h"
11 | 
12 | @protocol VVReuseViewProtocol 
13 | 
14 | #warning pp605
15 | ///// 视图对应的数据源
16 | //@property (nonatomic, strong) __kindof NSObject *vv_model;
17 | 
18 | /// 重用标识符
19 | + (NSString *)identifier;
20 | 
21 | #warning pp605
22 | /// 为重用视图添加对应viewModel的监听,禁止开发者主动调用
23 | - (void)addReuseViewModelObservers;
24 | 
25 | #warning pp605
26 | /// 移除重用视图对应viewModel上的监听,禁止开发者主动调用
27 | - (void)removeReuseViewModelObservers;
28 | 
29 | @end
30 | 
31 | #endif /* VVReuseViewProtocol_h */
32 | 
--------------------------------------------------------------------------------
/PPDemo/MyLibs「我的开源库」/VVStandardizedCode「标准化代码」/VVSCCommon/Protocol/VVViewProtocol.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  VVViewProtocol.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by AbnerPei on 2021/6/12.
 6 | //
 7 | 
 8 | #ifndef VVViewProtocol_h
 9 | #define VVViewProtocol_h
10 | 
11 | @protocol VVViewProtocol 
12 | 
13 | @optional
14 | /// 根据model获取view的高度
15 | + (CGFloat)viewHeightWithModel:(nullable id)model;
16 | 
17 | /// 添加UI子视图
18 | - (void)setupUI;
19 | 
20 | /// 设置UI控件约束
21 | - (void)setupConstraints;
22 | 
23 | /// 绑定UI事件
24 | - (void)bindUIActions;
25 | 
26 | /// (init的时候)添加监听
27 | - (void)view_addObservers;
28 | 
29 | /// (dealloc的时候)移出监听
30 | - (void)view_removeObservers;
31 | 
32 | #warning pp605
33 | /// 加载初始化数据
34 | - (void)loadInitData;
35 | 
36 | /// 根据模型更新UI
37 | - (void)updateWithModel:(nullable id)model;
38 | 
39 | /// 下拉刷新
40 | - (void)pullRefresh;
41 | 
42 | /// 上拉加载更多
43 | - (void)loadMore;
44 | 
45 | @end
46 | 
47 | #endif /* VVViewProtocol_h */
48 | 
--------------------------------------------------------------------------------
/PPDemo/MyLibs「我的开源库」/VVStandardizedCode「标准化代码」/VVSafe/VVSafe.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  VVSafe.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by AbnerPei on 2021/5/22.
 6 | //
 7 | 
 8 | #ifndef VVSafe_h
 9 | #define VVSafe_h
10 | #import "VVSafeArray.h"
11 | 
12 | static inline BOOL vv_isEmptyStr(NSString * _Nullable str) {
13 |     if (!str || str.length == 0) {
14 |         return YES;
15 |     }
16 |     if (![str isKindOfClass:NSString.class]) {
17 | #if DEBUG
18 |         NSLog(@"str is must is kind of NSSTring");
19 |         assert(NO);
20 | #endif
21 |         return YES;
22 |     }
23 |     return NO;
24 | }
25 | 
26 | 
27 | #endif /* VVSafe_h */
28 | 
--------------------------------------------------------------------------------
/PPDemo/MyLibs「我的开源库」/VVStandardizedCode「标准化代码」/VVSafe/VVSafeArray.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  VVSafeArray.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by AbnerPei on 2021/5/22.
 6 | //
 7 | 
 8 | #import 
 9 | 
10 | #ifndef VVSafeArray_h
11 | #define VVSafeArray_h
12 | 
13 | NS_INLINE _Nullable id vv_objectAtIndexInArray(NSInteger index, NSArray * _Nullable array) {
14 |     if (index < 0 || !array || index >= array.count) {
15 |         return nil;
16 |     }
17 |     return array[index];
18 | }
19 | 
20 | #endif /* VVSafeArray_h */
21 | 
--------------------------------------------------------------------------------
/PPDemo/Notes「笔记&经验&杂谈」/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AbnerPei/PPDemo/a2dc2fe1328de76a776ebdd657664efb1e2c59b2/PPDemo/Notes「笔记&经验&杂谈」/.DS_Store
--------------------------------------------------------------------------------
/PPDemo/Notes「笔记&经验&杂谈」/DevelopmentExperience「开发经验」/判断[tableView reloadData]结束.md:
--------------------------------------------------------------------------------
 1 | #  判断[tableView reloadData]结束
 2 | 
 3 | ```
 4 | [self.tableView reloadData];
 5 | dispatch_async(dispatch_get_main_queue(), ^{
 6 |     ///刷新完成,do what you want
 7 | });
 8 | 
 9 | ```
10 | 
11 | /// `reloadData`会在主队列执行,而`dispatch_get_main_queue`会进行等待,直到主队列空闲才执行。
12 | 
--------------------------------------------------------------------------------
/PPDemo/Notes「笔记&经验&杂谈」/README.md:
--------------------------------------------------------------------------------
1 | #  暂记
2 | 
3 | 
4 | 
--------------------------------------------------------------------------------
/PPDemo/Notes「笔记&经验&杂谈」/SetOfMeat「干货集中营」/别人如此用心写的Blogs,岂能错过?怎敢浪费!.md:
--------------------------------------------------------------------------------
1 | #  别人如此用心写的Blogs,岂能错过?怎敢浪费!
2 | 
3 | 
4 | > note:[「干货」这个词翻译成英语应该是什么?](https://www.zhihu.com/question/20083847)
5 | 
6 | - [伯阳的笔记地窖](https://github.com/BiBoyang/BoyangBlog)
7 | 
--------------------------------------------------------------------------------
/PPDemo/PPDemo-Bridging-Header.h:
--------------------------------------------------------------------------------
1 | //
2 | //  Use this file to import your target's public headers that you would like to expose to Swift.
3 | //
4 | 
5 | 
--------------------------------------------------------------------------------
/PPDemo/Person.swift:
--------------------------------------------------------------------------------
 1 | //
 2 | //  Person.swift
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2020/11/20.
 6 | //
 7 | 
 8 | import Foundation
 9 | 
10 | class Person: NSObject {
11 |     @objc func sayHelloWorld() -> Void {
12 |         print("Hello World!")
13 |     }
14 | }
15 | 
--------------------------------------------------------------------------------
/PPDemo/SceneDelegate.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  SceneDelegate.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2020/11/20.
 6 | //
 7 | 
 8 | #import 
 9 | 
10 | @interface SceneDelegate : UIResponder 
11 | 
12 | @property (strong, nonatomic) UIWindow * window;
13 | 
14 | @end
15 | 
16 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AbnerPei/PPDemo/a2dc2fe1328de76a776ebdd657664efb1e2c59b2/PPDemo/Summary「总览」/.DS_Store
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/Code Verification「实践是检验真理的唯一标准」/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AbnerPei/PPDemo/a2dc2fe1328de76a776ebdd657664efb1e2c59b2/PPDemo/Summary「总览」/Code Verification「实践是检验真理的唯一标准」/.DS_Store
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/Code Verification「实践是检验真理的唯一标准」/CodeVerificationBaseTableViewController.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  CodeVerificationBaseTableViewController.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2020/12/20.
 6 | //
 7 | 
 8 | #import "BaseTableViewController.h"
 9 | 
10 | NS_ASSUME_NONNULL_BEGIN
11 | 
12 | @interface CodeVerificationBaseTableViewController : BaseTableViewController
13 | 
14 | @end
15 | 
16 | NS_ASSUME_NONNULL_END
17 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/Code Verification「实践是检验真理的唯一标准」/UnderlyingInquiry「底层探究」/Block/Block实战/Block1ViewController.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  Block1ViewController.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2021/3/27.
 6 | //
 7 | 
 8 | #import 
 9 | 
10 | NS_ASSUME_NONNULL_BEGIN
11 | 
12 | @interface Block1ViewController : UIViewController
13 | 
14 | @end
15 | 
16 | NS_ASSUME_NONNULL_END
17 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/Code Verification「实践是检验真理的唯一标准」/UnderlyingInquiry「底层探究」/Block/Block实战/Block2ViewController.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  Block2ViewController.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2021/3/27.
 6 | //
 7 | 
 8 | #import 
 9 | 
10 | NS_ASSUME_NONNULL_BEGIN
11 | 
12 | @interface Block2ViewController : UIViewController
13 | 
14 | @property (nonatomic, copy) void(^didChangedTitleBlock)(NSString *title);
15 | 
16 | @end
17 | 
18 | NS_ASSUME_NONNULL_END
19 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/Code Verification「实践是检验真理的唯一标准」/UnderlyingInquiry「底层探究」/Block/Block的分类/CategoriesOfBlockViewController.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  CategoriesOfBlockViewController.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2021/3/27.
 6 | //
 7 | 
 8 | #import 
 9 | 
10 | NS_ASSUME_NONNULL_BEGIN
11 | 
12 | @interface CategoriesOfBlockViewController : UIViewController
13 | 
14 | @end
15 | 
16 | NS_ASSUME_NONNULL_END
17 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/Code Verification「实践是检验真理的唯一标准」/UnderlyingInquiry「底层探究」/Block/Block的分类/CategoriesOfBlockViewController.m:
--------------------------------------------------------------------------------
 1 | //
 2 | //  CategoriesOfBlockViewController.m
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2021/3/27.
 6 | //
 7 | 
 8 | #import "CategoriesOfBlockViewController.h"
 9 | 
10 | @interface CategoriesOfBlockViewController ()
11 | 
12 | @end
13 | 
14 | @implementation CategoriesOfBlockViewController
15 | 
16 | - (void)viewDidLoad {
17 |     [super viewDidLoad];
18 |     // Do any additional setup after loading the view.
19 | }
20 | 
21 | /*
22 | #pragma mark - Navigation
23 | 
24 | // In a storyboard-based application, you will often want to do a little preparation before navigation
25 | - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
26 |     // Get the new view controller using [segue destinationViewController].
27 |     // Pass the selected object to the new view controller.
28 | }
29 | */
30 | 
31 | @end
32 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/Code Verification「实践是检验真理的唯一标准」/UnderlyingInquiry「底层探究」/Block/UI_BlockBaseTableViewController.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  UI_BlockBaseTableViewController.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2021/3/27.
 6 | //
 7 | 
 8 | #import "BaseTableViewController.h"
 9 | 
10 | NS_ASSUME_NONNULL_BEGIN
11 | 
12 | @interface UI_BlockBaseTableViewController : BaseTableViewController
13 | 
14 | @end
15 | 
16 | NS_ASSUME_NONNULL_END
17 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/Code Verification「实践是检验真理的唯一标准」/UnderlyingInquiry「底层探究」/Block/UI_BlockBaseTableViewController.m:
--------------------------------------------------------------------------------
 1 | //
 2 | //  UI_BlockBaseTableViewController.m
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2021/3/27.
 6 | //
 7 | 
 8 | #import "UI_BlockBaseTableViewController.h"
 9 | 
10 | @interface UI_BlockBaseTableViewController ()
11 | 
12 | @end
13 | 
14 | @implementation UI_BlockBaseTableViewController
15 | 
16 | - (void)viewDidLoad {
17 |     [super viewDidLoad];
18 |     // Do any additional setup after loading the view.
19 | }
20 | 
21 | 
22 | - (NSArray *)titles
23 | {
24 |     return @[
25 |         @"Block的分类",
26 |         @"__block",
27 |         @"Block实战"
28 |     ];
29 | }
30 | 
31 | - (NSArray *)vcs
32 | {
33 |     return @[
34 |         @"CategoriesOfBlockViewController",
35 |         @"__blockViewController",
36 |         @"Block1ViewController"
37 |     ];
38 | }
39 | 
40 | @end
41 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/Code Verification「实践是检验真理的唯一标准」/UnderlyingInquiry「底层探究」/Block/__block/__blockViewController.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  __blockViewController.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2021/3/27.
 6 | //
 7 | 
 8 | #import 
 9 | 
10 | NS_ASSUME_NONNULL_BEGIN
11 | 
12 | @interface __blockViewController : UIViewController
13 | 
14 | @end
15 | 
16 | NS_ASSUME_NONNULL_END
17 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/Code Verification「实践是检验真理的唯一标准」/UnderlyingInquiry「底层探究」/Block/__block/__blockViewController.m:
--------------------------------------------------------------------------------
 1 | //
 2 | //  __blockViewController.m
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2021/3/27.
 6 | //
 7 | 
 8 | #import "__blockViewController.h"
 9 | 
10 | @interface __blockViewController ()
11 | 
12 | @end
13 | 
14 | @implementation __blockViewController
15 | 
16 | - (void)viewDidLoad {
17 |     [super viewDidLoad];
18 |     // Do any additional setup after loading the view.
19 |     
20 |     
21 |     __block int age = 29;
22 |     
23 |     void (^ChangeAgeBlock)(void) = ^(){
24 |         age = 60;
25 |     };
26 |     
27 |     NSLog(@"11 age is %d",age);
28 |     
29 |     ChangeAgeBlock();
30 |     
31 |     NSLog(@"22 age is %d",age);
32 | 
33 | }
34 | 
35 | @end
36 | 
37 | 
38 | 
39 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/Code Verification「实践是检验真理的唯一标准」/UnderlyingInquiry「底层探究」/UnderlyingInquiryBaseTableViewController.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  UnderlyingInquiryBaseTableViewController.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2021/3/14.
 6 | //
 7 | 
 8 | #import "BaseTableViewController.h"
 9 | 
10 | NS_ASSUME_NONNULL_BEGIN
11 | 
12 | @interface UnderlyingInquiryBaseTableViewController : BaseTableViewController
13 | 
14 | @end
15 | 
16 | NS_ASSUME_NONNULL_END
17 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/Code Verification「实践是检验真理的唯一标准」/UnderlyingInquiry「底层探究」/UnderlyingInquiryBaseTableViewController.m:
--------------------------------------------------------------------------------
 1 | //
 2 | //  UnderlyingInquiryBaseTableViewController.m
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2021/3/14.
 6 | //
 7 | 
 8 | #import "UnderlyingInquiryBaseTableViewController.h"
 9 | 
10 | @interface UnderlyingInquiryBaseTableViewController ()
11 | 
12 | @end
13 | 
14 | @implementation UnderlyingInquiryBaseTableViewController
15 | 
16 | - (void)viewDidLoad {
17 |     [super viewDidLoad];
18 |     // Do any additional setup after loading the view.
19 | }
20 | 
21 | - (NSArray *)titles
22 | {
23 |     return @[
24 |         @"Block",
25 |         @"load和initialize",
26 |         @"performSelector"
27 |     ];
28 | }
29 | 
30 | - (NSArray *)vcs
31 | {
32 |     return @[
33 |         @"UI_BlockBaseTableViewController",
34 |         @"UI_LoadAndInitializeViewController",
35 |         @"PerformSelectorViewController"
36 |     ];
37 | }
38 | 
39 | @end
40 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/Code Verification「实践是检验真理的唯一标准」/UnderlyingInquiry「底层探究」/load和initialize/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AbnerPei/PPDemo/a2dc2fe1328de76a776ebdd657664efb1e2c59b2/PPDemo/Summary「总览」/Code Verification「实践是检验真理的唯一标准」/UnderlyingInquiry「底层探究」/load和initialize/.DS_Store
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/Code Verification「实践是检验真理的唯一标准」/UnderlyingInquiry「底层探究」/load和initialize/Models/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AbnerPei/PPDemo/a2dc2fe1328de76a776ebdd657664efb1e2c59b2/PPDemo/Summary「总览」/Code Verification「实践是检验真理的唯一标准」/UnderlyingInquiry「底层探究」/load和initialize/Models/.DS_Store
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/Code Verification「实践是检验真理的唯一标准」/UnderlyingInquiry「底层探究」/load和initialize/Models/LI_Man+One.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  LI_Man+One.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2021/3/14.
 6 | //
 7 | 
 8 | #import "LI_Man.h"
 9 | 
10 | NS_ASSUME_NONNULL_BEGIN
11 | 
12 | @interface LI_Man (One)
13 | 
14 | //@property (nonatomic, copy) NSString *nickName;
15 | 
16 | @end
17 | 
18 | NS_ASSUME_NONNULL_END
19 | 
20 | 
21 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/Code Verification「实践是检验真理的唯一标准」/UnderlyingInquiry「底层探究」/load和initialize/Models/LI_Man+One.m:
--------------------------------------------------------------------------------
 1 | //
 2 | //  LI_Man+One.m
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2021/3/14.
 6 | //
 7 | 
 8 | #import "LI_Man+One.h"
 9 | #import "PPDemoDebugConfiguration.h"
10 | 
11 | @implementation LI_Man (One)
12 | 
13 | #ifdef k_isEnabledForLoadAndInitialize
14 | + (void)load
15 | {
16 |     NSLog(@"%s",__func__);
17 | }
18 | #endif
19 | 
20 | @end
21 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/Code Verification「实践是检验真理的唯一标准」/UnderlyingInquiry「底层探究」/load和initialize/Models/LI_Man+Two.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  LI_Man+Two.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2021/3/14.
 6 | //
 7 | 
 8 | #import "LI_Man.h"
 9 | 
10 | NS_ASSUME_NONNULL_BEGIN
11 | 
12 | @interface LI_Man (Two)
13 | 
14 | @end
15 | 
16 | NS_ASSUME_NONNULL_END
17 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/Code Verification「实践是检验真理的唯一标准」/UnderlyingInquiry「底层探究」/load和initialize/Models/LI_Man+Two.m:
--------------------------------------------------------------------------------
 1 | //
 2 | //  LI_Man+Two.m
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2021/3/14.
 6 | //
 7 | 
 8 | #import "LI_Man+Two.h"
 9 | #import "PPDemoDebugConfiguration.h"
10 | 
11 | @implementation LI_Man (Two)
12 | 
13 | #ifdef k_isEnabledForLoadAndInitialize
14 | + (void)load
15 | {
16 |     NSLog(@"%s",__func__);
17 | }
18 | #endif
19 | 
20 | @end
21 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/Code Verification「实践是检验真理的唯一标准」/UnderlyingInquiry「底层探究」/load和initialize/Models/LI_Man.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  LI_Man.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2021/3/14.
 6 | //
 7 | 
 8 | #import "LI_Person.h"
 9 | 
10 | NS_ASSUME_NONNULL_BEGIN
11 | 
12 | @interface LI_Man : LI_Person
13 | 
14 | @end
15 | 
16 | NS_ASSUME_NONNULL_END
17 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/Code Verification「实践是检验真理的唯一标准」/UnderlyingInquiry「底层探究」/load和initialize/Models/LI_Man.m:
--------------------------------------------------------------------------------
 1 | //
 2 | //  LI_Man.m
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2021/3/14.
 6 | //
 7 | 
 8 | #import "LI_Man.h"
 9 | #import "PPDemoDebugConfiguration.h"
10 | 
11 | @implementation LI_Man
12 | 
13 | #ifdef k_isEnabledForLoadAndInitialize
14 | + (void)load
15 | {
16 |     NSLog(@"%s",__func__);
17 | }
18 | #endif
19 | 
20 | @end
21 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/Code Verification「实践是检验真理的唯一标准」/UnderlyingInquiry「底层探究」/load和initialize/Models/LI_Person+One.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  LI_Person+One.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2021/3/14.
 6 | //
 7 | 
 8 | #import "LI_Person.h"
 9 | 
10 | NS_ASSUME_NONNULL_BEGIN
11 | 
12 | @interface LI_Person (One)
13 | 
14 | - (void)sayHello;
15 | 
16 | @end
17 | 
18 | NS_ASSUME_NONNULL_END
19 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/Code Verification「实践是检验真理的唯一标准」/UnderlyingInquiry「底层探究」/load和initialize/Models/LI_Person+One.m:
--------------------------------------------------------------------------------
 1 | //
 2 | //  LI_Person+One.m
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2021/3/14.
 6 | //
 7 | 
 8 | #import "LI_Person+One.h"
 9 | //#import "PPDemoDebugConfiguration.h"
10 | 
11 | @implementation LI_Person (One)
12 | 
13 | //#ifdef k_isEnabledForLoadAndInitialize
14 | //+ (void)load
15 | //{
16 | //    NSLog(@"%s",__func__);
17 | //}
18 | //#endif
19 | 
20 | - (void)sayHello
21 | {
22 |     NSLog(@"person sayHello");
23 | }
24 | 
25 | @end
26 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/Code Verification「实践是检验真理的唯一标准」/UnderlyingInquiry「底层探究」/load和initialize/Models/LI_Person+Two.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  LI_Person+Two.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2021/3/14.
 6 | //
 7 | 
 8 | #import "LI_Person.h"
 9 | 
10 | NS_ASSUME_NONNULL_BEGIN
11 | 
12 | @interface LI_Person (Two)
13 | 
14 | @end
15 | 
16 | NS_ASSUME_NONNULL_END
17 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/Code Verification「实践是检验真理的唯一标准」/UnderlyingInquiry「底层探究」/load和initialize/Models/LI_Person+Two.m:
--------------------------------------------------------------------------------
 1 | //
 2 | //  LI_Person+Two.m
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2021/3/14.
 6 | //
 7 | 
 8 | #import "LI_Person+Two.h"
 9 | #import "PPDemoDebugConfiguration.h"
10 | 
11 | @implementation LI_Person (Two)
12 | 
13 | #ifdef k_isEnabledForLoadAndInitialize
14 | + (void)load
15 | {
16 |     NSLog(@"%s",__func__);
17 | }
18 | #endif
19 | 
20 | @end
21 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/Code Verification「实践是检验真理的唯一标准」/UnderlyingInquiry「底层探究」/load和initialize/Models/LI_Person.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  LI_Person.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2021/3/14.
 6 | //
 7 | 
 8 | #import 
 9 | 
10 | NS_ASSUME_NONNULL_BEGIN
11 | 
12 | @interface LI_Person : NSObject
13 | 
14 | - (void)eatFood;
15 | 
16 | @end
17 | 
18 | NS_ASSUME_NONNULL_END
19 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/Code Verification「实践是检验真理的唯一标准」/UnderlyingInquiry「底层探究」/load和initialize/Models/LI_Person.m:
--------------------------------------------------------------------------------
 1 | //
 2 | //  LI_Person.m
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2021/3/14.
 6 | //
 7 | 
 8 | #import "LI_Person.h"
 9 | #import "PPDemoDebugConfiguration.h"
10 | 
11 | @implementation LI_Person
12 | 
13 | #ifdef k_isEnabledForLoadAndInitialize
14 | + (void)load
15 | {
16 |     NSLog(@"%s",__func__);
17 | }
18 | #endif
19 | 
20 | - (void)eatFood
21 | {
22 |     NSLog(@"person eatFood");
23 | }
24 | 
25 | @end
26 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/Code Verification「实践是检验真理的唯一标准」/UnderlyingInquiry「底层探究」/load和initialize/UI_LoadAndInitializeViewController.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  UI_LoadAndInitializeViewController.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2021/3/14.
 6 | //
 7 | 
 8 | #import 
 9 | 
10 | NS_ASSUME_NONNULL_BEGIN
11 | 
12 | @interface UI_LoadAndInitializeViewController : UIViewController
13 | 
14 | @end
15 | 
16 | NS_ASSUME_NONNULL_END
17 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/Code Verification「实践是检验真理的唯一标准」/UnderlyingInquiry「底层探究」/load和initialize/UI_LoadAndInitializeViewController.m:
--------------------------------------------------------------------------------
 1 | //
 2 | //  UI_LoadAndInitializeViewController.m
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2021/3/14.
 6 | //
 7 | 
 8 | #import "UI_LoadAndInitializeViewController.h"
 9 | #import "LI_Man+One.h"
10 | 
11 | @interface UI_LoadAndInitializeViewController ()
12 | 
13 | @end
14 | 
15 | @implementation UI_LoadAndInitializeViewController
16 | 
17 | - (void)viewDidLoad {
18 |     [super viewDidLoad];
19 |     // Do any additional setup after loading the view.
20 |     
21 |     LI_Man *man = [[LI_Man alloc] init];
22 | //    man.nickName = @"AbnerPei";
23 | //    NSLog(@"man's nickName is %@",man.nickName);
24 | }
25 | 
26 | 
27 | @end
28 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/Code Verification「实践是检验真理的唯一标准」/UnderlyingInquiry「底层探究」/performSelector/PerformSelectorViewController.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  PerformSelectorViewController.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2021/3/27.
 6 | //
 7 | 
 8 | #import 
 9 | 
10 | NS_ASSUME_NONNULL_BEGIN
11 | 
12 | @interface PerformSelectorViewController : UIViewController
13 | 
14 | @end
15 | 
16 | NS_ASSUME_NONNULL_END
17 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/Code Verification「实践是检验真理的唯一标准」/UnderlyingInquiry「底层探究」/performSelector/PerformSelectorViewController.m:
--------------------------------------------------------------------------------
 1 | //
 2 | //  PerformSelectorViewController.m
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2021/3/27.
 6 | //
 7 | 
 8 | #import "PerformSelectorViewController.h"
 9 | 
10 | @interface PerformSelectorViewController ()
11 | 
12 | @end
13 | 
14 | @implementation PerformSelectorViewController
15 | 
16 | - (void)viewDidLoad {
17 |     [super viewDidLoad];
18 |     // Do any additional setup after loading the view.
19 | }
20 | 
21 | - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
22 | {
23 |     [self performSelector:@selector(sayHello)];
24 | }
25 | 
26 | - (void)sayHello
27 | {
28 |     NSLog(@"%s",__func__);
29 | }
30 | 
31 | @end
32 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/Code Verification「实践是检验真理的唯一标准」/atomic/CV_AtomicViewController.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  CV_AtomicViewController.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2020/12/20.
 6 | //
 7 | 
 8 | #import 
 9 | 
10 | NS_ASSUME_NONNULL_BEGIN
11 | 
12 | @interface CV_AtomicViewController : UIViewController
13 | 
14 | @end
15 | 
16 | NS_ASSUME_NONNULL_END
17 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/Code Verification「实践是检验真理的唯一标准」/atomic/CV_AtomicViewController.m:
--------------------------------------------------------------------------------
 1 | //
 2 | //  CV_AtomicViewController.m
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2020/12/20.
 6 | //
 7 | 
 8 | #import "CV_AtomicViewController.h"
 9 | 
10 | @interface CV_AtomicViewController ()
11 | 
12 | @property (atomic, assign) NSInteger age;
13 | 
14 | @end
15 | 
16 | @implementation CV_AtomicViewController
17 | 
18 | - (void)viewDidLoad {
19 |     [super viewDidLoad];
20 |     // Do any additional setup after loading the view.
21 |     self.view.backgroundColor = UIColor.whiteColor;
22 |     
23 |     [self test];
24 | }
25 | 
26 | - (void)test
27 | {
28 |     dispatch_queue_t globalQueue = dispatch_get_global_queue(0, 0);
29 |     dispatch_async(globalQueue, ^{
30 |         for (int i = 0; i < 1000; i++) {
31 |             self.age += 1;
32 |         }
33 |         NSLog(@"self.age = %ld",(long)self.age);
34 |     });
35 | }
36 | 
37 | 
38 | 
39 | @end
40 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/Code Verification「实践是检验真理的唯一标准」/layoutSubviews调用时机/CV_layoutSubviewsViewController.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  CV_layoutSubviewsViewController.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2021/3/28.
 6 | //
 7 | 
 8 | #import 
 9 | 
10 | NS_ASSUME_NONNULL_BEGIN
11 | 
12 | @interface CV_layoutSubviewsViewController : UIViewController
13 | 
14 | @end
15 | 
16 | NS_ASSUME_NONNULL_END
17 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/Code Verification「实践是检验真理的唯一标准」/layoutSubviews调用时机/LSCustomView.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  LSCustomView.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2021/3/28.
 6 | //
 7 | 
 8 | #import 
 9 | 
10 | NS_ASSUME_NONNULL_BEGIN
11 | 
12 | @interface LSCustomView : UIView
13 | 
14 | @end
15 | 
16 | NS_ASSUME_NONNULL_END
17 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/Code Verification「实践是检验真理的唯一标准」/layoutSubviews调用时机/LSCustomView.m:
--------------------------------------------------------------------------------
 1 | //
 2 | //  LSCustomView.m
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2021/3/28.
 6 | //
 7 | 
 8 | #import "LSCustomView.h"
 9 | 
10 | @implementation LSCustomView
11 | 
12 | /*
13 | // Only override drawRect: if you perform custom drawing.
14 | // An empty implementation adversely affects performance during animation.
15 | - (void)drawRect:(CGRect)rect {
16 |     // Drawing code
17 | }
18 | */
19 | 
20 | - (void)layoutSubviews
21 | {
22 |     NSLog(@"%s",__func__);
23 | }
24 | 
25 | @end
26 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/Code Verification「实践是检验真理的唯一标准」/深拷贝和浅拷贝/CV_ObjectCopyingViewController.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  CV_ObjectCopyingViewController.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by AbnerPei on 2021/3/8.
 6 | //
 7 | 
 8 | #import 
 9 | 
10 | NS_ASSUME_NONNULL_BEGIN
11 | 
12 | @interface CV_ObjectCopyingViewController : UIViewController
13 | 
14 | @end
15 | 
16 | NS_ASSUME_NONNULL_END
17 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/ExampleBaseUI/BaseTableViewController.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  BaseTableViewController.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2020/11/20.
 6 | //
 7 | 
 8 | #import 
 9 | 
10 | NS_ASSUME_NONNULL_BEGIN
11 | 
12 | @interface BaseTableViewController : UIViewController
13 | 
14 | @property (nonatomic, strong) UITableView *tableView;
15 | 
16 | @property (nonatomic, copy) NSArray *titles;
17 | 
18 | @property (nonatomic, copy) NSArray *vcs;
19 | 
20 | @end
21 | 
22 | NS_ASSUME_NONNULL_END
23 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/Macros「宏」/PPMacros.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  PPMacros.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by AbnerPei on 2021/5/15.
 6 | //
 7 | 
 8 | #ifndef PPMacros_h
 9 | #define PPMacros_h
10 | 
11 | /// 两个'##'表示连接
12 | #define PPLazy(Class, pName, code) - (Class *)pName\
13 | {\
14 |     if (!_##pName) {\
15 |         _##pName = [[Class alloc] init];\
16 |         code\
17 |     }\
18 |     return _##pName;\
19 | }
20 | 
21 | #define PPLazyButton(btName, code) - (UIButton *)btName\
22 | {\
23 |     if (!_##btName) {\
24 |          _##btName = [UIButton buttonWithType:UIButtonTypeCustom];\
25 |         code\
26 |     }\
27 |     return _##btName;\
28 | }
29 | 
30 | #define PPLazyGenArray(GenClass, arr) - (NSMutableArray *)arr\
31 | {\
32 |     if (!_##arr) {\
33 |         _##arr = [NSMutableArray array];\
34 |     }\
35 |     return _##arr;\
36 | }
37 | 
38 | 
39 | #endif /* PPMacros_h */
40 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/OpenSourceLibs「开源库」/Masonry/MasonryBaseTableViewController.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  MasonryBaseTableViewController.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by AbnerPei on 2021/5/18.
 6 | //
 7 | 
 8 | #import "BaseTableViewController.h"
 9 | 
10 | NS_ASSUME_NONNULL_BEGIN
11 | 
12 | @interface MasonryBaseTableViewController : BaseTableViewController
13 | 
14 | @end
15 | 
16 | NS_ASSUME_NONNULL_END
17 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/OpenSourceLibs「开源库」/Masonry/MasonryBaseTableViewController.m:
--------------------------------------------------------------------------------
 1 | //
 2 | //  MasonryBaseTableViewController.m
 3 | //  PPDemo
 4 | //
 5 | //  Created by AbnerPei on 2021/5/18.
 6 | //
 7 | 
 8 | #import "MasonryBaseTableViewController.h"
 9 | 
10 | @interface MasonryBaseTableViewController ()
11 | 
12 | @end
13 | 
14 | @implementation MasonryBaseTableViewController
15 | 
16 | - (void)viewDidLoad {
17 |     [super viewDidLoad];
18 |     // Do any additional setup after loading the view.
19 | }
20 | 
21 | - (NSArray *)titles
22 | {
23 |     return @[
24 |         @"仿JD|TB商详跳转评价",
25 |         @"Masonry简单位移动画",
26 |         @"自动撑开",
27 |         @"两个view(前者隐藏,后者前移)"
28 |     ];
29 | }
30 | 
31 | - (NSArray *)vcs
32 | {
33 |     return @[
34 |         @"MAS_JDGoodsDetailCommentViewController",
35 |         @"MAS_EasyUIMoveViewController",
36 |         @"MAS_AutoSizeViewController",
37 |         @"MAS_TwoViewHiddenViewController"
38 |     ];
39 | }
40 | @end
41 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/OpenSourceLibs「开源库」/Masonry/两个view(前者隐藏,后者前移)/MAS_CommentModel.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  MAS_CommentModel.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by AbnerPei on 2021/5/22.
 6 | //
 7 | 
 8 | #import 
 9 | 
10 | NS_ASSUME_NONNULL_BEGIN
11 | 
12 | @interface MAS_CommentModel : NSObject
13 | 
14 | @property (nonatomic, assign) BOOL isOriginal;
15 | 
16 | @end
17 | 
18 | NS_ASSUME_NONNULL_END
19 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/OpenSourceLibs「开源库」/Masonry/两个view(前者隐藏,后者前移)/MAS_CommentModel.m:
--------------------------------------------------------------------------------
 1 | //
 2 | //  MAS_CommentModel.m
 3 | //  PPDemo
 4 | //
 5 | //  Created by AbnerPei on 2021/5/22.
 6 | //
 7 | 
 8 | #import "MAS_CommentModel.h"
 9 | 
10 | @implementation MAS_CommentModel
11 | 
12 | @end
13 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/OpenSourceLibs「开源库」/Masonry/两个view(前者隐藏,后者前移)/MAS_TwoViewHiddenViewController.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  MAS_TwoViewHiddenViewController.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by AbnerPei on 2021/5/22.
 6 | //
 7 | 
 8 | #import 
 9 | 
10 | NS_ASSUME_NONNULL_BEGIN
11 | 
12 | @interface MAS_TwoViewHiddenViewController : UIViewController
13 | 
14 | @end
15 | 
16 | NS_ASSUME_NONNULL_END
17 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/OpenSourceLibs「开源库」/Masonry/仿JD|TB商详跳转评价/MAS_JDGoodsDetailCommentViewController.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  MAS_JDGoodsDetailCommentViewController.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by AbnerPei on 2021/5/18.
 6 | //
 7 | 
 8 | #import 
 9 | 
10 | NS_ASSUME_NONNULL_BEGIN
11 | 
12 | @interface MAS_JDGoodsDetailCommentViewController : UIViewController
13 | 
14 | @end
15 | 
16 | NS_ASSUME_NONNULL_END
17 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/OpenSourceLibs「开源库」/Masonry/仿JD|TB商详跳转评价/Views/MAS_JDGoodsDetailCommentListView.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  MAS_JDGoodsDetailCommentListView.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by AbnerPei on 2021/5/18.
 6 | //
 7 | 
 8 | #import 
 9 | 
10 | NS_ASSUME_NONNULL_BEGIN
11 | 
12 | @interface MAS_JDGoodsDetailCommentListView : UIView
13 | 
14 | @end
15 | 
16 | NS_ASSUME_NONNULL_END
17 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/OpenSourceLibs「开源库」/Masonry/仿JD|TB商详跳转评价/Views/MAS_JDGoodsDetailCommentListView.m:
--------------------------------------------------------------------------------
 1 | //
 2 | //  MAS_JDGoodsDetailCommentListView.m
 3 | //  PPDemo
 4 | //
 5 | //  Created by AbnerPei on 2021/5/18.
 6 | //
 7 | 
 8 | #import "MAS_JDGoodsDetailCommentListView.h"
 9 | 
10 | @implementation MAS_JDGoodsDetailCommentListView
11 | 
12 | /*
13 | // Only override drawRect: if you perform custom drawing.
14 | // An empty implementation adversely affects performance during animation.
15 | - (void)drawRect:(CGRect)rect {
16 |     // Drawing code
17 | }
18 | */
19 | 
20 | @end
21 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/OpenSourceLibs「开源库」/Masonry/仿JD|TB商详跳转评价/Views/MAS_JDGoodsDetailContainerView.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  MAS_JDGoodsDetailContainerView.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by AbnerPei on 2021/5/18.
 6 | //
 7 | 
 8 | #import 
 9 | 
10 | NS_ASSUME_NONNULL_BEGIN
11 | 
12 | @interface MAS_JDGoodsDetailContainerView : UIView
13 | 
14 | - (void)showCommentListView;
15 | 
16 | @end
17 | 
18 | NS_ASSUME_NONNULL_END
19 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/OpenSourceLibs「开源库」/Masonry/自动撑开/MAS_AutoSizeContentView.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  MAS_AutoSizeContentView.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by AbnerPei on 2021/5/20.
 6 | //
 7 | 
 8 | #import 
 9 | 
10 | NS_ASSUME_NONNULL_BEGIN
11 | 
12 | @interface MAS_AutoSizeContentView : UIView
13 | 
14 | @property (nonatomic, strong) UILabel *commentLabel;
15 | 
16 | @end
17 | 
18 | NS_ASSUME_NONNULL_END
19 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/OpenSourceLibs「开源库」/Masonry/自动撑开/MAS_AutoSizeViewController.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  MAS_AutoSizeViewController.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by AbnerPei on 2021/5/20.
 6 | //
 7 | 
 8 | #import 
 9 | 
10 | NS_ASSUME_NONNULL_BEGIN
11 | 
12 | @interface MAS_AutoSizeViewController : UIViewController
13 | 
14 | @end
15 | 
16 | NS_ASSUME_NONNULL_END
17 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/OpenSourceLibs「开源库」/OpenSourceLibsBaseTableViewController.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  OpenSourceLibsBaseTableViewController.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2020/11/20.
 6 | //
 7 | 
 8 | #import "BaseTableViewController.h"
 9 | 
10 | NS_ASSUME_NONNULL_BEGIN
11 | 
12 | @interface OpenSourceLibsBaseTableViewController : BaseTableViewController
13 | 
14 | @end
15 | 
16 | NS_ASSUME_NONNULL_END
17 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/OpenSourceLibs「开源库」/OpenSourceLibsBaseTableViewController.m:
--------------------------------------------------------------------------------
 1 | //
 2 | //  OpenSourceLibsBaseTableViewController.m
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2020/11/20.
 6 | //
 7 | 
 8 | #import "OpenSourceLibsBaseTableViewController.h"
 9 | 
10 | @interface OpenSourceLibsBaseTableViewController ()
11 | 
12 | @end
13 | 
14 | @implementation OpenSourceLibsBaseTableViewController
15 | 
16 | - (void)viewDidLoad {
17 |     [super viewDidLoad];
18 |     // Do any additional setup after loading the view.
19 | }
20 | 
21 | - (NSArray *)titles
22 | {
23 |     return @[
24 |         @"Masonry"
25 |     ];
26 | }
27 | 
28 | - (NSArray *)vcs
29 | {
30 |     return @[
31 |         @"MasonryBaseTableViewController"
32 |     ];
33 | }
34 | 
35 | @end
36 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/Other「其它」/OtherBaseTableViewController.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  OtherBaseTableViewController.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2021/3/14.
 6 | //
 7 | 
 8 | #import "BaseTableViewController.h"
 9 | 
10 | NS_ASSUME_NONNULL_BEGIN
11 | 
12 | @interface OtherBaseTableViewController : BaseTableViewController
13 | 
14 | @end
15 | 
16 | NS_ASSUME_NONNULL_END
17 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/Other「其它」/OtherBaseTableViewController.m:
--------------------------------------------------------------------------------
 1 | //
 2 | //  OtherBaseTableViewController.m
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2021/3/14.
 6 | //
 7 | 
 8 | #import "OtherBaseTableViewController.h"
 9 | 
10 | @interface OtherBaseTableViewController ()
11 | 
12 | @end
13 | 
14 | @implementation OtherBaseTableViewController
15 | 
16 | - (void)viewDidLoad {
17 |     [super viewDidLoad];
18 |     // Do any additional setup after loading the view.
19 | }
20 | 
21 | - (NSArray *)titles
22 | {
23 |     return @[
24 |         @"单例「严谨的单例和可继承的单例」",
25 |     ];
26 | }
27 | 
28 | - (NSArray *)vcs
29 | {
30 |     return @[
31 |         @"SingletonViewController",
32 |     ];
33 | }
34 | 
35 | @end
36 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/Other「其它」/单例「严谨的单例和可继承的单例」/Singleton.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  Singleton.h
 3 | //  RealSingletonExample
 4 | //
 5 | //  Created by PPAbner on 2019/11/20.
 6 | //  Copyright © 2019 艾波er. All rights reserved.
 7 | //
 8 | 
 9 | #import 
10 | 
11 | NS_ASSUME_NONNULL_BEGIN
12 | 
13 | @interface Singleton : NSObject
14 | 
15 | + (instancetype)shareInstance;
16 | 
17 | @end
18 | 
19 | NS_ASSUME_NONNULL_END
20 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/Other「其它」/单例「严谨的单例和可继承的单例」/SingletonViewController.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  SingletonViewController.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2021/3/14.
 6 | //
 7 | 
 8 | #import 
 9 | 
10 | NS_ASSUME_NONNULL_BEGIN
11 | 
12 | @interface SingletonViewController : UIViewController
13 | 
14 | @end
15 | 
16 | NS_ASSUME_NONNULL_END
17 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/Other「其它」/单例「严谨的单例和可继承的单例」/SubSingleton.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  SubSingleton.h
 3 | //  RealSingletonExample
 4 | //
 5 | //  Created by PPAbner on 2019/11/20.
 6 | //  Copyright © 2019 艾波er. All rights reserved.
 7 | //
 8 | 
 9 | #import "Singleton.h"
10 | 
11 | NS_ASSUME_NONNULL_BEGIN
12 | 
13 | @interface SubSingleton : Singleton
14 | 
15 | @end
16 | 
17 | NS_ASSUME_NONNULL_END
18 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/Other「其它」/单例「严谨的单例和可继承的单例」/SubSingleton.m:
--------------------------------------------------------------------------------
 1 | //
 2 | //  SubSingleton.m
 3 | //  RealSingletonExample
 4 | //
 5 | //  Created by PPAbner on 2019/11/20.
 6 | //  Copyright © 2019 艾波er. All rights reserved.
 7 | //
 8 | 
 9 | #import "SubSingleton.h"
10 | 
11 | @implementation SubSingleton
12 | 
13 | @end
14 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/PPDemoDebugConfiguration.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  PPDemoDebugConfiguration.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2021/3/14.
 6 | //
 7 | 
 8 | #import 
 9 | 
10 | //#define k_isEnabledForLoadAndInitialize 0;
11 | 
12 | NS_ASSUME_NONNULL_BEGIN
13 | 
14 | @interface PPDemoDebugConfiguration : NSObject
15 | 
16 | 
17 | @end
18 | 
19 | NS_ASSUME_NONNULL_END
20 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/PPDemoDebugConfiguration.m:
--------------------------------------------------------------------------------
 1 | //
 2 | //  PPDemoDebugConfiguration.m
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2021/3/14.
 6 | //
 7 | 
 8 | #import "PPDemoDebugConfiguration.h"
 9 | 
10 | @implementation PPDemoDebugConfiguration
11 | 
12 | 
13 | @end
14 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/Special「专题」/CoreAnimation「核心动画」/CABasicAnimation/CABasicAnimationViewController.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  CABasicAnimationViewController.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2021/4/23.
 6 | //
 7 | 
 8 | #import 
 9 | 
10 | NS_ASSUME_NONNULL_BEGIN
11 | 
12 | @interface CABasicAnimationViewController : UIViewController
13 | 
14 | @end
15 | 
16 | NS_ASSUME_NONNULL_END
17 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/Special「专题」/CoreAnimation「核心动画」/CoreAnimationBaseTableViewController.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  CoreAnimationBaseTableViewController.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2020/11/20.
 6 | //
 7 | 
 8 | #import "BaseTableViewController.h"
 9 | 
10 | NS_ASSUME_NONNULL_BEGIN
11 | 
12 | @interface CoreAnimationBaseTableViewController : BaseTableViewController
13 | 
14 | @end
15 | 
16 | NS_ASSUME_NONNULL_END
17 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/Special「专题」/CoreAnimation「核心动画」/CoreAnimationBaseTableViewController.m:
--------------------------------------------------------------------------------
 1 | //
 2 | //  CoreAnimationBaseTableViewController.m
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2020/11/20.
 6 | //
 7 | 
 8 | #import "CoreAnimationBaseTableViewController.h"
 9 | 
10 | @interface CoreAnimationBaseTableViewController ()
11 | 
12 | @end
13 | 
14 | @implementation CoreAnimationBaseTableViewController
15 | 
16 | - (void)viewDidLoad {
17 |     [super viewDidLoad];
18 |     // Do any additional setup after loading the view.
19 | }
20 | 
21 | - (NSArray *)titles
22 | {
23 |     return @[
24 |         @"CABasicAnimation",
25 |     ];
26 | }
27 | 
28 | - (NSArray *)vcs
29 | {
30 |     return @[
31 |         @"CABasicAnimationViewController",
32 |     ];
33 | }
34 | 
35 | @end
36 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/Special「专题」/Metal/MetalBaseTableViewController.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  MetalBaseTableViewController.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2020/11/23.
 6 | //
 7 | 
 8 | #import "BaseTableViewController.h"
 9 | 
10 | NS_ASSUME_NONNULL_BEGIN
11 | 
12 | @interface MetalBaseTableViewController : BaseTableViewController
13 | 
14 | @end
15 | 
16 | NS_ASSUME_NONNULL_END
17 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/Special「专题」/Metal/MetalBaseTableViewController.m:
--------------------------------------------------------------------------------
 1 | //
 2 | //  MetalBaseTableViewController.m
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2020/11/23.
 6 | //
 7 | 
 8 | #import "MetalBaseTableViewController.h"
 9 | 
10 | @interface MetalBaseTableViewController ()
11 | 
12 | @end
13 | 
14 | @implementation MetalBaseTableViewController
15 | 
16 | - (void)viewDidLoad {
17 |     [super viewDidLoad];
18 |     // Do any additional setup after loading the view.
19 | }
20 | 
21 | /*
22 | #pragma mark - Navigation
23 | 
24 | // In a storyboard-based application, you will often want to do a little preparation before navigation
25 | - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
26 |     // Get the new view controller using [segue destinationViewController].
27 |     // Pass the selected object to the new view controller.
28 | }
29 | */
30 | 
31 | @end
32 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/Special「专题」/MutipleThread「多线程」/GCD/信号量/GCD_SemaphoreViewController.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  GCD_SemaphoreViewController.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2020/11/24.
 6 | //
 7 | 
 8 | #import 
 9 | 
10 | NS_ASSUME_NONNULL_BEGIN
11 | 
12 | @interface GCD_SemaphoreViewController : UIViewController
13 | 
14 | @end
15 | 
16 | NS_ASSUME_NONNULL_END
17 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/Special「专题」/MutipleThread「多线程」/GCD/信号量/【GCD】信号量.md:
--------------------------------------------------------------------------------
 1 | #  【GCD】信号量
 2 | 
 3 | ## 参考资料
 4 | - [OC底层知识点之-多线程(四)GCD下篇](https://juejin.cn/post/6895242400605601805#heading-5)
 5 | 
 6 | ### 参考资料拓展
 7 | - [线程同步(互斥锁与信号量的作用与区别)]https://www.cnblogs.com/alinh/p/6905221.html()
 8 | 
 9 | ## 
10 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/Special「专题」/MutipleThread「多线程」/GCD/栅栏函数/GCD_BarrierViewController.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  GCD_BarrierViewController.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2020/11/24.
 6 | //
 7 | 
 8 | #import 
 9 | 
10 | NS_ASSUME_NONNULL_BEGIN
11 | 
12 | @interface GCD_BarrierViewController : UIViewController
13 | 
14 | @end
15 | 
16 | NS_ASSUME_NONNULL_END
17 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/Special「专题」/MutipleThread「多线程」/GCD/栅栏函数/【GCD】栅栏函数.md:
--------------------------------------------------------------------------------
1 | #  【GCD】栅栏函数
2 | 
3 | ## 参考资料
4 | - [OC底层知识点之-多线程(四)GCD下篇](https://juejin.cn/post/6895242400605601805#heading-5)
5 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/Special「专题」/MutipleThread「多线程」/MutipleThreadBaseTableViewController.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  MutipleThreadBaseTableViewController.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2020/11/20.
 6 | //
 7 | 
 8 | #import "BaseTableViewController.h"
 9 | 
10 | NS_ASSUME_NONNULL_BEGIN
11 | 
12 | @interface MutipleThreadBaseTableViewController : BaseTableViewController
13 | 
14 | @end
15 | 
16 | NS_ASSUME_NONNULL_END
17 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/Special「专题」/MutipleThread「多线程」/锁/LockBaseTableViewController.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  LockBaseTableViewController.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by AbnerPei on 2021/3/21.
 6 | //
 7 | 
 8 | #import "BaseTableViewController.h"
 9 | 
10 | NS_ASSUME_NONNULL_BEGIN
11 | 
12 | @interface LockBaseTableViewController : BaseTableViewController
13 | 
14 | @end
15 | 
16 | NS_ASSUME_NONNULL_END
17 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/Special「专题」/MutipleThread「多线程」/锁/LockBaseTableViewController.m:
--------------------------------------------------------------------------------
 1 | //
 2 | //  LockBaseTableViewController.m
 3 | //  PPDemo
 4 | //
 5 | //  Created by AbnerPei on 2021/3/21.
 6 | //
 7 | 
 8 | #import "LockBaseTableViewController.h"
 9 | 
10 | @interface LockBaseTableViewController ()
11 | 
12 | @end
13 | 
14 | @implementation LockBaseTableViewController
15 | 
16 | - (void)viewDidLoad {
17 |     [super viewDidLoad];
18 |     // Do any additional setup after loading the view.
19 | }
20 | 
21 | - (NSArray *)titles
22 | {
23 |     return @[
24 |         @"dispatch_semaphore「信号量」",
25 |     ];
26 | }
27 | 
28 | 
29 | - (NSArray *)vcs
30 | {
31 |     return @[
32 |         @"dispatch_semaphore_ViewController",
33 |     ];
34 | }
35 | 
36 | @end
37 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/Special「专题」/MutipleThread「多线程」/锁/dispatch_semaphore_ViewController.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  dispatch_semaphore_ViewController.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by AbnerPei on 2021/3/21.
 6 | //
 7 | 
 8 | #import 
 9 | 
10 | NS_ASSUME_NONNULL_BEGIN
11 | 
12 | @interface dispatch_semaphore_ViewController : UIViewController
13 | 
14 | @end
15 | 
16 | NS_ASSUME_NONNULL_END
17 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/Special「专题」/OpenGL ES/OpenGLESBaseTableViewController.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  OpenGLESBaseTableViewController.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2020/11/23.
 6 | //
 7 | 
 8 | #import "BaseTableViewController.h"
 9 | 
10 | NS_ASSUME_NONNULL_BEGIN
11 | 
12 | @interface OpenGLESBaseTableViewController : BaseTableViewController
13 | 
14 | @end
15 | 
16 | NS_ASSUME_NONNULL_END
17 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/Special「专题」/OpenGL ES/OpenGLESBaseTableViewController.m:
--------------------------------------------------------------------------------
 1 | //
 2 | //  OpenGLESBaseTableViewController.m
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2020/11/23.
 6 | //
 7 | 
 8 | #import "OpenGLESBaseTableViewController.h"
 9 | 
10 | @interface OpenGLESBaseTableViewController ()
11 | 
12 | @end
13 | 
14 | @implementation OpenGLESBaseTableViewController
15 | 
16 | - (void)viewDidLoad {
17 |     [super viewDidLoad];
18 |     // Do any additional setup after loading the view.
19 | }
20 |  
21 | 
22 | @end
23 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/Special「专题」/SpecialBaseTableViewController.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  SpecialBaseTableViewController.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2020/11/20.
 6 | //
 7 | 
 8 | #import "BaseTableViewController.h"
 9 | 
10 | NS_ASSUME_NONNULL_BEGIN
11 | 
12 | @interface SpecialBaseTableViewController : BaseTableViewController
13 | 
14 | @end
15 | 
16 | NS_ASSUME_NONNULL_END
17 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/Special「专题」/SpecialBaseTableViewController.m:
--------------------------------------------------------------------------------
 1 | //
 2 | //  SpecialBaseTableViewController.m
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2020/11/20.
 6 | //
 7 | 
 8 | #import "SpecialBaseTableViewController.h"
 9 | 
10 | @interface SpecialBaseTableViewController ()
11 | 
12 | @end
13 | 
14 | @implementation SpecialBaseTableViewController
15 | 
16 | - (void)viewDidLoad {
17 |     [super viewDidLoad];
18 |     // Do any additional setup after loading the view.
19 | }
20 | 
21 | - (NSArray *)titles
22 | {
23 |     return @[
24 |         @"CoreAnimation「核心动画」",
25 |         @"MutipleThread「多线程」",
26 |     ];
27 | }
28 | 
29 | - (NSArray *)vcs
30 | {
31 |     return @[
32 |         @"CoreAnimationBaseTableViewController",
33 |         @"MutipleThreadBaseTableViewController",
34 |     ];
35 | }
36 | 
37 | @end
38 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/Swift/Closure(闭包).swift:
--------------------------------------------------------------------------------
 1 | //
 2 | //  Closure(闭包).swift
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2021/4/25.
 6 | //
 7 | 
 8 | import UIKit
 9 | 
10 | class ClosureDemoViewController: UIViewController {
11 |     override func viewDidLoad() {
12 |         print("哈哈哈6666")
13 |     }
14 |     
15 |     
16 | //    func <#name#>(<#parameters#>) -> <#return type#> {
17 | //        <#function body#>
18 | //    }
19 | //
20 | //
21 | //    { (<#parameters#>) -> <#return type#> in
22 | //    <#statements#>
23 | //    }
24 |     
25 | }
26 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/Swift/Function(函数).swift:
--------------------------------------------------------------------------------
 1 | //
 2 | //  Function(函数).swift
 3 | //  PPDemo
 4 | //
 5 | //  Created by AbnerPei on 2021/4/30.
 6 | //
 7 | 
 8 | import UIKit
 9 | 
10 | class FunctionViewController: UIViewController {
11 |     override func viewDidLoad() {
12 |         
13 |         let a:() -> Void = test1;
14 |         
15 |         a()
16 |     }
17 |     
18 |     func test1() -> Void {
19 |         print("今天天气真好")
20 |     }
21 | }
22 | 
23 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/Swift/SwiftBaseTableViewController.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  SwiftBaseTableViewController.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2021/4/25.
 6 | //
 7 | 
 8 | #import "BaseTableViewController.h"
 9 | 
10 | NS_ASSUME_NONNULL_BEGIN
11 | 
12 | @interface SwiftBaseTableViewController : BaseTableViewController
13 | 
14 | @end
15 | 
16 | NS_ASSUME_NONNULL_END
17 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/Swift/SwiftBaseTableViewController.m:
--------------------------------------------------------------------------------
 1 | //
 2 | //  SwiftBaseTableViewController.m
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2021/4/25.
 6 | //
 7 | 
 8 | #import "SwiftBaseTableViewController.h"
 9 | #import "PPDemo-Swift.h"
10 | 
11 | @interface SwiftBaseTableViewController ()
12 | 
13 | @end
14 | 
15 | @implementation SwiftBaseTableViewController
16 | 
17 | - (void)viewDidLoad {
18 |     [super viewDidLoad];
19 |     // Do any additional setup after loading the view.
20 | }
21 | 
22 | - (NSArray *)titles
23 | {
24 |     return @[
25 |         @"函数",
26 |         @"闭包",
27 |     ];
28 | }
29 | 
30 | - (NSArray *)vcs
31 | {
32 |     return @[
33 |         [[FunctionViewController alloc] init],
34 |         [[ClosureDemoViewController alloc] init],
35 |     ];
36 | }
37 | 
38 | 
39 | @end
40 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/SystemAPI「系统API」/ContextMenus「iOS 13.0」/ContextMenusViewController.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  ContextMenusViewController.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2020/12/14.
 6 | //
 7 | 
 8 | #import 
 9 | 
10 | NS_ASSUME_NONNULL_BEGIN
11 | 
12 | @interface ContextMenusViewController : UIViewController
13 | 
14 | @end
15 | 
16 | NS_ASSUME_NONNULL_END
17 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/SystemAPI「系统API」/SystemAPIBaseTableViewController.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  SystemAPIBaseTableViewController.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2020/11/20.
 6 | //
 7 | 
 8 | #import "BaseTableViewController.h"
 9 | 
10 | NS_ASSUME_NONNULL_BEGIN
11 | 
12 | @interface SystemAPIBaseTableViewController : BaseTableViewController
13 | 
14 | @end
15 | 
16 | NS_ASSUME_NONNULL_END
17 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/SystemAPI「系统API」/UICollectionView/FlowLayout/MinimumXXSpacingViewController.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  MinimumXXSpacingViewController.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2020/12/17.
 6 | //
 7 | 
 8 | #import 
 9 | 
10 | NS_ASSUME_NONNULL_BEGIN
11 | 
12 | @interface MinimumXXSpacingViewController : UIViewController
13 | 
14 | @end
15 | 
16 | NS_ASSUME_NONNULL_END
17 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/SystemAPI「系统API」/UICollectionView/UICollectionViewBaseTableViewController.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  UICollectionViewBaseTableViewController.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2020/12/17.
 6 | //
 7 | 
 8 | #import "BaseTableViewController.h"
 9 | 
10 | NS_ASSUME_NONNULL_BEGIN
11 | 
12 | @interface UICollectionViewBaseTableViewController : BaseTableViewController
13 | 
14 | @end
15 | 
16 | NS_ASSUME_NONNULL_END
17 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/SystemAPI「系统API」/UICollectionView/UICollectionViewBaseTableViewController.m:
--------------------------------------------------------------------------------
 1 | //
 2 | //  UICollectionViewBaseTableViewController.m
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2020/12/17.
 6 | //
 7 | 
 8 | #import "UICollectionViewBaseTableViewController.h"
 9 | 
10 | @interface UICollectionViewBaseTableViewController ()
11 | 
12 | @end
13 | 
14 | @implementation UICollectionViewBaseTableViewController
15 | 
16 | - (void)viewDidLoad {
17 |     [super viewDidLoad];
18 |     // Do any additional setup after loading the view.
19 |     self.view.backgroundColor = UIColor.whiteColor;
20 | }
21 | 
22 | - (NSArray *)titles
23 | {
24 |     return @[
25 |         @"minimumLineSpacing和minimumInteritemSpacing",
26 |     ];
27 | }
28 | 
29 | - (NSArray *)vcs
30 | {
31 |     return @[
32 |         @"MinimumXXSpacingViewController",
33 |     ];
34 | }
35 | @end
36 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/SystemAPI「系统API」/WebKit/API简单使用/JSContextAndJSValueViewController.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  JSContextAndJSValueViewController.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by AbnerPei on 2021/3/19.
 6 | //
 7 | 
 8 | #import 
 9 | 
10 | NS_ASSUME_NONNULL_BEGIN
11 | 
12 | @interface JSContextAndJSValueViewController : UIViewController
13 | 
14 | @end
15 | 
16 | NS_ASSUME_NONNULL_END
17 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/SystemAPI「系统API」/WebKit/WebKitBaseTableViewController.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  WebKitBaseTableViewController.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by AbnerPei on 2021/3/19.
 6 | //
 7 | 
 8 | #import "BaseTableViewController.h"
 9 | 
10 | NS_ASSUME_NONNULL_BEGIN
11 | 
12 | @interface WebKitBaseTableViewController : BaseTableViewController
13 | 
14 | @end
15 | 
16 | NS_ASSUME_NONNULL_END
17 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/SystemAPI「系统API」/WebKit/WebKitBaseTableViewController.m:
--------------------------------------------------------------------------------
 1 | //
 2 | //  WebKitBaseTableViewController.m
 3 | //  PPDemo
 4 | //
 5 | //  Created by AbnerPei on 2021/3/19.
 6 | //
 7 | 
 8 | #import "WebKitBaseTableViewController.h"
 9 | 
10 | @interface WebKitBaseTableViewController ()
11 | 
12 | @end
13 | 
14 | @implementation WebKitBaseTableViewController
15 | 
16 | - (void)viewDidLoad {
17 |     [super viewDidLoad];
18 |     // Do any additional setup after loading the view.
19 | }
20 | 
21 | - (NSArray *)titles
22 | {
23 |     return @[
24 |         @"JSContext和JSValue",
25 |     ];
26 | }
27 | 
28 | - (NSArray *)vcs
29 | {
30 |     return @[
31 |         @"JSContextAndJSValueViewController",
32 |     ];
33 | }
34 | 
35 | @end
36 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/SystemAPI「系统API」/多线程/MultiThreadingBaseTableViewController.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  MultiThreadingBaseTableViewController.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2021/3/18.
 6 | //
 7 | 
 8 | #import "BaseTableViewController.h"
 9 | 
10 | NS_ASSUME_NONNULL_BEGIN
11 | 
12 | @interface MultiThreadingBaseTableViewController : BaseTableViewController
13 | 
14 | @end
15 | 
16 | NS_ASSUME_NONNULL_END
17 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/SystemAPI「系统API」/多线程/MultiThreadingBaseTableViewController.m:
--------------------------------------------------------------------------------
 1 | //
 2 | //  MultiThreadingBaseTableViewController.m
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2021/3/18.
 6 | //
 7 | 
 8 | #import "MultiThreadingBaseTableViewController.h"
 9 | 
10 | @interface MultiThreadingBaseTableViewController ()
11 | 
12 | @end
13 | 
14 | @implementation MultiThreadingBaseTableViewController
15 | 
16 | - (void)viewDidLoad {
17 |     [super viewDidLoad];
18 |     // Do any additional setup after loading the view.
19 | }
20 | 
21 | - (NSArray *)titles
22 | {
23 |     return @[
24 |         @"NSOperation",
25 |     ];
26 | }
27 | 
28 | - (NSArray *)vcs
29 | {
30 |     return @[
31 |         @"NSOperationViewController",
32 |     ];
33 | }
34 | 
35 | @end
36 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/SystemAPI「系统API」/多线程/NSOperation/NSOperationViewController.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  NSOperationViewController.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2021/3/18.
 6 | //
 7 | 
 8 | #import 
 9 | 
10 | NS_ASSUME_NONNULL_BEGIN
11 | 
12 | @interface NSOperationViewController : UIViewController
13 | 
14 | @end
15 | 
16 | NS_ASSUME_NONNULL_END
17 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/SystemAPI「系统API」/多线程/NSOperation/NSOperationViewController.m:
--------------------------------------------------------------------------------
 1 | //
 2 | //  NSOperationViewController.m
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2021/3/18.
 6 | //
 7 | 
 8 | #import "NSOperationViewController.h"
 9 | 
10 | @interface NSOperationViewController ()
11 | 
12 | @end
13 | 
14 | @implementation NSOperationViewController
15 | 
16 | - (void)viewDidLoad {
17 |     [super viewDidLoad];
18 |     // Do any additional setup after loading the view.
19 | }
20 | 
21 | /*
22 | #pragma mark - Navigation
23 | 
24 | // In a storyboard-based application, you will often want to do a little preparation before navigation
25 | - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
26 |     // Get the new view controller using [segue destinationViewController].
27 |     // Pass the selected object to the new view controller.
28 | }
29 | */
30 | 
31 | @end
32 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/iOS基础知识/iOSBasicKnowledgeBaseTableViewController.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  iOSBasicKnowledgeBaseTableViewController.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2020/12/30.
 6 | //
 7 | 
 8 | #import "BaseTableViewController.h"
 9 | 
10 | NS_ASSUME_NONNULL_BEGIN
11 | 
12 | @interface iOSBasicKnowledgeBaseTableViewController : BaseTableViewController
13 | 
14 | @end
15 | 
16 | NS_ASSUME_NONNULL_END
17 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/iOS基础知识/layoutSubviews_setNeedsLayout_layoutIfNeeded/LS_SNL_LIN_ViewController.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  LS_SNL_LIN_ViewController.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2020/12/31.
 6 | //
 7 | 
 8 | #import 
 9 | 
10 | NS_ASSUME_NONNULL_BEGIN
11 | 
12 | @interface LS_SNL_LIN_ViewController : UIViewController
13 | 
14 | @end
15 | 
16 | NS_ASSUME_NONNULL_END
17 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/iOS基础知识/layoutSubviews_setNeedsLayout_layoutIfNeeded/LS_SNL_LIN_ViewController.m:
--------------------------------------------------------------------------------
 1 | //
 2 | //  LS_SNL_LIN_ViewController.m
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2020/12/31.
 6 | //
 7 | 
 8 | #import "LS_SNL_LIN_ViewController.h"
 9 | 
10 | @interface LS_SNL_LIN_ViewController ()
11 | 
12 | @end
13 | 
14 | @implementation LS_SNL_LIN_ViewController
15 | 
16 | - (void)viewDidLoad {
17 |     [super viewDidLoad];
18 |     // Do any additional setup after loading the view.
19 | }
20 | 
21 | /*
22 | #pragma mark - Navigation
23 | 
24 | // In a storyboard-based application, you will often want to do a little preparation before navigation
25 | - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
26 |     // Get the new view controller using [segue destinationViewController].
27 |     // Pass the selected object to the new view controller.
28 | }
29 | */
30 | 
31 | @end
32 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/iOS基础知识/一个界面2次present/One2PresentFirstViewController.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  One2PresentFirstViewController.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by AbnerPei on 2021/6/10.
 6 | //
 7 | 
 8 | #import 
 9 | typedef void(^didTappedBlock)(void);
10 | 
11 | NS_ASSUME_NONNULL_BEGIN
12 | 
13 | @interface One2PresentFirstViewController : UIViewController
14 | 
15 | @property (nonatomic, copy)didTappedBlock block;
16 | 
17 | @end
18 | 
19 | NS_ASSUME_NONNULL_END
20 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/iOS基础知识/一个界面2次present/One2PresentFirstViewController.m:
--------------------------------------------------------------------------------
 1 | //
 2 | //  One2PresentFirstViewController.m
 3 | //  PPDemo
 4 | //
 5 | //  Created by AbnerPei on 2021/6/10.
 6 | //
 7 | 
 8 | #import "One2PresentFirstViewController.h"
 9 | 
10 | @interface One2PresentFirstViewController ()
11 | 
12 | @end
13 | 
14 | @implementation One2PresentFirstViewController
15 | 
16 | - (void)viewDidLoad {
17 |     [super viewDidLoad];
18 |     // Do any additional setup after loading the view.
19 | }
20 | 
21 | - (void)viewDidDisappear:(BOOL)animated
22 | {
23 |     [super viewDidDisappear:animated];
24 |     if (self.block) {
25 |         self.block();
26 |     }
27 | }
28 | 
29 | - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
30 | {
31 |     
32 |     
33 |     [self dismissViewControllerAnimated:YES completion:^{
34 |         NSLog(@"111dismiss");
35 |     }];
36 | }
37 | 
38 | @end
39 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/iOS基础知识/一个界面2次present/One2PresentOneViewController.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  One2PresentOneViewController.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by AbnerPei on 2021/6/10.
 6 | //
 7 | 
 8 | #import 
 9 | 
10 | NS_ASSUME_NONNULL_BEGIN
11 | 
12 | @interface One2PresentOneViewController : UIViewController
13 | 
14 | @end
15 | 
16 | NS_ASSUME_NONNULL_END
17 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/iOS基础知识/一个界面2次present/One2PresentSecondViewController.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  One2PresentSecondViewController.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by AbnerPei on 2021/6/10.
 6 | //
 7 | 
 8 | #import 
 9 | 
10 | NS_ASSUME_NONNULL_BEGIN
11 | 
12 | @interface One2PresentSecondViewController : UIViewController
13 | 
14 | @end
15 | 
16 | NS_ASSUME_NONNULL_END
17 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/iOS基础知识/一个界面2次present/One2PresentSecondViewController.m:
--------------------------------------------------------------------------------
 1 | //
 2 | //  One2PresentSecondViewController.m
 3 | //  PPDemo
 4 | //
 5 | //  Created by AbnerPei on 2021/6/10.
 6 | //
 7 | 
 8 | #import "One2PresentSecondViewController.h"
 9 | 
10 | @interface One2PresentSecondViewController ()
11 | 
12 | @end
13 | 
14 | @implementation One2PresentSecondViewController
15 | 
16 | - (void)viewDidLoad {
17 |     [super viewDidLoad];
18 |     // Do any additional setup after loading the view.
19 | }
20 | 
21 | /*
22 | #pragma mark - Navigation
23 | 
24 | // In a storyboard-based application, you will often want to do a little preparation before navigation
25 | - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
26 |     // Get the new view controller using [segue destinationViewController].
27 |     // Pass the selected object to the new view controller.
28 | }
29 | */
30 | 
31 | @end
32 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/iOS基础知识/点语法与—>的区别/PGLAStudent.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  PGLAStudent.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2020/12/30.
 6 | //
 7 | 
 8 | #import 
 9 | 
10 | NS_ASSUME_NONNULL_BEGIN
11 | 
12 | @interface PGLAStudent : NSObject
13 | {
14 |     @public
15 |     NSString *name;
16 | }
17 | 
18 | @property (nonatomic, copy) NSString *nickName;
19 | @end
20 | 
21 | NS_ASSUME_NONNULL_END
22 | 
23 | 
24 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/iOS基础知识/点语法与—>的区别/PGLAStudent.m:
--------------------------------------------------------------------------------
 1 | //
 2 | //  PGLAStudent.m
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2020/12/30.
 6 | //
 7 | 
 8 | #import "PGLAStudent.h"
 9 | 
10 | @implementation PGLAStudent
11 | 
12 | @end
13 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/iOS基础知识/点语法与—>的区别/PointGrammarAndLineArrowViewController.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  PointGrammarAndLineArrowViewController.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2020/12/30.
 6 | //
 7 | 
 8 | #import 
 9 | 
10 | NS_ASSUME_NONNULL_BEGIN
11 | 
12 | @interface PointGrammarAndLineArrowViewController : UIViewController
13 | 
14 | @end
15 | 
16 | NS_ASSUME_NONNULL_END
17 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/iOS基础知识/点语法与—>的区别/PointGrammarAndLineArrowViewController.m:
--------------------------------------------------------------------------------
 1 | //
 2 | //  PointGrammarAndLineArrowViewController.m
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2020/12/30.
 6 | //
 7 | 
 8 | #import "PointGrammarAndLineArrowViewController.h"
 9 | #import "PGLAStudent.h"
10 | 
11 | @interface PointGrammarAndLineArrowViewController ()
12 | 
13 | @end
14 | 
15 | @implementation PointGrammarAndLineArrowViewController
16 | 
17 | - (void)viewDidLoad {
18 |     [super viewDidLoad];
19 |     // Do any additional setup after loading the view.
20 |     self.view.backgroundColor = UIColor.whiteColor;
21 |     
22 |     PGLAStudent *stu = [[PGLAStudent alloc] init];
23 |     stu->name = @"ppabner_name";
24 |     stu.nickName = @"ppabner_nickName";
25 |     NSLog(@"name is     %@",stu->name);
26 |     NSLog(@"nickName is %@",stu.nickName);
27 | }
28 | 
29 | @end
30 | 
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/拓展学习,夯实基础/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AbnerPei/PPDemo/a2dc2fe1328de76a776ebdd657664efb1e2c59b2/PPDemo/Summary「总览」/拓展学习,夯实基础/.DS_Store
--------------------------------------------------------------------------------
/PPDemo/Summary「总览」/拓展学习,夯实基础/DesignPattern「设计模式」/职责链模式「Chain of responsibility」/【设计模式】职责链模式.md:
--------------------------------------------------------------------------------
1 | #  【设计模式】职责链模式
2 | 
3 | ## 参考资料:
4 | - [漫画设计模式:什么是 “职责链模式” ?](https://mp.weixin.qq.com/s/oP3GOPbjg5wHcgtizExThw)
5 | 
6 | 
--------------------------------------------------------------------------------
/PPDemo/ViewController.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  ViewController.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by PPAbner on 2020/11/20.
 6 | //
 7 | 
 8 | #import "BaseTableViewController.h"
 9 | 
10 | @interface ViewController : BaseTableViewController
11 | 
12 | @end
13 | 
14 | 
--------------------------------------------------------------------------------
/PPDemo/main.m:
--------------------------------------------------------------------------------
 1 | //
 2 | //  main.m
 3 | //  PPDemo
 4 | //007
 5 | //  Created by PPAbner on 2020/11/20.
 6 | //
 7 | 
 8 | #import 
 9 | #import "AppDelegate.h"
10 | #import "PPDemoDebugConfiguration.h"
11 | 
12 | int main(int argc, char * argv[]) {
13 |     NSString * appDelegateClassName;
14 |     @autoreleasepool {
15 |         // Setup code that might create autoreleased objects goes here.
16 |         
17 | #ifdef k_isEnabledForLoadAndInitialize
18 |         NSLog(@"appDelegateClassName --- 前");
19 | #endif
20 |         appDelegateClassName = NSStringFromClass([AppDelegate class]);
21 |         
22 | #ifdef k_isEnabledForLoadAndInitialize
23 |         NSLog(@"appDelegateClassName --- 后");
24 | #endif
25 | 
26 |     }
27 |     return UIApplicationMain(argc, argv, nil, appDelegateClassName);
28 | }
29 | 
--------------------------------------------------------------------------------
/PPDemoTests/Info.plist:
--------------------------------------------------------------------------------
 1 | 
 2 | 
 3 | 
 4 | 
 5 | 	CFBundleDevelopmentRegion
 6 | 	$(DEVELOPMENT_LANGUAGE)
 7 | 	CFBundleExecutable
 8 | 	$(EXECUTABLE_NAME)
 9 | 	CFBundleIdentifier
10 | 	$(PRODUCT_BUNDLE_IDENTIFIER)
11 | 	CFBundleInfoDictionaryVersion
12 | 	6.0
13 | 	CFBundleName
14 | 	$(PRODUCT_NAME)
15 | 	CFBundlePackageType
16 | 	$(PRODUCT_BUNDLE_PACKAGE_TYPE)
17 | 	CFBundleShortVersionString
18 | 	1.0
19 | 	CFBundleVersion
20 | 	1
21 | 
22 | 
23 | 
--------------------------------------------------------------------------------
/PPDemoTests/PPDemoTests.m:
--------------------------------------------------------------------------------
 1 | //
 2 | //  PPDemoTests.m
 3 | //  PPDemoTests
 4 | //
 5 | //  Created by PPAbner on 2021/4/24.
 6 | //
 7 | 
 8 | #import 
 9 | 
10 | @interface PPDemoTests : XCTestCase
11 | 
12 | @end
13 | 
14 | @implementation PPDemoTests
15 | 
16 | - (void)setUp {
17 |     // Put setup code here. This method is called before the invocation of each test method in the class.
18 | }
19 | 
20 | - (void)tearDown {
21 |     // Put teardown code here. This method is called after the invocation of each test method in the class.
22 | }
23 | 
24 | - (void)testExample {
25 |     // This is an example of a functional test case.
26 |     // Use XCTAssert and related functions to verify your tests produce the correct results.
27 | }
28 | 
29 | - (void)testPerformanceExample {
30 |     // This is an example of a performance test case.
31 |     [self measureBlock:^{
32 |         // Put the code you want to measure the time of here.
33 |     }];
34 | }
35 | 
36 | @end
37 | 
--------------------------------------------------------------------------------
/PPDemoUITests/Info.plist:
--------------------------------------------------------------------------------
 1 | 
 2 | 
 3 | 
 4 | 
 5 | 	CFBundleDevelopmentRegion
 6 | 	$(DEVELOPMENT_LANGUAGE)
 7 | 	CFBundleExecutable
 8 | 	$(EXECUTABLE_NAME)
 9 | 	CFBundleIdentifier
10 | 	$(PRODUCT_BUNDLE_IDENTIFIER)
11 | 	CFBundleInfoDictionaryVersion
12 | 	6.0
13 | 	CFBundleName
14 | 	$(PRODUCT_NAME)
15 | 	CFBundlePackageType
16 | 	$(PRODUCT_BUNDLE_PACKAGE_TYPE)
17 | 	CFBundleShortVersionString
18 | 	1.0
19 | 	CFBundleVersion
20 | 	1
21 | 
22 | 
23 | 
--------------------------------------------------------------------------------
/Podfile:
--------------------------------------------------------------------------------
 1 | # Uncomment the next line to define a global platform for your project
 2 | platform :ios, '9.0'
 3 | #warn_for_unused_master_specs_repo => false
 4 | source "https://github.com/CocoaPods/Specs.git"
 5 | 
 6 | target 'PPDemo' do
 7 |   # Comment the next line if you don't want to use dynamic frameworks
 8 |   use_frameworks!
 9 | 
10 |   # Pods for PPDemo
11 |   pod 'AFNetworking'
12 |   pod 'SDWebImage', :git => "https://github.com/AbnerPei/SDWebImage.git"
13 |   pod 'Masonry'
14 |   pod 'MJExtension'
15 |   pod 'MJRefresh'
16 |   pod 'WCDB'
17 |   pod 'YYKit'
18 |   pod 'YTKNetwork'
19 |   pod 'Toast'
20 |   
21 |   pod 'PPMaker' #, :path => "../PPMaker"
22 |   pod 'PPTextField' #, :path => "../PPTextField"
23 |   
24 | end
25 | 
26 | post_install do |installer|
27 |   installer.pods_project.targets.each do |target|
28 |     target.build_configurations.each do |config|
29 |     config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64"
30 |     end
31 |   end
32 | end
33 | 
--------------------------------------------------------------------------------
/Pods/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AbnerPei/PPDemo/a2dc2fe1328de76a776ebdd657664efb1e2c59b2/Pods/.DS_Store
--------------------------------------------------------------------------------
/Pods/Local Podspecs/PPTextField.podspec.json:
--------------------------------------------------------------------------------
 1 | {
 2 |   "name": "PPTextField",
 3 |   "version": "0.0.2",
 4 |   "summary": "UITextField各种限制,从此一个属性就能解决!比如:手机号(11位)、密码(只能数字和字母)、最大字符串(是否区分中英文)等等这样的限制,以及实时监测输入文字、结束编辑时回调等。",
 5 |   "description": "最近总算抽空整理一下,支持pod。UITextField各种限制,从此一个属性就能解决!比如:手机号(11位)、密码(只能数字和字母)、最大字符串(是否区分中英文)等等这样的限制,以及实时监测输入文字、结束编辑时回调等。",
 6 |   "homepage": "https://github.com/PPAbner/PPTextField",
 7 |   "license": {
 8 |     "type": "MIT",
 9 |     "text": "         Copyright PPAbner 2016\n"
10 |   },
11 |   "authors": {
12 |     "PPAbner": "chinesemanbobo@163.com"
13 |   },
14 |   "platforms": {
15 |     "ios": "9.0"
16 |   },
17 |   "source": {
18 |     "git": "https://github.com/PPAbner/PPTextField.git",
19 |     "tag": "0.0.2"
20 |   },
21 |   "source_files": "PPTextField/*",
22 |   "public_header_files": "PPTextField/PPTextField.h",
23 |   "requires_arc": true
24 | }
25 | 
--------------------------------------------------------------------------------
/Pods/MJExtension/MJExtension/MJExtension.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  MJExtension.h
 3 | //  MJExtension
 4 | //
 5 | //  Created by mj on 14-1-15.
 6 | //  Copyright (c) 2014年 小码哥. All rights reserved.
 7 | //
 8 | 
 9 | #import 
10 | #import "NSObject+MJCoding.h"
11 | #import "NSObject+MJProperty.h"
12 | #import "NSObject+MJClass.h"
13 | #import "NSObject+MJKeyValue.h"
14 | #import "NSString+MJExtension.h"
15 | #import "MJExtensionConst.h"
16 | 
17 | #import "MJFoundation.h"
18 | 
19 | //! Project version number for MJExtension.
20 | FOUNDATION_EXPORT double MJExtensionVersionNumber;
21 | 
22 | //! Project version string for MJExtension.
23 | FOUNDATION_EXPORT const unsigned char MJExtensionVersionString[];
24 | 
25 | // In this header, you should import all the public headers of your framework using statements like #import 
26 | 
27 | 
28 | 
--------------------------------------------------------------------------------
/Pods/MJExtension/MJExtension/MJFoundation.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  MJFoundation.h
 3 | //  MJExtensionExample
 4 | //
 5 | //  Created by MJ Lee on 14/7/16.
 6 | //  Copyright (c) 2014年 小码哥. All rights reserved.
 7 | //
 8 | 
 9 | #import 
10 | 
11 | @interface MJFoundation : NSObject
12 | 
13 | + (BOOL)isClassFromFoundation:(Class)c;
14 | + (BOOL)isFromNSObjectProtocolProperty:(NSString *)propertyName;
15 | 
16 | @end
17 | 
--------------------------------------------------------------------------------
/Pods/MJExtension/MJExtension/MJPropertyKey.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  MJPropertyKey.h
 3 | //  MJExtensionExample
 4 | //
 5 | //  Created by MJ Lee on 15/8/11.
 6 | //  Copyright (c) 2015年 小码哥. All rights reserved.
 7 | //
 8 | 
 9 | #import 
10 | 
11 | typedef enum {
12 |     MJPropertyKeyTypeDictionary = 0, // 字典的key
13 |     MJPropertyKeyTypeArray // 数组的key
14 | } MJPropertyKeyType;
15 | 
16 | /**
17 |  *  属性的key
18 |  */
19 | @interface MJPropertyKey : NSObject
20 | /** key的名字 */
21 | @property (copy,   nonatomic) NSString *name;
22 | /** key的种类,可能是@"10",可能是@"age" */
23 | @property (assign, nonatomic) MJPropertyKeyType type;
24 | 
25 | /**
26 |  *  根据当前的key,也就是name,从object(字典或者数组)中取值
27 |  */
28 | - (id)valueInObject:(id)object;
29 | 
30 | @end
31 | 
--------------------------------------------------------------------------------
/Pods/MJExtension/MJExtension/MJPropertyKey.m:
--------------------------------------------------------------------------------
 1 | //
 2 | //  MJPropertyKey.m
 3 | //  MJExtensionExample
 4 | //
 5 | //  Created by MJ Lee on 15/8/11.
 6 | //  Copyright (c) 2015年 小码哥. All rights reserved.
 7 | //
 8 | 
 9 | #import "MJPropertyKey.h"
10 | 
11 | @implementation MJPropertyKey
12 | 
13 | - (id)valueInObject:(id)object
14 | {
15 |     if ([object isKindOfClass:[NSDictionary class]] && self.type == MJPropertyKeyTypeDictionary) {
16 |         return object[self.name];
17 |     } else if ([object isKindOfClass:[NSArray class]] && self.type == MJPropertyKeyTypeArray) {
18 |         NSArray *array = object;
19 |         NSUInteger index = self.name.intValue;
20 |         if (index < array.count) return array[index];
21 |         return nil;
22 |     }
23 |     return nil;
24 | }
25 | @end
26 | 
--------------------------------------------------------------------------------
/Pods/MJExtension/MJExtension/NSString+MJExtension.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  NSString+MJExtension.h
 3 | //  MJExtensionExample
 4 | //
 5 | //  Created by MJ Lee on 15/6/7.
 6 | //  Copyright (c) 2015年 小码哥. All rights reserved.
 7 | //
 8 | 
 9 | #import 
10 | #import "MJExtensionConst.h"
11 | 
12 | @interface NSString (MJExtension)
13 | /**
14 |  *  驼峰转下划线(loveYou -> love_you)
15 |  */
16 | - (NSString *)mj_underlineFromCamel;
17 | /**
18 |  *  下划线转驼峰(love_you -> loveYou)
19 |  */
20 | - (NSString *)mj_camelFromUnderline;
21 | /**
22 |  * 首字母变大写
23 |  */
24 | - (NSString *)mj_firstCharUpper;
25 | /**
26 |  * 首字母变小写
27 |  */
28 | - (NSString *)mj_firstCharLower;
29 | 
30 | - (BOOL)mj_isPureInt;
31 | 
32 | - (NSURL *)mj_url;
33 | @end
34 | 
--------------------------------------------------------------------------------
/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 | NS_ASSUME_NONNULL_BEGIN
12 | 
13 | @interface MJRefreshAutoFooter : MJRefreshFooter
14 | /** 是否自动刷新(默认为YES) */
15 | @property (assign, nonatomic, getter=isAutomaticallyRefresh) BOOL automaticallyRefresh;
16 | 
17 | /** 当底部控件出现多少时就自动刷新(默认为1.0,也就是底部控件完全出现时,才会自动刷新) */
18 | @property (assign, nonatomic) CGFloat appearencePercentTriggerAutoRefresh MJRefreshDeprecated("请使用triggerAutomaticallyRefreshPercent属性");
19 | 
20 | /** 当底部控件出现多少时就自动刷新(默认为1.0,也就是底部控件完全出现时,才会自动刷新) */
21 | @property (assign, nonatomic) CGFloat triggerAutomaticallyRefreshPercent;
22 | 
23 | /** 自动触发次数, 默认为 1, 仅在拖拽 ScrollView 时才生效,
24 |  
25 |  如果为 -1, 则为无限触发
26 |  */
27 | @property (nonatomic) NSInteger autoTriggerTimes;
28 | @end
29 | 
30 | NS_ASSUME_NONNULL_END
31 | 
--------------------------------------------------------------------------------
/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 | NS_ASSUME_NONNULL_BEGIN
12 | 
13 | @interface MJRefreshBackFooter : MJRefreshFooter
14 | 
15 | @end
16 | 
17 | NS_ASSUME_NONNULL_END
18 | 
--------------------------------------------------------------------------------
/Pods/MJRefresh/MJRefresh/Base/MJRefreshTrailer.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  MJRefreshTrailer.h
 3 | //  MJRefresh
 4 | //
 5 | //  Created by kinarobin on 2020/5/3.
 6 | //  Copyright © 2020 小码哥. All rights reserved.
 7 | //
 8 | 
 9 | #import "MJRefreshComponent.h"
10 | 
11 | NS_ASSUME_NONNULL_BEGIN
12 | 
13 | @interface MJRefreshTrailer : MJRefreshComponent
14 | 
15 | /** 创建trailer*/
16 | + (instancetype)trailerWithRefreshingBlock:(MJRefreshComponentAction)refreshingBlock;
17 | /** 创建trailer */
18 | + (instancetype)trailerWithRefreshingTarget:(id)target refreshingAction:(SEL)action;
19 | 
20 | /** 忽略多少scrollView的contentInset的right */
21 | @property (assign, nonatomic) CGFloat ignoredScrollViewContentInsetRight;
22 | 
23 | 
24 | @end
25 | 
26 | NS_ASSUME_NONNULL_END
27 | 
--------------------------------------------------------------------------------
/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 | NS_ASSUME_NONNULL_BEGIN
12 | 
13 | @interface MJRefreshAutoGifFooter : MJRefreshAutoStateFooter
14 | @property (weak, nonatomic, readonly) UIImageView *gifView;
15 | 
16 | /** 设置state状态下的动画图片images 动画持续时间duration*/
17 | - (void)setImages:(NSArray *)images duration:(NSTimeInterval)duration forState:(MJRefreshState)state;
18 | - (void)setImages:(NSArray *)images forState:(MJRefreshState)state;
19 | @end
20 | 
21 | NS_ASSUME_NONNULL_END
22 | 
--------------------------------------------------------------------------------
/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 | NS_ASSUME_NONNULL_BEGIN
12 | 
13 | @interface MJRefreshAutoNormalFooter : MJRefreshAutoStateFooter
14 | @property (weak, nonatomic, readonly) UIActivityIndicatorView *loadingView;
15 | 
16 | /** 菊花的样式 */
17 | @property (assign, nonatomic) UIActivityIndicatorViewStyle activityIndicatorViewStyle MJRefreshDeprecated("first deprecated in 3.2.2 - Use `loadingView` property");
18 | @end
19 | 
20 | 
21 | NS_ASSUME_NONNULL_END
22 | 
--------------------------------------------------------------------------------
/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 | NS_ASSUME_NONNULL_BEGIN
12 | 
13 | @interface MJRefreshAutoStateFooter : MJRefreshAutoFooter
14 | /** 文字距离圈圈、箭头的距离 */
15 | @property (assign, nonatomic) CGFloat labelLeftInset;
16 | /** 显示刷新状态的label */
17 | @property (weak, nonatomic, readonly) UILabel *stateLabel;
18 | 
19 | /** 设置state状态下的文字 */
20 | - (void)setTitle:(NSString *)title forState:(MJRefreshState)state;
21 | 
22 | /** 隐藏刷新状态的文字 */
23 | @property (assign, nonatomic, getter=isRefreshingTitleHidden) BOOL refreshingTitleHidden;
24 | @end
25 | 
26 | NS_ASSUME_NONNULL_END
27 | 
--------------------------------------------------------------------------------
/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 | NS_ASSUME_NONNULL_BEGIN
12 | 
13 | @interface MJRefreshBackGifFooter : MJRefreshBackStateFooter
14 | @property (weak, nonatomic, readonly) UIImageView *gifView;
15 | 
16 | /** 设置state状态下的动画图片images 动画持续时间duration*/
17 | - (void)setImages:(NSArray *)images duration:(NSTimeInterval)duration forState:(MJRefreshState)state;
18 | - (void)setImages:(NSArray *)images forState:(MJRefreshState)state;
19 | @end
20 | 
21 | NS_ASSUME_NONNULL_END
22 | 
--------------------------------------------------------------------------------
/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 | NS_ASSUME_NONNULL_BEGIN
12 | 
13 | @interface MJRefreshBackNormalFooter : MJRefreshBackStateFooter
14 | @property (weak, nonatomic, readonly) UIImageView *arrowView;
15 | @property (weak, nonatomic, readonly) UIActivityIndicatorView *loadingView;
16 | 
17 | /** 菊花的样式 */
18 | @property (assign, nonatomic) UIActivityIndicatorViewStyle activityIndicatorViewStyle MJRefreshDeprecated("first deprecated in 3.2.2 - Use `loadingView` property");
19 | @end
20 | 
21 | NS_ASSUME_NONNULL_END
22 | 
--------------------------------------------------------------------------------
/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 | NS_ASSUME_NONNULL_BEGIN
12 | 
13 | @interface MJRefreshBackStateFooter : MJRefreshBackFooter
14 | /** 文字距离圈圈、箭头的距离 */
15 | @property (assign, nonatomic) CGFloat labelLeftInset;
16 | /** 显示刷新状态的label */
17 | @property (weak, nonatomic, readonly) UILabel *stateLabel;
18 | /** 设置state状态下的文字 */
19 | - (void)setTitle:(NSString *)title forState:(MJRefreshState)state;
20 | 
21 | /** 获取state状态下的title */
22 | - (NSString *)titleForState:(MJRefreshState)state;
23 | @end
24 | 
25 | NS_ASSUME_NONNULL_END
26 | 
--------------------------------------------------------------------------------
/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 | NS_ASSUME_NONNULL_BEGIN
12 | 
13 | @interface MJRefreshGifHeader : MJRefreshStateHeader
14 | @property (weak, nonatomic, readonly) UIImageView *gifView;
15 | 
16 | /** 设置state状态下的动画图片images 动画持续时间duration*/
17 | - (void)setImages:(NSArray *)images duration:(NSTimeInterval)duration forState:(MJRefreshState)state;
18 | - (void)setImages:(NSArray *)images forState:(MJRefreshState)state;
19 | @end
20 | 
21 | NS_ASSUME_NONNULL_END
22 | 
--------------------------------------------------------------------------------
/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 | NS_ASSUME_NONNULL_BEGIN
12 | 
13 | @interface MJRefreshNormalHeader : MJRefreshStateHeader
14 | @property (weak, nonatomic, readonly) UIImageView *arrowView;
15 | @property (weak, nonatomic, readonly) UIActivityIndicatorView *loadingView;
16 | 
17 | 
18 | /** 菊花的样式 */
19 | @property (assign, nonatomic) UIActivityIndicatorViewStyle activityIndicatorViewStyle MJRefreshDeprecated("first deprecated in 3.2.2 - Use `loadingView` property");
20 | @end
21 | 
22 | NS_ASSUME_NONNULL_END
23 | 
--------------------------------------------------------------------------------
/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 | NS_ASSUME_NONNULL_BEGIN
12 | 
13 | @interface MJRefreshStateHeader : MJRefreshHeader
14 | #pragma mark - 刷新时间相关
15 | /** 利用这个block来决定显示的更新时间文字 */
16 | @property (copy, nonatomic, nullable) NSString *(^lastUpdatedTimeText)(NSDate * _Nullable lastUpdatedTime);
17 | /** 显示上一次刷新时间的label */
18 | @property (weak, nonatomic, readonly) UILabel *lastUpdatedTimeLabel;
19 | 
20 | #pragma mark - 状态相关
21 | /** 文字距离圈圈、箭头的距离 */
22 | @property (assign, nonatomic) CGFloat labelLeftInset;
23 | /** 显示刷新状态的label */
24 | @property (weak, nonatomic, readonly) UILabel *stateLabel;
25 | /** 设置state状态下的文字 */
26 | - (void)setTitle:(NSString *)title forState:(MJRefreshState)state;
27 | @end
28 | 
29 | NS_ASSUME_NONNULL_END
30 | 
--------------------------------------------------------------------------------
/Pods/MJRefresh/MJRefresh/Custom/Trailer/MJRefreshNormalTrailer.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  MJRefreshNormalTrailer.h
 3 | //  MJRefreshExample
 4 | //
 5 | //  Created by kinarobin on 2020/5/3.
 6 | //  Copyright © 2020 小码哥. All rights reserved.
 7 | //
 8 | 
 9 | #import "MJRefreshStateTrailer.h"
10 | 
11 | NS_ASSUME_NONNULL_BEGIN
12 | 
13 | @interface MJRefreshNormalTrailer : MJRefreshStateTrailer
14 | 
15 | @property (weak, nonatomic, readonly) UIImageView *arrowView;
16 | 
17 | @end
18 | 
19 | NS_ASSUME_NONNULL_END
20 | 
--------------------------------------------------------------------------------
/Pods/MJRefresh/MJRefresh/Custom/Trailer/MJRefreshStateTrailer.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  MJRefreshStateTrailer.h
 3 | //  MJRefreshExample
 4 | //
 5 | //  Created by kinarobin on 2020/5/3.
 6 | //  Copyright © 2020 小码哥. All rights reserved.
 7 | //
 8 | 
 9 | #import "MJRefreshTrailer.h"
10 | 
11 | NS_ASSUME_NONNULL_BEGIN
12 | 
13 | 
14 | @interface MJRefreshStateTrailer : MJRefreshTrailer
15 | 
16 | #pragma mark - 状态相关
17 | /** 显示刷新状态的label */
18 | @property (weak, nonatomic, readonly) UILabel *stateLabel;
19 | /** 设置state状态下的文字 */
20 | - (void)setTitle:(NSString *)title forState:(MJRefreshState)state;
21 | 
22 | @end
23 | 
24 | NS_ASSUME_NONNULL_END
25 | 
--------------------------------------------------------------------------------
/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/arrow@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AbnerPei/PPDemo/a2dc2fe1328de76a776ebdd657664efb1e2c59b2/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/arrow@2x.png
--------------------------------------------------------------------------------
/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/en.lproj/Localizable.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AbnerPei/PPDemo/a2dc2fe1328de76a776ebdd657664efb1e2c59b2/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/en.lproj/Localizable.strings
--------------------------------------------------------------------------------
/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/ko.lproj/Localizable.strings:
--------------------------------------------------------------------------------
 1 | "MJRefreshHeaderIdleText" = "아래로 당겨 새로고침";
 2 | "MJRefreshHeaderPullingText" = "놓으면 새로고침";
 3 | "MJRefreshHeaderRefreshingText" = "로딩중...";
 4 | 
 5 | "MJRefreshAutoFooterIdleText" = "탭 또는 위로 당겨 로드함";
 6 | "MJRefreshAutoFooterRefreshingText" = "로딩중...";
 7 | "MJRefreshAutoFooterNoMoreDataText" = "더이상 데이터 없음";
 8 | 
 9 | "MJRefreshBackFooterIdleText" = "위로 당겨 더 로드 가능";
10 | "MJRefreshBackFooterPullingText" = "놓으면 더 로드됨.";
11 | "MJRefreshBackFooterRefreshingText" = "로딩중...";
12 | "MJRefreshBackFooterNoMoreDataText" = "더이상 데이터 없음";
13 | 
14 | "MJRefreshHeaderLastTimeText" = "마지막 업데이트: ";
15 | "MJRefreshHeaderDateTodayText" = "오늘";
16 | "MJRefreshHeaderNoneLastDateText" = "기록 없음";
17 | 
--------------------------------------------------------------------------------
/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/ru.lproj/Localizable.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AbnerPei/PPDemo/a2dc2fe1328de76a776ebdd657664efb1e2c59b2/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/ru.lproj/Localizable.strings
--------------------------------------------------------------------------------
/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/trail_arrow@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AbnerPei/PPDemo/a2dc2fe1328de76a776ebdd657664efb1e2c59b2/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/trail_arrow@2x.png
--------------------------------------------------------------------------------
/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/uk.lproj/Localizable.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AbnerPei/PPDemo/a2dc2fe1328de76a776ebdd657664efb1e2c59b2/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/uk.lproj/Localizable.strings
--------------------------------------------------------------------------------
/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/zh-Hans.lproj/Localizable.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AbnerPei/PPDemo/a2dc2fe1328de76a776ebdd657664efb1e2c59b2/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/zh-Hans.lproj/Localizable.strings
--------------------------------------------------------------------------------
/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/zh-Hant.lproj/Localizable.strings:
--------------------------------------------------------------------------------
 1 | "MJRefreshHeaderIdleText" = "下拉可以刷新";
 2 | "MJRefreshHeaderPullingText" = "鬆開立即刷新";
 3 | "MJRefreshHeaderRefreshingText" = "正在刷新數據中...";
 4 | 
 5 | "MJRefreshTrailerIdleText" = "滑動查看圖文詳情";
 6 | "MJRefreshTrailerPullingText" = "釋放查看圖文詳情";
 7 | 
 8 | "MJRefreshAutoFooterIdleText" = "點擊或上拉加載更多";
 9 | "MJRefreshAutoFooterRefreshingText" = "正在加載更多的數據...";
10 | "MJRefreshAutoFooterNoMoreDataText" = "已經全部加載完畢";
11 | 
12 | "MJRefreshBackFooterIdleText" = "上拉可以加載更多";
13 | "MJRefreshBackFooterPullingText" = "鬆開立即加載更多";
14 | "MJRefreshBackFooterRefreshingText" = "正在加載更多的數據...";
15 | "MJRefreshBackFooterNoMoreDataText" = "已經全部加載完畢";
16 | 
17 | "MJRefreshHeaderLastTimeText" = "最後更新:";
18 | "MJRefreshHeaderDateTodayText" = "今天";
19 | "MJRefreshHeaderNoneLastDateText" = "無記錄";
20 | 
--------------------------------------------------------------------------------
/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"
15 | 
16 | #import "MJRefreshNormalTrailer.h"
17 | 
--------------------------------------------------------------------------------
/Pods/MJRefresh/MJRefresh/MJRefreshConfig.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  MJRefreshConfig.h
 3 | //
 4 | //  Created by Frank on 2018/11/27.
 5 | //  Copyright © 2018 小码哥. All rights reserved.
 6 | //
 7 | 
 8 | #import 
 9 | 
10 | NS_ASSUME_NONNULL_BEGIN
11 | 
12 | @interface MJRefreshConfig : NSObject
13 | 
14 | /** 默认使用的语言版本, 默认为 nil. 将随系统的语言自动改变 */
15 | @property (copy, nonatomic, nullable) NSString *languageCode;
16 | 
17 | /** @return Singleton Config instance */
18 | + (instancetype)defaultConfig;
19 | 
20 | - (instancetype)init NS_UNAVAILABLE;
21 | + (instancetype)new NS_UNAVAILABLE;
22 | 
23 | @end
24 | 
25 | NS_ASSUME_NONNULL_END
26 | 
--------------------------------------------------------------------------------
/Pods/MJRefresh/MJRefresh/MJRefreshConfig.m:
--------------------------------------------------------------------------------
 1 | //
 2 | //  MJRefreshConfig.m
 3 | //
 4 | //  Created by Frank on 2018/11/27.
 5 | //  Copyright © 2018 小码哥. All rights reserved.
 6 | //
 7 | 
 8 | #import "MJRefreshConfig.h"
 9 | 
10 | @implementation MJRefreshConfig
11 | 
12 | static MJRefreshConfig *mj_RefreshConfig = nil;
13 | 
14 | + (instancetype)defaultConfig {
15 |     static dispatch_once_t onceToken;
16 |     dispatch_once(&onceToken, ^{
17 |         mj_RefreshConfig = [[self alloc] init];
18 |     });
19 |     return mj_RefreshConfig;
20 | }
21 | 
22 | 
23 | 
24 | @end
25 | 
--------------------------------------------------------------------------------
/Pods/MJRefresh/MJRefresh/NSBundle+MJRefresh.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  NSBundle+MJRefresh.h
 3 | //  MJRefreshExample
 4 | //
 5 | //  Created by MJ Lee on 16/6/13.
 6 | //  Copyright © 2016年 小码哥. All rights reserved.
 7 | //
 8 | 
 9 | #import 
10 | 
11 | NS_ASSUME_NONNULL_BEGIN
12 | 
13 | @interface NSBundle (MJRefresh)
14 | + (instancetype)mj_refreshBundle;
15 | + (UIImage *)mj_arrowImage;
16 | + (UIImage *)mj_trailArrowImage;
17 | + (NSString *)mj_localizedStringForKey:(NSString *)key value:(nullable NSString *)value;
18 | + (NSString *)mj_localizedStringForKey:(NSString *)key;
19 | @end
20 | 
21 | NS_ASSUME_NONNULL_END
22 | 
--------------------------------------------------------------------------------
/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 | NS_ASSUME_NONNULL_BEGIN
13 | 
14 | @interface UIView (MJExtension)
15 | @property (assign, nonatomic) CGFloat mj_x;
16 | @property (assign, nonatomic) CGFloat mj_y;
17 | @property (assign, nonatomic) CGFloat mj_w;
18 | @property (assign, nonatomic) CGFloat mj_h;
19 | @property (assign, nonatomic) CGSize mj_size;
20 | @property (assign, nonatomic) CGPoint mj_origin;
21 | @end
22 | 
23 | NS_ASSUME_NONNULL_END
24 | 
--------------------------------------------------------------------------------
/Pods/Masonry/Masonry/MASCompositeConstraint.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  MASCompositeConstraint.h
 3 | //  Masonry
 4 | //
 5 | //  Created by Jonas Budelmann on 21/07/13.
 6 | //  Copyright (c) 2013 cloudling. All rights reserved.
 7 | //
 8 | 
 9 | #import "MASConstraint.h"
10 | #import "MASUtilities.h"
11 | 
12 | /**
13 |  *	A group of MASConstraint objects
14 |  */
15 | @interface MASCompositeConstraint : MASConstraint
16 | 
17 | /**
18 |  *	Creates a composite with a predefined array of children
19 |  *
20 |  *	@param	children	child MASConstraints
21 |  *
22 |  *	@return	a composite constraint
23 |  */
24 | - (id)initWithChildren:(NSArray *)children;
25 | 
26 | @end
27 | 
--------------------------------------------------------------------------------
/Pods/Masonry/Masonry/MASLayoutConstraint.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  MASLayoutConstraint.h
 3 | //  Masonry
 4 | //
 5 | //  Created by Jonas Budelmann on 3/08/13.
 6 | //  Copyright (c) 2013 Jonas Budelmann. All rights reserved.
 7 | //
 8 | 
 9 | #import "MASUtilities.h"
10 | 
11 | /**
12 |  *	When you are debugging or printing the constraints attached to a view this subclass
13 |  *  makes it easier to identify which constraints have been created via Masonry
14 |  */
15 | @interface MASLayoutConstraint : NSLayoutConstraint
16 | 
17 | /**
18 |  *	a key to associate with this constraint
19 |  */
20 | @property (nonatomic, strong) id mas_key;
21 | 
22 | @end
23 | 
--------------------------------------------------------------------------------
/Pods/Masonry/Masonry/MASLayoutConstraint.m:
--------------------------------------------------------------------------------
 1 | //
 2 | //  MASLayoutConstraint.m
 3 | //  Masonry
 4 | //
 5 | //  Created by Jonas Budelmann on 3/08/13.
 6 | //  Copyright (c) 2013 Jonas Budelmann. All rights reserved.
 7 | //
 8 | 
 9 | #import "MASLayoutConstraint.h"
10 | 
11 | @implementation MASLayoutConstraint
12 | 
13 | @end
14 | 
--------------------------------------------------------------------------------
/Pods/Masonry/Masonry/Masonry.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  Masonry.h
 3 | //  Masonry
 4 | //
 5 | //  Created by Jonas Budelmann on 20/07/13.
 6 | //  Copyright (c) 2013 cloudling. All rights reserved.
 7 | //
 8 | 
 9 | #import 
10 | 
11 | //! Project version number for Masonry.
12 | FOUNDATION_EXPORT double MasonryVersionNumber;
13 | 
14 | //! Project version string for Masonry.
15 | FOUNDATION_EXPORT const unsigned char MasonryVersionString[];
16 | 
17 | #import "MASUtilities.h"
18 | #import "View+MASAdditions.h"
19 | #import "View+MASShorthandAdditions.h"
20 | #import "ViewController+MASAdditions.h"
21 | #import "NSArray+MASAdditions.h"
22 | #import "NSArray+MASShorthandAdditions.h"
23 | #import "MASConstraint.h"
24 | #import "MASCompositeConstraint.h"
25 | #import "MASViewAttribute.h"
26 | #import "MASViewConstraint.h"
27 | #import "MASConstraintMaker.h"
28 | #import "MASLayoutConstraint.h"
29 | #import "NSLayoutConstraint+MASDebugAdditions.h"
30 | 
--------------------------------------------------------------------------------
/Pods/Masonry/Masonry/NSLayoutConstraint+MASDebugAdditions.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  NSLayoutConstraint+MASDebugAdditions.h
 3 | //  Masonry
 4 | //
 5 | //  Created by Jonas Budelmann on 3/08/13.
 6 | //  Copyright (c) 2013 Jonas Budelmann. All rights reserved.
 7 | //
 8 | 
 9 | #import "MASUtilities.h"
10 | 
11 | /**
12 |  *	makes debug and log output of NSLayoutConstraints more readable
13 |  */
14 | @interface NSLayoutConstraint (MASDebugAdditions)
15 | 
16 | @end
17 | 
--------------------------------------------------------------------------------
/Pods/PPMaker/PPMaker/PPMake/PPMake+UIImageView.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  PPMake+UIImageView.h
 3 | //  PPMakerExample
 4 | //
 5 | //  Created by ╰莪呮想好好宠Nǐつ on 2018/6/9.
 6 | //  Copyright © 2018年 PPAbner. All rights reserved.
 7 | //
 8 | 
 9 | #import "PPMake.h"
10 | 
11 | @interface PPMake (UIImageView)
12 | 
13 | /**【UIImageView】设置image,传(UIImage *)对象。*/
14 | @property (nonatomic, copy, readonly) PPMake *(^image)(UIImage *image);
15 | /**【UIImageView】设置image,传图片名(NSString *)对象。*/
16 | @property (nonatomic, copy, readonly) PPMake *(^imageName)(NSString *imageName);
17 | 
18 | @end
19 | 
--------------------------------------------------------------------------------
/Pods/PPMaker/PPMaker/PPMake/PPMake+UIImageView.m:
--------------------------------------------------------------------------------
 1 | //
 2 | //  PPMake+UIImageView.m
 3 | //  PPMakerExample
 4 | //
 5 | //  Created by ╰莪呮想好好宠Nǐつ on 2018/6/9.
 6 | //  Copyright © 2018年 PPAbner. All rights reserved.
 7 | //
 8 | 
 9 | #import "PPMake+UIImageView.h"
10 | 
11 | @implementation PPMake (UIImageView)
12 | 
13 | 
14 | 
15 | 
16 | - (PPMake *(^)(UIImage *))image
17 | {
18 |     PPMakeImgVAssert
19 |     return ^PPMake *(UIImage *image){
20 |         UIImageView *imgV = (UIImageView *)self.createdView;
21 |         imgV.image = image;
22 |         return self;
23 |     };
24 | }
25 | #pragma mark --- 图片名字
26 | - (PPMake *(^)(NSString *))imageName
27 | {
28 |     PPMakeImgVAssert
29 |     return ^PPMake *(NSString *imageName){
30 |         UIImageView *imgV = (UIImageView *)self.createdView;
31 |         if (imageName && imageName.length > 0) {
32 |             imgV.image = [UIImage imageNamed:imageName];
33 |         }
34 |         return self;
35 |     };
36 | }
37 | 
38 | @end
39 | 
--------------------------------------------------------------------------------
/Pods/PPMaker/PPMaker/PPMake/PPMake+UITableView.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  PPMake+UITableView.h
 3 | //  PPMakerExample
 4 | //
 5 | //  Created by ╰莪呮想好好宠Nǐつ on 2018/6/9.
 6 | //  Copyright © 2018年 PPAbner. All rights reserved.
 7 | //
 8 | 
 9 | #import "PPMake.h"
10 | 
11 | @interface PPMake (UITableView)
12 | 
13 | /** delegate && datasource */
14 | @property (nonatomic, copy, readonly) PPMake *(^delegate)(id delegate);
15 | 
16 | /** 去掉所有的分割线 (默认已经去掉,在初始化话view的时候)*/
17 | @property (nonatomic, copy, readonly) PPMake *(^hideAllSeparator)(BOOL ishidden);
18 | 
19 | /** 去掉多余的分割线 */
20 | @property (nonatomic, copy, readonly) PPMake *(^hideExtraSeparator)(BOOL isHidden);
21 | 
22 | /** 是否需要预估高度,默认是需要的YES */
23 | @property (nonatomic, copy, readonly) PPMake *(^hasEstimatedHeight)(BOOL hasEstimatedHeight);
24 | 
25 | @end
26 | 
--------------------------------------------------------------------------------
/Pods/PPMaker/PPMaker/PPMakeCategory/Foundation/NSDate/NSDate+Timestamp.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  NSDate+Timestamp.h
 3 | //  PPMakerExample
 4 | //
 5 | //  Created by ╰莪呮想好好宠Nǐつ on 2018/10/19.
 6 | //  Copyright © 2018年 PPAbner. All rights reserved.
 7 | //
 8 | 
 9 | #import 
10 | 
11 | @interface NSDate (Timestamp)
12 | 
13 | /**
14 |  *【001 类方法】:获取当前时间的时间戳字符串
15 |  */
16 | + (NSString *)ppmake_timestampStr;
17 | 
18 | 
19 | /**
20 |  * 【002 实例方法】:获取当前NSDate对象对应的时间戳字符串
21 |  */
22 | - (NSString *)ppmake_timestampStr;
23 | 
24 | @end
25 | 
--------------------------------------------------------------------------------
/Pods/PPMaker/PPMaker/PPMakeCategory/Foundation/NSDate/NSDate+Timestamp.m:
--------------------------------------------------------------------------------
 1 | //
 2 | //  NSDate+Timestamp.m
 3 | //  PPMakerExample
 4 | //
 5 | //  Created by ╰莪呮想好好宠Nǐつ on 2018/10/19.
 6 | //  Copyright © 2018年 PPAbner. All rights reserved.
 7 | //
 8 | 
 9 | #import "NSDate+Timestamp.h"
10 | 
11 | @implementation NSDate (Timestamp)
12 | /**
13 |  *【001 类方法】:获取当前时间的时间戳字符串
14 |  */
15 | + (NSString *)ppmake_timestampStr
16 | {
17 |     NSDate *date = [NSDate date];
18 |     return [date ppmake_timestampStr];
19 | }
20 | 
21 | /**
22 |  * 【002 实例方法】:获取当前NSDate对象对应的时间戳字符串
23 |  */
24 | - (NSString *)ppmake_timestampStr
25 | {
26 |     if (!self) {
27 |         return @"";
28 |     }
29 |     //13位是毫秒,10位是秒,ios生成的是10位的。
30 |     NSTimeInterval timeSp = [self timeIntervalSince1970] * 1000;
31 |     return [NSString stringWithFormat:@"%ld",(long)timeSp];
32 | }
33 | @end
34 | 
--------------------------------------------------------------------------------
/Pods/PPMaker/PPMaker/PPMakeCategory/Foundation/NSMutableArray/NSMutableArray+PPMakeSupport.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  NSMutableArray+PPMakeSupport.h
 3 | //  PPMakerExample
 4 | //
 5 | //  Created by ╰莪呮想好好宠Nǐつ on 2018/8/29.
 6 | //  Copyright © 2018年 PPAbner. All rights reserved.
 7 | //
 8 | 
 9 | #import 
10 | 
11 | @interface NSMutableArray (PPMakeSupport)
12 | 
13 | @end
14 | 
15 | @interface NSMutableArray (PPMakeExtendedMutableArray)
16 | /**
17 |  * 可变数组添加一个不重复的元素 ,如果可以重复,请用系统的addObject:方法
18 |  *
19 |  * 示例:
20 |  *   NSMutableArray *arr = [NSMutableArray arrayWithArray:@[@1,@2,@3,@4]];
21 |  *   [arr ppmake_addObject:@4];
22 |  *   [arr ppmake_addObject:@1];
23 |  *   [arr ppmake_addObject:@8];
24 |  *   NSLog(@"%@",arr);
25 |  *   //打印结果 [1,2,3,4,8]
26 |  */
27 | - (void)ppmake_addObject:(id)anObject;
28 | @end
29 | 
--------------------------------------------------------------------------------
/Pods/PPMaker/PPMaker/PPMakeCategory/Foundation/NSMutableArray/NSMutableArray+PPMakeSupport.m:
--------------------------------------------------------------------------------
 1 | //
 2 | //  NSMutableArray+PPMakeSupport.m
 3 | //  PPMakerExample
 4 | //
 5 | //  Created by ╰莪呮想好好宠Nǐつ on 2018/8/29.
 6 | //  Copyright © 2018年 PPAbner. All rights reserved.
 7 | //
 8 | 
 9 | #import "NSMutableArray+PPMakeSupport.h"
10 | 
11 | @implementation NSMutableArray (PPMakeSupport)
12 | 
13 | @end
14 | 
15 | @implementation NSMutableArray (PPMakeExtendedMutableArray)
16 | /* 可变数组添加一个不重复的元素 ,如果可以重复,请用系统的addObject:方法 */
17 | - (void)ppmake_addObject:(id)anObject
18 | {
19 |     if (![self containsObject:anObject]) {
20 |         [self addObject:anObject];
21 |     }
22 | }
23 | @end
24 | 
--------------------------------------------------------------------------------
/Pods/PPMaker/PPMaker/PPMakeCategory/Foundation/NSObject/NSObject+PPMakeSupport.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  NSObject+PPMakeSupport.h
 3 | //  PPMakerExample
 4 | //
 5 | //  Created by ╰莪呮想好好宠Nǐつ on 2018/6/9.
 6 | //  Copyright © 2018年 PPAbner. All rights reserved.
 7 | //
 8 | 
 9 | #import 
10 | 
11 | @interface NSObject (PPMakeSupport)
12 | 
13 | /**
14 |  * 交换同一个类两个方法
15 |  *
16 |  * @param originS 该类原有的方法
17 |  * @param swizzledS 要替换的方法
18 |  */
19 | + (void)ppmake_swizzleWithOriginSelector:(SEL)originS
20 |                        swizzledSelector:(SEL)swizzledS;
21 | @end
22 | 
--------------------------------------------------------------------------------
/Pods/PPMaker/PPMaker/PPMakeCategory/Foundation/NSString/NSString+PPMakeSupport.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  NSString+PPMakeSupport.h
 3 | //  PPMakerExample
 4 | //
 5 | //  Created by PPAbner on 2019/7/10.
 6 | //  Copyright © 2019 PPAbner. All rights reserved.
 7 | //
 8 | 
 9 | #import 
10 | 
11 | @interface NSString (PPMakeSupport)
12 | 
13 | /** 获取APP名称 */
14 | + (NSString *)pp_displayName;
15 | 
16 | @end
17 | 
--------------------------------------------------------------------------------
/Pods/PPMaker/PPMaker/PPMakeCategory/Foundation/NSString/NSString+PPMakeSupport.m:
--------------------------------------------------------------------------------
 1 | //
 2 | //  NSString+PPMakeSupport.m
 3 | //  PPMakerExample
 4 | //
 5 | //  Created by PPAbner on 2019/7/10.
 6 | //  Copyright © 2019 PPAbner. All rights reserved.
 7 | //
 8 | 
 9 | #import "NSString+PPMakeSupport.h"
10 | 
11 | @implementation NSString (PPMakeSupport)
12 | 
13 | + (NSString *)pp_displayName
14 | {
15 |     NSString *name = [[NSBundle mainBundle].infoDictionary valueForKey:@"CFBundleDisplayName"];
16 |     if (!name) {
17 |         name = [[NSBundle mainBundle].infoDictionary valueForKey:@"CFBundleName"];
18 |     }
19 |     return name;
20 | }
21 | @end
22 | 
--------------------------------------------------------------------------------
/Pods/PPMaker/PPMaker/PPMakeCategory/Foundation/NSString/NSString+PPMakeSupport_Unicode.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  NSString+PPMakeSupport_Unicode.h
 3 | //  PPMakerExample
 4 | //
 5 | //  Created by ╰莪呮想好好宠Nǐつ on 2018/7/25.
 6 | //  Copyright © 2018年 PPAbner. All rights reserved.
 7 | //
 8 | 
 9 | #import 
10 | 
11 | @interface NSString (PPMakeSupport_Unicode)
12 | 
13 | @end
14 | 
--------------------------------------------------------------------------------
/Pods/PPMaker/PPMaker/PPMakeCategory/Foundation/NSString/NSString+PPMakeSupport_Unicode.m:
--------------------------------------------------------------------------------
 1 | //
 2 | //  NSString+PPMakeSupport_Unicode.m
 3 | //  PPMakerExample
 4 | //
 5 | //  Created by ╰莪呮想好好宠Nǐつ on 2018/7/25.
 6 | //  Copyright © 2018年 PPAbner. All rights reserved.
 7 | //
 8 | 
 9 | #import "NSString+PPMakeSupport_Unicode.h"
10 | 
11 | @implementation NSString (PPMakeSupport_Unicode)
12 | 
13 | @end
14 | 
--------------------------------------------------------------------------------
/Pods/PPMaker/PPMaker/PPMakeCategory/Foundation/PPMakeFoundationCategory.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  PPMakeFoundationCategory.h
 3 | //  PPMakerExample
 4 | //
 5 | //  Created by PPAbner on 2019/4/2.
 6 | //  Copyright © 2019 PPAbner. All rights reserved.
 7 | //
 8 | 
 9 | #ifndef PPMakeFoundationCategory_h
10 | #define PPMakeFoundationCategory_h
11 | 
12 | #import "NSDate+PPMakeSupport.h"
13 | #import "NSDate+Timestamp.h"
14 | #import "NSMutableArray+PPMakeSupport.h"
15 | #import "NSMutableAttributedString+PPMakeSupport.h"
16 | #import "NSObject+PPMakeSupport.h"
17 | #import "NSString+PPMakeSupport.h"
18 | #import "NSString+PPMakeSupport_Unicode.h"
19 | 
20 | #endif /* PPMakeFoundationCategory_h */
21 | 
--------------------------------------------------------------------------------
/Pods/PPMaker/PPMaker/PPMakeCategory/PPMakeCategory.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  PPMakeCategory.h
 3 | //  PPMakerExample
 4 | //
 5 | //  Created by PPAbner on 2019/4/16.
 6 | //  Copyright © 2019 PPAbner. All rights reserved.
 7 | //
 8 | 
 9 | #ifndef PPMakeCategory_h
10 | #define PPMakeCategory_h
11 | 
12 | #import "PPMakeUIKitCategory.h"
13 | #import "PPMakeFoundationCategory.h"
14 | 
15 | #endif /* PPMakeCategory_h */
16 | 
--------------------------------------------------------------------------------
/Pods/PPMaker/PPMaker/PPMakeCategory/UIKit/PPMakeUIKitCategory.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  PPMakeUIKitCategory.h
 3 | //  PPMakerExample
 4 | //
 5 | //  Created by PPAbner on 2019/4/2.
 6 | //  Copyright © 2019 PPAbner. All rights reserved.
 7 | //
 8 | 
 9 | #ifndef PPMakeUIKitCategory_h
10 | #define PPMakeUIKitCategory_h
11 | 
12 | #import "UITableViewCell+PPMakeSupport.h"
13 | #import "UIButton+PPMakeSupport.h"
14 | #import "UIColor+PPMakeSupport.h"
15 | #import "UIDevice+PPMakeSupport.h"
16 | #import "UIImage+PPMakeSupport.h"
17 | #import "UIScrollView+ScrollBlock.h"
18 | #import "UITableView+PPMakeDidSelectedBlock.h"
19 | #import "UITableView+PPMakeSupport.h"
20 | #import "UITableViewCell+PPMakeSupport.h"
21 | #import "UIView+PPMakeSupport.h"
22 | #import "UIView+PPMakeSupportCornerAndShadow.h"
23 | #import "UIView+HandyFrame.h"
24 | #import "UIViewController+UIScreenBrightness.h"
25 | 
26 | #endif /* PPMakeUIKitCategory_h */
27 | 
--------------------------------------------------------------------------------
/Pods/PPMaker/PPMaker/PPMakeCategory/UIKit/UIButton/UIButton+PPMakeSupport.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  UIButton+PPMakeSupport.h
 3 | //  PPMakerExample
 4 | //
 5 | //  Created by ╰莪呮想好好宠Nǐつ on 2018/5/18.
 6 | //  Copyright © 2018年 PPAbner. All rights reserved.
 7 | //
 8 | 
 9 | #import 
10 | 
11 | typedef void(^makeBtActionBlock)(void);
12 | 
13 | @interface UIButton (PPMakeSupport)
14 | /**
15 |  * button点击事件block
16 |  */
17 | - (void)ppmake_actionWithControlEvent:(UIControlEvents)event
18 |                            withBlock:(makeBtActionBlock)actionBlock;
19 | - (void)ppmake_actionWithBlock:(makeBtActionBlock)actionBlock;
20 | @end
21 | 
22 | 
23 | @interface UIControl (PPMakeSupport)
24 | /**
25 |  * 点击事件的间隔时间
26 |  */
27 | @property(nonatomic,assign) NSTimeInterval clickTimeInterval;
28 | /**
29 |  * 重置button的可点击状态,为可点击,用于clickTimeInterval时间未到,但是需要可点击。
30 |  */
31 | - (void)ppmake_reset;
32 | @end
33 | 
--------------------------------------------------------------------------------
/Pods/PPMaker/PPMaker/PPMakeCategory/UIKit/UIImage/UIImage+PPMakeSupport.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  UIImage+PPMakeSupport.h
 3 | //  PPMakerExample
 4 | //
 5 | //  Created by ╰莪呮想好好宠Nǐつ on 2018/7/2.
 6 | //  Copyright © 2018年 PPAbner. All rights reserved.
 7 | //
 8 | 
 9 | #import 
10 | 
11 | @interface UIImage (PPMakeSupport)
12 | 
13 | + (UIImage *)ppmake_imageWithColor:(UIColor *)color;
14 | 
15 | + (UIImage *)ppmake_imageWithColor:(UIColor *)color
16 |                              size:(CGSize)size;
17 | @end
18 | 
19 | 
20 | @interface UIImage (PPMakeStretchImage)
21 | /*
22 |  * 拉伸图片,得到一个新的图片
23 |  */
24 | + (UIImage *)ppmake_imageByStretchWithOriginalImageName:(NSString *)originalImageName capInsets:(UIEdgeInsets)capInsets;
25 | /*
26 |  * 拉伸图片,得到一个新的图片 (默认,上下左右都是5)
27 |  */
28 | + (UIImage *)ppmake_imageByStretchWithOriginalImageName:(NSString *)originalImageName;
29 | @end
30 | 
--------------------------------------------------------------------------------
/Pods/PPMaker/PPMaker/PPMakeCategory/UIKit/UIScrollView/UIScrollView+ScrollBlock.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  UIScrollView+ScrollBlock.h
 3 | //  PPTransitions
 4 | //
 5 | //  Created by ╰莪呮想好好宠Nǐつ on 2018/3/7.
 6 | //  Copyright © 2018年 PPAbner. All rights reserved.
 7 | //
 8 | 
 9 | #import 
10 | 
11 | /**
12 |  监听UIScrollView滚动(竖直方向)
13 | 
14 |  @param contentOffsetY  滚动时的ContentOffsetY
15 |  @param isScrollToUp    是否上滑
16 |  @param isInOneScreen   scrollView的内容是否没有超过一个屏幕
17 |  */
18 | typedef void(^PPUIScrollViewScrollBlock) (CGFloat contentOffsetY,BOOL isScrollToUp,BOOL isInOneScreen);
19 | 
20 | @interface UIScrollView (ScrollBlock)
21 | /** 监听UIScrollView滚动回调block */
22 | @property(nonatomic,copy) PPUIScrollViewScrollBlock pp_scrollBlock;
23 | @end
24 | 
25 | 
26 | 
27 | 
28 | 
--------------------------------------------------------------------------------
/Pods/PPMaker/PPMaker/PPMakeCategory/UIKit/UITableView/UITableView+PPMakeDidSelectedBlock.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  UITableView+PPMakeDidSelectedBlock.h
 3 | //  PPMakerExample
 4 | //
 5 | //  Created by ╰莪呮想好好宠Nǐつ on 2018/8/30.
 6 | //  Copyright © 2018年 PPAbner. All rights reserved.
 7 | //
 8 | 
 9 | #import 
10 | 
11 | typedef void(^PPMakeTableViewDidSelectedBlcok)(UITableView *tableView,NSIndexPath *indexPath);
12 | 
13 | 
14 | @interface UITableView (PPMakeDidSelectedBlock)
15 | /**
16 |  * 给tableView绑定didSelected点击block回调
17 |  * 需要注意的】: tableView必须设置delegate并且vc中实现didSelected方法
18 |  */
19 | @property(nonatomic,copy)PPMakeTableViewDidSelectedBlcok ppmake_didSelectedBlock;
20 | @end
21 | 
--------------------------------------------------------------------------------
/Pods/PPMaker/PPMaker/PPMakeCategory/UIKit/UITableView/UITableView+PPMakeSupport.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  UITableView+PPMakeSupport.h
 3 | //  PPMakerExample
 4 | //
 5 | //  Created by ╰莪呮想好好宠Nǐつ on 2018/8/30.
 6 | //  Copyright © 2018年 PPAbner. All rights reserved.
 7 | //
 8 | 
 9 | #import 
10 | 
11 | @interface UITableView (PPMakeSupport)
12 | 
13 | /// 免去`registerClass: forCellReuseIdentifier`一个一个写
14 | /// @param cellClasses cellClass数组
15 | /// @param identifiers identifier数组
16 | - (void)registerClasses:(nullable NSArray *)cellClasses forCellReuseIdentifiers:(nullable NSArray *)identifiers;
17 | 
18 | 
19 | /// 免去`registerClass: forCellReuseIdentifier`一个一个写
20 | /// @param cellClasses cellClass数组 「利用cellClas创建indentifier」
21 | - (void)registerClasses:(nullable NSArray *)cellClasses;
22 | 
23 | 
24 | @end
25 | 
26 | 
--------------------------------------------------------------------------------
/Pods/PPMaker/PPMaker/PPMakeCategory/UIKit/UITableViewCell/UITableViewCell+PPMakeSupport.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  UITableViewCell+PPMakeSupport.h
 3 | //  PPMakerExample
 4 | //
 5 | //  Created by ╰莪呮想好好宠Nǐつ on 2018/7/6.
 6 | //  Copyright © 2018年 PPAbner. All rights reserved.
 7 | //
 8 | 
 9 | #import 
10 | 
11 | @interface UITableViewCell (PPMakeSupport)
12 | 
13 | + (instancetype)ppmake_cellWithTableView:(UITableView *)tableView;
14 | 
15 | + (instancetype)ppmake_cellWithTableView:(UITableView *)tableView
16 |                               identifier:(NSString *)identifier;
17 | @end
18 | 
--------------------------------------------------------------------------------
/Pods/PPMaker/PPMaker/PPMaker.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  PPMaker.h
 3 | //  PPDemo
 4 | //
 5 | //  Created by ╰莪呮想好好宠Nǐつ on 2018/5/7.
 6 | //  Copyright © 2018年 PPAbner. All rights reserved.
 7 | //
 8 | 
 9 | #ifndef PPMaker_h
10 | #define PPMaker_h
11 | 
12 | ///⚠️ 注意引入头文件是 #import "PPMaker.h",而不是#import "PPMake.h"⚠️
13 | ///⚠️ 注意引入头文件是 #import "PPMaker.h",而不是#import "PPMake.h"⚠️
14 | ///⚠️ 注意引入头文件是 #import "PPMaker.h",而不是#import "PPMake.h"⚠️
15 | 
16 | ///UIKit
17 | #import "PPMake.h"
18 | #import "PPMake+UILabel.h"
19 | #import "PPMake+UITableView.h"
20 | #import "PPMake+UIButton.h"
21 | #import "PPMake+UIImageView.h"
22 | 
23 | ///category
24 | #import "PPMakeCategory.h"
25 | 
26 | #endif /* PPMaker_h */
27 | 
--------------------------------------------------------------------------------
/Pods/PPTextField/PPTextField/NSString+PPTextField.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  NSString+PPTextField.h
 3 | //  PPDemos
 4 | //
 5 | //  Created by ╰莪呮想好好宠Nǐつ on 2017/3/19.
 6 | //  Copyright © 2017年 PPAbner. All rights reserved.
 7 | //
 8 | 
 9 | 
10 | 
11 | #import 
12 | 
13 | typedef NS_ENUM(NSInteger,PPTextFieldStringType) {
14 |     PPTextFieldStringTypeNumber,         ///数字
15 |     PPTextFieldStringTypeLetter,         ///字母
16 |     PPTextFieldStringTypeChinese         ///汉字
17 | };
18 | 
19 | @interface NSString (PPTextField)
20 | 
21 | ///某个字符串是不是数字、字母、汉字。
22 | - (BOOL)pp_is:(PPTextFieldStringType)stringType;
23 | 
24 | ///字符串是不是特殊字符,此时的特殊字符就是:出数字、字母、汉字以外的。
25 | - (BOOL)pp_isSpecialLetter;
26 | 
27 | ///字符串长度 【一个汉字算2个字符串,一个英文算1个字符串】
28 | @property (nonatomic, assign, readonly) NSUInteger pp_lengthForCN2EN1;
29 | 
30 | ///移除字符串中除exceptLetters外的所有特殊字符
31 | - (NSString *)pp_removeSpecialLettersExceptLetters:(NSArray *)exceptLetters;
32 | 
33 | @end
34 | 
--------------------------------------------------------------------------------
/Pods/SDWebImage/SDWebImage/Core/SDImageAPNGCoder.h:
--------------------------------------------------------------------------------
 1 | /*
 2 |  * This file is part of the SDWebImage package.
 3 |  * (c) Olivier Poitrey 
 4 |  *
 5 |  * For the full copyright and license information, please view the LICENSE
 6 |  * file that was distributed with this source code.
 7 |  */
 8 | 
 9 | #import 
10 | #import "SDImageIOAnimatedCoder.h"
11 | 
12 | /**
13 |  Built in coder using ImageIO that supports APNG encoding/decoding
14 |  */
15 | @interface SDImageAPNGCoder : SDImageIOAnimatedCoder 
16 | 
17 | @property (nonatomic, class, readonly, nonnull) SDImageAPNGCoder *sharedCoder;
18 | 
19 | @end
20 | 
--------------------------------------------------------------------------------
/Pods/SDWebImage/SDWebImage/Core/SDImageFrame.m:
--------------------------------------------------------------------------------
 1 | /*
 2 |  * This file is part of the SDWebImage package.
 3 |  * (c) Olivier Poitrey 
 4 |  *
 5 |  * For the full copyright and license information, please view the LICENSE
 6 |  * file that was distributed with this source code.
 7 |  */
 8 | 
 9 | #import "SDImageFrame.h"
10 | 
11 | @interface SDImageFrame ()
12 | 
13 | @property (nonatomic, strong, readwrite, nonnull) UIImage *image;
14 | @property (nonatomic, readwrite, assign) NSTimeInterval duration;
15 | 
16 | @end
17 | 
18 | @implementation SDImageFrame
19 | 
20 | + (instancetype)frameWithImage:(UIImage *)image duration:(NSTimeInterval)duration {
21 |     SDImageFrame *frame = [[SDImageFrame alloc] init];
22 |     frame.image = image;
23 |     frame.duration = duration;
24 |     
25 |     return frame;
26 | }
27 | 
28 | @end
29 | 
--------------------------------------------------------------------------------
/Pods/SDWebImage/SDWebImage/Core/SDWebImageCompat.m:
--------------------------------------------------------------------------------
 1 | /*
 2 |  * This file is part of the SDWebImage package.
 3 |  * (c) Olivier Poitrey 
 4 |  *
 5 |  * For the full copyright and license information, please view the LICENSE
 6 |  * file that was distributed with this source code.
 7 |  */
 8 | 
 9 | #import "SDWebImageCompat.h"
10 | 
11 | #if !__has_feature(objc_arc)
12 |     #error SDWebImage is ARC only. Either turn on ARC for the project or use -fobjc-arc flag
13 | #endif
14 | 
15 | #if !OS_OBJECT_USE_OBJC
16 |     #error SDWebImage need ARC for dispatch object
17 | #endif
18 | 
--------------------------------------------------------------------------------
/Pods/SDWebImage/SDWebImage/Core/SDWebImageError.m:
--------------------------------------------------------------------------------
 1 | /*
 2 |  * This file is part of the SDWebImage package.
 3 |  * (c) Olivier Poitrey 
 4 |  * (c) Jamie Pinkham
 5 |  *
 6 |  * For the full copyright and license information, please view the LICENSE
 7 |  * file that was distributed with this source code.
 8 |  */
 9 | 
10 | #import "SDWebImageError.h"
11 | 
12 | NSErrorDomain const _Nonnull SDWebImageErrorDomain = @"SDWebImageErrorDomain";
13 | NSErrorUserInfoKey const _Nonnull SDWebImageErrorDownloadStatusCodeKey = @"SDWebImageErrorDownloadStatusCodeKey";
14 | 
--------------------------------------------------------------------------------
/Pods/SDWebImage/SDWebImage/Core/SDWebImageOperation.h:
--------------------------------------------------------------------------------
 1 | /*
 2 |  * This file is part of the SDWebImage package.
 3 |  * (c) Olivier Poitrey 
 4 |  *
 5 |  * For the full copyright and license information, please view the LICENSE
 6 |  * file that was distributed with this source code.
 7 |  */
 8 | 
 9 | #import 
10 | 
11 | /// A protocol represents cancelable operation.
12 | @protocol SDWebImageOperation 
13 | 
14 | - (void)cancel;
15 | 
16 | @end
17 | 
18 | /// NSOperation conform to `SDWebImageOperation`.
19 | @interface NSOperation (SDWebImageOperation) 
20 | 
21 | @end
22 | 
--------------------------------------------------------------------------------
/Pods/SDWebImage/SDWebImage/Core/SDWebImageOperation.m:
--------------------------------------------------------------------------------
 1 | /*
 2 |  * This file is part of the SDWebImage package.
 3 |  * (c) Olivier Poitrey 
 4 |  *
 5 |  * For the full copyright and license information, please view the LICENSE
 6 |  * file that was distributed with this source code.
 7 |  */
 8 | 
 9 | #import "SDWebImageOperation.h"
10 | 
11 | /// NSOperation conform to `SDWebImageOperation`.
12 | @implementation NSOperation (SDWebImageOperation)
13 | 
14 | @end
15 | 
--------------------------------------------------------------------------------
/Pods/SDWebImage/SDWebImage/Core/UIImage+ExtendedCacheData.m:
--------------------------------------------------------------------------------
 1 | /*
 2 | * This file is part of the SDWebImage package.
 3 | * (c) Olivier Poitrey 
 4 | * (c) Fabrice Aneche
 5 | *
 6 | * For the full copyright and license information, please view the LICENSE
 7 | * file that was distributed with this source code.
 8 | */
 9 | 
10 | #import "UIImage+ExtendedCacheData.h"
11 | #import 
12 | 
13 | @implementation UIImage (ExtendedCacheData)
14 | 
15 | - (id)sd_extendedObject {
16 |     return objc_getAssociatedObject(self, @selector(sd_extendedObject));
17 | }
18 | 
19 | - (void)setSd_extendedObject:(id)sd_extendedObject {
20 |     objc_setAssociatedObject(self, @selector(sd_extendedObject), sd_extendedObject, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
21 | }
22 | 
23 | @end
24 | 
--------------------------------------------------------------------------------
/Pods/SDWebImage/SDWebImage/Core/UIImage+GIF.h:
--------------------------------------------------------------------------------
 1 | /*
 2 |  * This file is part of the SDWebImage package.
 3 |  * (c) Olivier Poitrey 
 4 |  * (c) Laurin Brandner
 5 |  *
 6 |  * For the full copyright and license information, please view the LICENSE
 7 |  * file that was distributed with this source code.
 8 |  */
 9 | 
10 | #import "SDWebImageCompat.h"
11 | 
12 | /**
13 |  This category is just use as a convenience method. For more detail control, use methods in `UIImage+MultiFormat.h` or directly use `SDImageCoder`.
14 |  */
15 | @interface UIImage (GIF)
16 | 
17 | /**
18 |  Creates an animated UIImage from an NSData.
19 |  This will create animated image if the data is Animated GIF. And will create a static image is the data is Static GIF.
20 | 
21 |  @param data The GIF data
22 |  @return The created image
23 |  */
24 | + (nullable UIImage *)sd_imageWithGIFData:(nullable NSData *)data;
25 | 
26 | @end
27 | 
--------------------------------------------------------------------------------
/Pods/SDWebImage/SDWebImage/Core/UIImage+GIF.m:
--------------------------------------------------------------------------------
 1 | /*
 2 |  * This file is part of the SDWebImage package.
 3 |  * (c) Olivier Poitrey 
 4 |  * (c) Laurin Brandner
 5 |  *
 6 |  * For the full copyright and license information, please view the LICENSE
 7 |  * file that was distributed with this source code.
 8 |  */
 9 | 
10 | #import "UIImage+GIF.h"
11 | #import "SDImageGIFCoder.h"
12 | 
13 | @implementation UIImage (GIF)
14 | 
15 | + (nullable UIImage *)sd_imageWithGIFData:(nullable NSData *)data {
16 |     if (!data) {
17 |         return nil;
18 |     }
19 |     return [[SDImageGIFCoder sharedCoder] decodedImageWithData:data options:0];
20 | }
21 | 
22 | @end
23 | 
--------------------------------------------------------------------------------
/Pods/SDWebImage/SDWebImage/Private/NSBezierPath+SDRoundedCorners.h:
--------------------------------------------------------------------------------
 1 | /*
 2 |  * This file is part of the SDWebImage package.
 3 |  * (c) Olivier Poitrey 
 4 |  *
 5 |  * For the full copyright and license information, please view the LICENSE
 6 |  * file that was distributed with this source code.
 7 |  */
 8 | 
 9 | #import "SDWebImageCompat.h"
10 | 
11 | #if SD_MAC
12 | 
13 | #import "UIImage+Transform.h"
14 | 
15 | @interface NSBezierPath (SDRoundedCorners)
16 | 
17 | /**
18 |  Convenience way to create a bezier path with the specify rounding corners on macOS. Same as the one on `UIBezierPath`.
19 |  */
20 | + (nonnull instancetype)sd_bezierPathWithRoundedRect:(NSRect)rect byRoundingCorners:(SDRectCorner)corners cornerRadius:(CGFloat)cornerRadius;
21 | 
22 | @end
23 | 
24 | #endif
25 | 
--------------------------------------------------------------------------------
/Pods/SDWebImage/SDWebImage/Private/SDAssociatedObject.h:
--------------------------------------------------------------------------------
 1 | /*
 2 | * This file is part of the SDWebImage package.
 3 | * (c) Olivier Poitrey 
 4 | *
 5 | * For the full copyright and license information, please view the LICENSE
 6 | * file that was distributed with this source code.
 7 | */
 8 | 
 9 | #import "SDWebImageCompat.h"
10 | 
11 | /// Copy the associated object from source image to target image. The associated object including all the category read/write properties.
12 | /// @param source source
13 | /// @param target target
14 | FOUNDATION_EXPORT void SDImageCopyAssociatedObject(UIImage * _Nullable source, UIImage * _Nullable target);
15 | 
--------------------------------------------------------------------------------
/Pods/SDWebImage/SDWebImage/Private/SDAsyncBlockOperation.h:
--------------------------------------------------------------------------------
 1 | /*
 2 |  * This file is part of the SDWebImage package.
 3 |  * (c) Olivier Poitrey 
 4 |  *
 5 |  * For the full copyright and license information, please view the LICENSE
 6 |  * file that was distributed with this source code.
 7 |  */
 8 | 
 9 | #import "SDWebImageCompat.h"
10 | 
11 | @class SDAsyncBlockOperation;
12 | typedef void (^SDAsyncBlock)(SDAsyncBlockOperation * __nonnull asyncOperation);
13 | 
14 | /// A async block operation, success after you call `completer` (not like `NSBlockOperation` which is for sync block, success on return)
15 | @interface SDAsyncBlockOperation : NSOperation
16 | 
17 | - (nonnull instancetype)initWithBlock:(nonnull SDAsyncBlock)block;
18 | + (nonnull instancetype)blockOperationWithBlock:(nonnull SDAsyncBlock)block;
19 | - (void)complete;
20 | 
21 | @end
22 | 
--------------------------------------------------------------------------------
/Pods/SDWebImage/SDWebImage/Private/SDDeviceHelper.h:
--------------------------------------------------------------------------------
 1 | /*
 2 | * This file is part of the SDWebImage package.
 3 | * (c) Olivier Poitrey 
 4 | *
 5 | * For the full copyright and license information, please view the LICENSE
 6 | * file that was distributed with this source code.
 7 | */
 8 | 
 9 | #import 
10 | #import "SDWebImageCompat.h"
11 | 
12 | /// Device information helper methods
13 | @interface SDDeviceHelper : NSObject
14 | 
15 | + (NSUInteger)totalMemory;
16 | + (NSUInteger)freeMemory;
17 | 
18 | @end
19 | 
--------------------------------------------------------------------------------
/Pods/SDWebImage/SDWebImage/Private/SDImageCachesManagerOperation.h:
--------------------------------------------------------------------------------
 1 | /*
 2 |  * This file is part of the SDWebImage package.
 3 |  * (c) Olivier Poitrey 
 4 |  *
 5 |  * For the full copyright and license information, please view the LICENSE
 6 |  * file that was distributed with this source code.
 7 |  */
 8 | 
 9 | #import 
10 | #import "SDWebImageCompat.h"
11 | 
12 | /// This is used for operation management, but not for operation queue execute
13 | @interface SDImageCachesManagerOperation : NSOperation
14 | 
15 | @property (nonatomic, assign, readonly) NSUInteger pendingCount;
16 | 
17 | - (void)beginWithTotalCount:(NSUInteger)totalCount;
18 | - (void)completeOne;
19 | - (void)done;
20 | 
21 | @end
22 | 
--------------------------------------------------------------------------------
/Pods/SDWebImage/SDWebImage/Private/SDInternalMacros.m:
--------------------------------------------------------------------------------
 1 | /*
 2 |  * This file is part of the SDWebImage package.
 3 |  * (c) Olivier Poitrey 
 4 |  *
 5 |  * For the full copyright and license information, please view the LICENSE
 6 |  * file that was distributed with this source code.
 7 |  */
 8 | 
 9 | #import "SDInternalMacros.h"
10 | 
11 | void sd_executeCleanupBlock (__strong sd_cleanupBlock_t *block) {
12 |     (*block)();
13 | }
14 | 
--------------------------------------------------------------------------------
/Pods/SDWebImage/SDWebImage/Private/SDWeakProxy.h:
--------------------------------------------------------------------------------
 1 | /*
 2 |  * This file is part of the SDWebImage package.
 3 |  * (c) Olivier Poitrey 
 4 |  *
 5 |  * For the full copyright and license information, please view the LICENSE
 6 |  * file that was distributed with this source code.
 7 |  */
 8 | 
 9 | #import 
10 | #import "SDWebImageCompat.h"
11 | 
12 | /// A weak proxy which forward all the message to the target
13 | @interface SDWeakProxy : NSProxy
14 | 
15 | @property (nonatomic, weak, readonly, nullable) id target;
16 | 
17 | - (nonnull instancetype)initWithTarget:(nonnull id)target;
18 | + (nonnull instancetype)proxyWithTarget:(nonnull id)target;
19 | 
20 | @end
21 | 
--------------------------------------------------------------------------------
/Pods/SDWebImage/SDWebImage/Private/SDWebImageTransitionInternal.h:
--------------------------------------------------------------------------------
 1 | /*
 2 | * This file is part of the SDWebImage package.
 3 | * (c) Olivier Poitrey 
 4 | *
 5 | * For the full copyright and license information, please view the LICENSE
 6 | * file that was distributed with this source code.
 7 | */
 8 | 
 9 | #import "SDWebImageCompat.h"
10 | 
11 | #if SD_MAC
12 | 
13 | #import 
14 | 
15 | /// Helper method for Core Animation transition
16 | FOUNDATION_EXPORT CAMediaTimingFunction * _Nullable SDTimingFunctionFromAnimationOptions(SDWebImageAnimationOptions options);
17 | FOUNDATION_EXPORT CATransition * _Nullable SDTransitionFromAnimationOptions(SDWebImageAnimationOptions options);
18 | 
19 | #endif
20 | 
--------------------------------------------------------------------------------
/Pods/SDWebImage/SDWebImage/Private/UIColor+SDHexString.h:
--------------------------------------------------------------------------------
 1 | /*
 2 |  * This file is part of the SDWebImage package.
 3 |  * (c) Olivier Poitrey 
 4 |  *
 5 |  * For the full copyright and license information, please view the LICENSE
 6 |  * file that was distributed with this source code.
 7 |  */
 8 | 
 9 | #import "SDWebImageCompat.h"
10 | 
11 | @interface UIColor (SDHexString)
12 | 
13 | /**
14 |  Convenience way to get hex string from color. The output should always be 32-bit RGBA hex string like `#00000000`.
15 |  */
16 | @property (nonatomic, copy, readonly, nonnull) NSString *sd_hexString;
17 | 
18 | @end
19 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AbnerPei/PPDemo/a2dc2fe1328de76a776ebdd657664efb1e2c59b2/Pods/Target Support Files/.DS_Store
--------------------------------------------------------------------------------
/Pods/Target Support Files/AFNetworking/AFNetworking-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 |   4.0.1
19 |   CFBundleSignature
20 |   ????
21 |   CFBundleVersion
22 |   ${CURRENT_PROJECT_VERSION}
23 |   NSPrincipalClass
24 |   
25 | 
26 | 
27 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/AFNetworking/AFNetworking-dummy.m:
--------------------------------------------------------------------------------
1 | #import 
2 | @interface PodsDummy_AFNetworking : NSObject
3 | @end
4 | @implementation PodsDummy_AFNetworking
5 | @end
6 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/AFNetworking/AFNetworking-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 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/AFNetworking/AFNetworking.debug.xcconfig:
--------------------------------------------------------------------------------
 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking
 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
 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}/AFNetworking
 8 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
 9 | PRODUCT_BUNDLE_IDENTIFIER = com.alamofire.AFNetworking
10 | SKIP_INSTALL = YES
11 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
12 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/AFNetworking/AFNetworking.modulemap:
--------------------------------------------------------------------------------
1 | framework module AFNetworking {
2 |   umbrella header "AFNetworking-umbrella.h"
3 | 
4 |   export *
5 |   module * { export * }
6 | }
7 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/AFNetworking/AFNetworking.release.xcconfig:
--------------------------------------------------------------------------------
 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking
 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
 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}/AFNetworking
 8 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
 9 | PRODUCT_BUNDLE_IDENTIFIER = com.alamofire.AFNetworking
10 | SKIP_INSTALL = YES
11 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
12 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/MJExtension/MJExtension-dummy.m:
--------------------------------------------------------------------------------
1 | #import 
2 | @interface PodsDummy_MJExtension : NSObject
3 | @end
4 | @implementation PodsDummy_MJExtension
5 | @end
6 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/MJExtension/MJExtension-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 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/MJExtension/MJExtension-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 "MJExtension.h"
14 | #import "MJExtensionConst.h"
15 | #import "MJFoundation.h"
16 | #import "MJProperty.h"
17 | #import "MJPropertyKey.h"
18 | #import "MJPropertyType.h"
19 | #import "NSObject+MJClass.h"
20 | #import "NSObject+MJCoding.h"
21 | #import "NSObject+MJKeyValue.h"
22 | #import "NSObject+MJProperty.h"
23 | #import "NSString+MJExtension.h"
24 | 
25 | FOUNDATION_EXPORT double MJExtensionVersionNumber;
26 | FOUNDATION_EXPORT const unsigned char MJExtensionVersionString[];
27 | 
28 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/MJExtension/MJExtension.debug.xcconfig:
--------------------------------------------------------------------------------
 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/MJExtension
 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
 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}/MJExtension
 8 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
 9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
10 | SKIP_INSTALL = YES
11 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
12 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/MJExtension/MJExtension.modulemap:
--------------------------------------------------------------------------------
1 | framework module MJExtension {
2 |   umbrella header "MJExtension-umbrella.h"
3 | 
4 |   export *
5 |   module * { export * }
6 | }
7 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/MJExtension/MJExtension.release.xcconfig:
--------------------------------------------------------------------------------
 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/MJExtension
 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
 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}/MJExtension
 8 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
 9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
10 | SKIP_INSTALL = YES
11 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
12 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/MJRefresh/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.5.0
19 |   CFBundleSignature
20 |   ????
21 |   CFBundleVersion
22 |   ${CURRENT_PROJECT_VERSION}
23 |   NSPrincipalClass
24 |   
25 | 
26 | 
27 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/MJRefresh/MJRefresh-dummy.m:
--------------------------------------------------------------------------------
1 | #import 
2 | @interface PodsDummy_MJRefresh : NSObject
3 | @end
4 | @implementation PodsDummy_MJRefresh
5 | @end
6 | 
--------------------------------------------------------------------------------
/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 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/MJRefresh/MJRefresh.debug.xcconfig:
--------------------------------------------------------------------------------
 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh
 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
 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 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
 9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
10 | SKIP_INSTALL = YES
11 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
12 | 
--------------------------------------------------------------------------------
/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 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/MJRefresh/MJRefresh.release.xcconfig:
--------------------------------------------------------------------------------
 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh
 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
 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 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
 9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
10 | SKIP_INSTALL = YES
11 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
12 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/Masonry/Masonry-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.1.0
19 |   CFBundleSignature
20 |   ????
21 |   CFBundleVersion
22 |   ${CURRENT_PROJECT_VERSION}
23 |   NSPrincipalClass
24 |   
25 | 
26 | 
27 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/Masonry/Masonry-dummy.m:
--------------------------------------------------------------------------------
1 | #import 
2 | @interface PodsDummy_Masonry : NSObject
3 | @end
4 | @implementation PodsDummy_Masonry
5 | @end
6 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/Masonry/Masonry-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 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/Masonry/Masonry-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 "MASCompositeConstraint.h"
14 | #import "MASConstraint+Private.h"
15 | #import "MASConstraint.h"
16 | #import "MASConstraintMaker.h"
17 | #import "MASLayoutConstraint.h"
18 | #import "Masonry.h"
19 | #import "MASUtilities.h"
20 | #import "MASViewAttribute.h"
21 | #import "MASViewConstraint.h"
22 | #import "NSArray+MASAdditions.h"
23 | #import "NSArray+MASShorthandAdditions.h"
24 | #import "NSLayoutConstraint+MASDebugAdditions.h"
25 | #import "View+MASAdditions.h"
26 | #import "View+MASShorthandAdditions.h"
27 | #import "ViewController+MASAdditions.h"
28 | 
29 | FOUNDATION_EXPORT double MasonryVersionNumber;
30 | FOUNDATION_EXPORT const unsigned char MasonryVersionString[];
31 | 
32 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/Masonry/Masonry.debug.xcconfig:
--------------------------------------------------------------------------------
 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Masonry
 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
 4 | OTHER_LDFLAGS = $(inherited) -framework "Foundation" -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}/Masonry
 9 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
10 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
11 | SKIP_INSTALL = YES
12 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
13 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/Masonry/Masonry.modulemap:
--------------------------------------------------------------------------------
1 | framework module Masonry {
2 |   umbrella header "Masonry-umbrella.h"
3 | 
4 |   export *
5 |   module * { export * }
6 | }
7 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/Masonry/Masonry.release.xcconfig:
--------------------------------------------------------------------------------
 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Masonry
 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
 4 | OTHER_LDFLAGS = $(inherited) -framework "Foundation" -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}/Masonry
 9 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
10 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
11 | SKIP_INSTALL = YES
12 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
13 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/PPMaker/PPMaker-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.0.265
19 |   CFBundleSignature
20 |   ????
21 |   CFBundleVersion
22 |   ${CURRENT_PROJECT_VERSION}
23 |   NSPrincipalClass
24 |   
25 | 
26 | 
27 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/PPMaker/PPMaker-dummy.m:
--------------------------------------------------------------------------------
1 | #import 
2 | @interface PodsDummy_PPMaker : NSObject
3 | @end
4 | @implementation PodsDummy_PPMaker
5 | @end
6 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/PPMaker/PPMaker-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 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/PPMaker/PPMaker.debug.xcconfig:
--------------------------------------------------------------------------------
 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/PPMaker
 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
 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}/PPMaker
 8 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
 9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
10 | SKIP_INSTALL = YES
11 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
12 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/PPMaker/PPMaker.modulemap:
--------------------------------------------------------------------------------
1 | framework module PPMaker {
2 |   umbrella header "PPMaker-umbrella.h"
3 | 
4 |   export *
5 |   module * { export * }
6 | }
7 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/PPMaker/PPMaker.release.xcconfig:
--------------------------------------------------------------------------------
 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/PPMaker
 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
 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}/PPMaker
 8 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
 9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
10 | SKIP_INSTALL = YES
11 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
12 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/PPTextField/PPTextField-dummy.m:
--------------------------------------------------------------------------------
1 | #import 
2 | @interface PodsDummy_PPTextField : NSObject
3 | @end
4 | @implementation PodsDummy_PPTextField
5 | @end
6 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/PPTextField/PPTextField-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 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/PPTextField/PPTextField-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 "PPTextField.h"
14 | 
15 | FOUNDATION_EXPORT double PPTextFieldVersionNumber;
16 | FOUNDATION_EXPORT const unsigned char PPTextFieldVersionString[];
17 | 
18 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/PPTextField/PPTextField.debug.xcconfig:
--------------------------------------------------------------------------------
 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/PPTextField
 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
 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}/PPTextField
 8 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
 9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
10 | SKIP_INSTALL = YES
11 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
12 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/PPTextField/PPTextField.modulemap:
--------------------------------------------------------------------------------
1 | framework module PPTextField {
2 |   umbrella header "PPTextField-umbrella.h"
3 | 
4 |   export *
5 |   module * { export * }
6 | }
7 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/PPTextField/PPTextField.release.xcconfig:
--------------------------------------------------------------------------------
 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/PPTextField
 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
 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}/PPTextField
 8 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
 9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
10 | SKIP_INSTALL = YES
11 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
12 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/Pods-PPDemo/Pods-PPDemo-dummy.m:
--------------------------------------------------------------------------------
1 | #import 
2 | @interface PodsDummy_Pods_PPDemo : NSObject
3 | @end
4 | @implementation PodsDummy_Pods_PPDemo
5 | @end
6 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/Pods-PPDemo/Pods-PPDemo-frameworks-Debug-input-files.xcfilelist:
--------------------------------------------------------------------------------
 1 | ${PODS_ROOT}/Target Support Files/Pods-PPDemo/Pods-PPDemo-frameworks.sh
 2 | ${BUILT_PRODUCTS_DIR}/AFNetworking/AFNetworking.framework
 3 | ${BUILT_PRODUCTS_DIR}/MJExtension/MJExtension.framework
 4 | ${BUILT_PRODUCTS_DIR}/MJRefresh/MJRefresh.framework
 5 | ${BUILT_PRODUCTS_DIR}/Masonry/Masonry.framework
 6 | ${BUILT_PRODUCTS_DIR}/PPMaker/PPMaker.framework
 7 | ${BUILT_PRODUCTS_DIR}/PPTextField/PPTextField.framework
 8 | ${BUILT_PRODUCTS_DIR}/SDWebImage/SDWebImage.framework
 9 | ${BUILT_PRODUCTS_DIR}/SQLiteRepairKit/sqliterk.framework
10 | ${BUILT_PRODUCTS_DIR}/Toast/Toast.framework
11 | ${BUILT_PRODUCTS_DIR}/WCDB/WCDB.framework
12 | ${BUILT_PRODUCTS_DIR}/WCDBOptimizedSQLCipher/sqlcipher.framework
13 | ${BUILT_PRODUCTS_DIR}/YTKNetwork/YTKNetwork.framework
14 | ${BUILT_PRODUCTS_DIR}/YYKit/YYKit.framework
--------------------------------------------------------------------------------
/Pods/Target Support Files/Pods-PPDemo/Pods-PPDemo-frameworks-Debug-output-files.xcfilelist:
--------------------------------------------------------------------------------
 1 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AFNetworking.framework
 2 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MJExtension.framework
 3 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MJRefresh.framework
 4 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Masonry.framework
 5 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/PPMaker.framework
 6 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/PPTextField.framework
 7 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SDWebImage.framework
 8 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/sqliterk.framework
 9 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Toast.framework
10 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/WCDB.framework
11 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/sqlcipher.framework
12 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/YTKNetwork.framework
13 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/YYKit.framework
--------------------------------------------------------------------------------
/Pods/Target Support Files/Pods-PPDemo/Pods-PPDemo-frameworks-Release-input-files.xcfilelist:
--------------------------------------------------------------------------------
 1 | ${PODS_ROOT}/Target Support Files/Pods-PPDemo/Pods-PPDemo-frameworks.sh
 2 | ${BUILT_PRODUCTS_DIR}/AFNetworking/AFNetworking.framework
 3 | ${BUILT_PRODUCTS_DIR}/MJExtension/MJExtension.framework
 4 | ${BUILT_PRODUCTS_DIR}/MJRefresh/MJRefresh.framework
 5 | ${BUILT_PRODUCTS_DIR}/Masonry/Masonry.framework
 6 | ${BUILT_PRODUCTS_DIR}/PPMaker/PPMaker.framework
 7 | ${BUILT_PRODUCTS_DIR}/PPTextField/PPTextField.framework
 8 | ${BUILT_PRODUCTS_DIR}/SDWebImage/SDWebImage.framework
 9 | ${BUILT_PRODUCTS_DIR}/SQLiteRepairKit/sqliterk.framework
10 | ${BUILT_PRODUCTS_DIR}/Toast/Toast.framework
11 | ${BUILT_PRODUCTS_DIR}/WCDB/WCDB.framework
12 | ${BUILT_PRODUCTS_DIR}/WCDBOptimizedSQLCipher/sqlcipher.framework
13 | ${BUILT_PRODUCTS_DIR}/YTKNetwork/YTKNetwork.framework
14 | ${BUILT_PRODUCTS_DIR}/YYKit/YYKit.framework
--------------------------------------------------------------------------------
/Pods/Target Support Files/Pods-PPDemo/Pods-PPDemo-frameworks-Release-output-files.xcfilelist:
--------------------------------------------------------------------------------
 1 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AFNetworking.framework
 2 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MJExtension.framework
 3 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MJRefresh.framework
 4 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Masonry.framework
 5 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/PPMaker.framework
 6 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/PPTextField.framework
 7 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SDWebImage.framework
 8 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/sqliterk.framework
 9 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Toast.framework
10 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/WCDB.framework
11 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/sqlcipher.framework
12 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/YTKNetwork.framework
13 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/YYKit.framework
--------------------------------------------------------------------------------
/Pods/Target Support Files/Pods-PPDemo/Pods-PPDemo-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_PPDemoVersionNumber;
15 | FOUNDATION_EXPORT const unsigned char Pods_PPDemoVersionString[];
16 | 
17 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/Pods-PPDemo/Pods-PPDemo.modulemap:
--------------------------------------------------------------------------------
1 | framework module Pods_PPDemo {
2 |   umbrella header "Pods-PPDemo-umbrella.h"
3 | 
4 |   export *
5 |   module * { export * }
6 | }
7 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/SDWebImage/SDWebImage-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 |   5.10.0
19 |   CFBundleSignature
20 |   ????
21 |   CFBundleVersion
22 |   ${CURRENT_PROJECT_VERSION}
23 |   NSPrincipalClass
24 |   
25 | 
26 | 
27 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/SDWebImage/SDWebImage-dummy.m:
--------------------------------------------------------------------------------
1 | #import 
2 | @interface PodsDummy_SDWebImage : NSObject
3 | @end
4 | @implementation PodsDummy_SDWebImage
5 | @end
6 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/SDWebImage/SDWebImage-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 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/SDWebImage/SDWebImage.debug.xcconfig:
--------------------------------------------------------------------------------
 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage
 3 | DERIVE_MACCATALYST_PRODUCT_BUNDLE_IDENTIFIER = NO
 4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
 5 | OTHER_LDFLAGS = $(inherited) -framework "ImageIO"
 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}/SDWebImage
10 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
11 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
12 | SKIP_INSTALL = YES
13 | SUPPORTS_MACCATALYST = YES
14 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
15 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/SDWebImage/SDWebImage.modulemap:
--------------------------------------------------------------------------------
1 | framework module SDWebImage {
2 |   umbrella header "SDWebImage-umbrella.h"
3 | 
4 |   export *
5 |   module * { export * }
6 | }
7 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/SDWebImage/SDWebImage.release.xcconfig:
--------------------------------------------------------------------------------
 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage
 3 | DERIVE_MACCATALYST_PRODUCT_BUNDLE_IDENTIFIER = NO
 4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
 5 | OTHER_LDFLAGS = $(inherited) -framework "ImageIO"
 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}/SDWebImage
10 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
11 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
12 | SKIP_INSTALL = YES
13 | SUPPORTS_MACCATALYST = YES
14 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
15 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/SQLiteRepairKit/SQLiteRepairKit-dummy.m:
--------------------------------------------------------------------------------
1 | #import 
2 | @interface PodsDummy_SQLiteRepairKit : NSObject
3 | @end
4 | @implementation PodsDummy_SQLiteRepairKit
5 | @end
6 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/SQLiteRepairKit/SQLiteRepairKit-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 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/SQLiteRepairKit/SQLiteRepairKit-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 "SQLiteRepairKit.h"
14 | 
15 | FOUNDATION_EXPORT double sqliterkVersionNumber;
16 | FOUNDATION_EXPORT const unsigned char sqliterkVersionString[];
17 | 
18 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/SQLiteRepairKit/SQLiteRepairKit.modulemap:
--------------------------------------------------------------------------------
1 | framework module sqliterk {
2 |   umbrella header "SQLiteRepairKit-umbrella.h"
3 | 
4 |   export *
5 |   module * { export * }
6 | }
7 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/Toast/Toast-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 |   4.0.0
19 |   CFBundleSignature
20 |   ????
21 |   CFBundleVersion
22 |   ${CURRENT_PROJECT_VERSION}
23 |   NSPrincipalClass
24 |   
25 | 
26 | 
27 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/Toast/Toast-dummy.m:
--------------------------------------------------------------------------------
1 | #import 
2 | @interface PodsDummy_Toast : NSObject
3 | @end
4 | @implementation PodsDummy_Toast
5 | @end
6 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/Toast/Toast-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 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/Toast/Toast-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 "UIView+Toast.h"
14 | #import "Toast.h"
15 | 
16 | FOUNDATION_EXPORT double ToastVersionNumber;
17 | FOUNDATION_EXPORT const unsigned char ToastVersionString[];
18 | 
19 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/Toast/Toast.debug.xcconfig:
--------------------------------------------------------------------------------
 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Toast
 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
 4 | OTHER_LDFLAGS = $(inherited) -framework "QuartzCore"
 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}/Toast
 9 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
10 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
11 | SKIP_INSTALL = YES
12 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
13 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/Toast/Toast.modulemap:
--------------------------------------------------------------------------------
1 | framework module Toast {
2 |   umbrella header "Toast-umbrella.h"
3 | 
4 |   export *
5 |   module * { export * }
6 | }
7 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/Toast/Toast.release.xcconfig:
--------------------------------------------------------------------------------
 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Toast
 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
 4 | OTHER_LDFLAGS = $(inherited) -framework "QuartzCore"
 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}/Toast
 9 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
10 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
11 | SKIP_INSTALL = YES
12 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
13 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/WCDB/WCDB-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.7
19 |   CFBundleSignature
20 |   ????
21 |   CFBundleVersion
22 |   ${CURRENT_PROJECT_VERSION}
23 |   NSPrincipalClass
24 |   
25 | 
26 | 
27 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/WCDB/WCDB-dummy.m:
--------------------------------------------------------------------------------
1 | #import 
2 | @interface PodsDummy_WCDB : NSObject
3 | @end
4 | @implementation PodsDummy_WCDB
5 | @end
6 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/WCDB/WCDB-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 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/WCDB/WCDB.modulemap:
--------------------------------------------------------------------------------
1 | framework module WCDB {
2 |   umbrella header "WCDB-umbrella.h"
3 | 
4 |   export *
5 |   module * { export * }
6 | }
7 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/WCDBOptimizedSQLCipher/WCDBOptimizedSQLCipher-dummy.m:
--------------------------------------------------------------------------------
1 | #import 
2 | @interface PodsDummy_WCDBOptimizedSQLCipher : NSObject
3 | @end
4 | @implementation PodsDummy_WCDBOptimizedSQLCipher
5 | @end
6 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/WCDBOptimizedSQLCipher/WCDBOptimizedSQLCipher-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 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/WCDBOptimizedSQLCipher/WCDBOptimizedSQLCipher-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 "sqlite3.h"
14 | #import "fts3_tokenizer.h"
15 | 
16 | FOUNDATION_EXPORT double sqlcipherVersionNumber;
17 | FOUNDATION_EXPORT const unsigned char sqlcipherVersionString[];
18 | 
19 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/WCDBOptimizedSQLCipher/WCDBOptimizedSQLCipher.modulemap:
--------------------------------------------------------------------------------
1 | framework module sqlcipher {
2 |   umbrella header "WCDBOptimizedSQLCipher-umbrella.h"
3 | 
4 |   export *
5 |   module * { export * }
6 | }
7 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/YTKNetwork/YTKNetwork-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.4
19 |   CFBundleSignature
20 |   ????
21 |   CFBundleVersion
22 |   ${CURRENT_PROJECT_VERSION}
23 |   NSPrincipalClass
24 |   
25 | 
26 | 
27 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/YTKNetwork/YTKNetwork-dummy.m:
--------------------------------------------------------------------------------
1 | #import 
2 | @interface PodsDummy_YTKNetwork : NSObject
3 | @end
4 | @implementation PodsDummy_YTKNetwork
5 | @end
6 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/YTKNetwork/YTKNetwork-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 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/YTKNetwork/YTKNetwork-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 "YTKBaseRequest.h"
14 | #import "YTKBatchRequest.h"
15 | #import "YTKBatchRequestAgent.h"
16 | #import "YTKChainRequest.h"
17 | #import "YTKChainRequestAgent.h"
18 | #import "YTKNetwork.h"
19 | #import "YTKNetworkAgent.h"
20 | #import "YTKNetworkConfig.h"
21 | #import "YTKRequest.h"
22 | #import "YTKRequestEventAccessory.h"
23 | 
24 | FOUNDATION_EXPORT double YTKNetworkVersionNumber;
25 | FOUNDATION_EXPORT const unsigned char YTKNetworkVersionString[];
26 | 
27 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/YTKNetwork/YTKNetwork.debug.xcconfig:
--------------------------------------------------------------------------------
 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/YTKNetwork
 3 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking"
 4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
 5 | OTHER_LDFLAGS = $(inherited) -framework "CFNetwork"
 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}/YTKNetwork
10 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
11 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
12 | SKIP_INSTALL = YES
13 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
14 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/YTKNetwork/YTKNetwork.modulemap:
--------------------------------------------------------------------------------
1 | framework module YTKNetwork {
2 |   umbrella header "YTKNetwork-umbrella.h"
3 | 
4 |   export *
5 |   module * { export * }
6 | }
7 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/YTKNetwork/YTKNetwork.release.xcconfig:
--------------------------------------------------------------------------------
 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/YTKNetwork
 3 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking"
 4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
 5 | OTHER_LDFLAGS = $(inherited) -framework "CFNetwork"
 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}/YTKNetwork
10 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
11 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
12 | SKIP_INSTALL = YES
13 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
14 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/YYKit/YYKit-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.9
19 |   CFBundleSignature
20 |   ????
21 |   CFBundleVersion
22 |   ${CURRENT_PROJECT_VERSION}
23 |   NSPrincipalClass
24 |   
25 | 
26 | 
27 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/YYKit/YYKit-dummy.m:
--------------------------------------------------------------------------------
1 | #import 
2 | @interface PodsDummy_YYKit : NSObject
3 | @end
4 | @implementation PodsDummy_YYKit
5 | @end
6 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/YYKit/YYKit-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 | 
--------------------------------------------------------------------------------
/Pods/Target Support Files/YYKit/YYKit.modulemap:
--------------------------------------------------------------------------------
1 | framework module YYKit {
2 |   umbrella header "YYKit-umbrella.h"
3 | 
4 |   export *
5 |   module * { export * }
6 | }
7 | 
--------------------------------------------------------------------------------
/Pods/Toast/Toast-Framework/Toast.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  Toast.h
 3 | //  Toast
 4 | //
 5 | //  Created by Charles Scalesse on 11/3/16.
 6 | //
 7 | //
 8 | 
 9 | #import 
10 | 
11 | //! Project version number for Toast.
12 | FOUNDATION_EXPORT double ToastVersionNumber;
13 | 
14 | //! Project version string for Toast.
15 | FOUNDATION_EXPORT const unsigned char ToastVersionString[];
16 | 
17 | // In this header, you should import all the public headers of your framework using statements like #import 
18 | #import 
19 | 
--------------------------------------------------------------------------------
/Pods/WCDB/objc/WCDB/interface/declare/WCTInterface.mm:
--------------------------------------------------------------------------------
 1 | /*
 2 |  * Tencent is pleased to support the open source community by making
 3 |  * WCDB available.
 4 |  *
 5 |  * Copyright (C) 2017 THL A29 Limited, a Tencent company.
 6 |  * All rights reserved.
 7 |  *
 8 |  * Licensed under the BSD 3-Clause License (the "License"); you may not use
 9 |  * this file except in compliance with the License. You may obtain a copy of
10 |  * the License at
11 |  *
12 |  *       https://opensource.org/licenses/BSD-3-Clause
13 |  *
14 |  * Unless required by applicable law or agreed to in writing, software
15 |  * distributed under the License is distributed on an "AS IS" BASIS,
16 |  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 |  * See the License for the specific language governing permissions and
18 |  * limitations under the License.
19 |  */
20 | 
21 | #import 
22 | 
23 | @implementation WCTInterface
24 | 
25 | @end
26 | 
--------------------------------------------------------------------------------
/Pods/WCDBOptimizedSQLCipher/ext/fts3/fts3.h:
--------------------------------------------------------------------------------
 1 | /*
 2 | ** 2006 Oct 10
 3 | **
 4 | ** The author disclaims copyright to this source code.  In place of
 5 | ** a legal notice, here is a blessing:
 6 | **
 7 | **    May you do good and not evil.
 8 | **    May you find forgiveness for yourself and forgive others.
 9 | **    May you share freely, never taking more than you give.
10 | **
11 | ******************************************************************************
12 | **
13 | ** This header file is used by programs that want to link against the
14 | ** FTS3 library.  All it does is declare the sqlite3Fts3Init() interface.
15 | */
16 | #include "sqlite3.h"
17 | 
18 | #ifdef __cplusplus
19 | extern "C" {
20 | #endif  /* __cplusplus */
21 | 
22 | int sqlite3Fts3Init(sqlite3 *db);
23 | 
24 | #ifdef __cplusplus
25 | }  /* extern "C" */
26 | #endif  /* __cplusplus */
27 | 
--------------------------------------------------------------------------------
/Pods/WCDBOptimizedSQLCipher/ext/icu/sqliteicu.h:
--------------------------------------------------------------------------------
 1 | /*
 2 | ** 2008 May 26
 3 | **
 4 | ** The author disclaims copyright to this source code.  In place of
 5 | ** a legal notice, here is a blessing:
 6 | **
 7 | **    May you do good and not evil.
 8 | **    May you find forgiveness for yourself and forgive others.
 9 | **    May you share freely, never taking more than you give.
10 | **
11 | ******************************************************************************
12 | **
13 | ** This header file is used by programs that want to link against the
14 | ** ICU extension.  All it does is declare the sqlite3IcuInit() interface.
15 | */
16 | #include "sqlite3.h"
17 | 
18 | #ifdef __cplusplus
19 | extern "C" {
20 | #endif  /* __cplusplus */
21 | 
22 | int sqlite3IcuInit(sqlite3 *db);
23 | 
24 | #ifdef __cplusplus
25 | }  /* extern "C" */
26 | #endif  /* __cplusplus */
27 | 
28 | 
--------------------------------------------------------------------------------
/Pods/WCDBOptimizedSQLCipher/ext/rtree/rtree.h:
--------------------------------------------------------------------------------
 1 | /*
 2 | ** 2008 May 26
 3 | **
 4 | ** The author disclaims copyright to this source code.  In place of
 5 | ** a legal notice, here is a blessing:
 6 | **
 7 | **    May you do good and not evil.
 8 | **    May you find forgiveness for yourself and forgive others.
 9 | **    May you share freely, never taking more than you give.
10 | **
11 | ******************************************************************************
12 | **
13 | ** This header file is used by programs that want to link against the
14 | ** RTREE library.  All it does is declare the sqlite3RtreeInit() interface.
15 | */
16 | #include "sqlite3.h"
17 | 
18 | #ifdef __cplusplus
19 | extern "C" {
20 | #endif  /* __cplusplus */
21 | 
22 | int sqlite3RtreeInit(sqlite3 *db);
23 | 
24 | #ifdef __cplusplus
25 | }  /* extern "C" */
26 | #endif  /* __cplusplus */
27 | 
--------------------------------------------------------------------------------
/Pods/YYKit/Vendor/WebP.framework/WebP:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AbnerPei/PPDemo/a2dc2fe1328de76a776ebdd657664efb1e2c59b2/Pods/YYKit/Vendor/WebP.framework/WebP
--------------------------------------------------------------------------------
/Pods/YYKit/YYKit/Base/Foundation/NSNumber+YYAdd.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  NSNumber+YYAdd.h
 3 | //  YYKit 
 4 | //
 5 | //  Created by ibireme on 13/8/24.
 6 | //  Copyright (c) 2015 ibireme.
 7 | //
 8 | //  This source code is licensed under the MIT-style license found in the
 9 | //  LICENSE file in the root directory of this source tree.
10 | //
11 | 
12 | #import 
13 | 
14 | NS_ASSUME_NONNULL_BEGIN
15 | 
16 | /**
17 |  Provide a method to parse `NSString` for `NSNumber`.
18 |  */
19 | @interface NSNumber (YYAdd)
20 | 
21 | /**
22 |  Creates and returns an NSNumber object from a string.
23 |  Valid format: @"12", @"12.345", @" -0xFF", @" .23e99 "...
24 |  
25 |  @param string  The string described an number.
26 |  
27 |  @return an NSNumber when parse succeed, or nil if an error occurs.
28 |  */
29 | + (nullable NSNumber *)numberWithString:(NSString *)string;
30 | 
31 | @end
32 | 
33 | NS_ASSUME_NONNULL_END
34 | 
--------------------------------------------------------------------------------
/Pods/YYKit/YYKit/Base/Foundation/NSObject+YYAddForARC.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  NSObject+YYAddForARC.h
 3 | //  YYKit 
 4 | //
 5 | //  Created by ibireme on 13/12/15.
 6 | //  Copyright (c) 2015 ibireme.
 7 | //
 8 | //  This source code is licensed under the MIT-style license found in the
 9 | //  LICENSE file in the root directory of this source tree.
10 | //
11 | 
12 | #import 
13 | 
14 | /**
15 |  Debug method for NSObject when using ARC.
16 |  */
17 | @interface NSObject (YYAddForARC)
18 | 
19 | /// Same as `retain`
20 | - (instancetype)arcDebugRetain;
21 | 
22 | /// Same as `release`
23 | - (oneway void)arcDebugRelease;
24 | 
25 | /// Same as `autorelease`
26 | - (instancetype)arcDebugAutorelease;
27 | 
28 | /// Same as `retainCount`
29 | - (NSUInteger)arcDebugRetainCount;
30 | 
31 | @end
32 | 
--------------------------------------------------------------------------------
/Pods/YYKit/YYKit/Base/Foundation/NSThread+YYAdd.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  NSThread+YYAdd.h
 3 | //  YYKit 
 4 | //
 5 | //  Created by ibireme on 15/7/3.
 6 | //  Copyright (c) 2015 ibireme.
 7 | //
 8 | //  This source code is licensed under the MIT-style license found in the
 9 | //  LICENSE file in the root directory of this source tree.
10 | //
11 | 
12 | #import 
13 | 
14 | @interface NSThread (YYAdd)
15 | 
16 | /**
17 |  Add an autorelease pool to current runloop for current thread.
18 |  
19 |  @discussion If you create your own thread (NSThread/pthread), and you use 
20 |  runloop to manage your task, you may use this method to add an autorelease pool
21 |  to the runloop. Its behavior is the same as the main thread's autorelease pool.
22 |  */
23 | + (void)addAutoreleasePoolToCurrentRunloop;
24 | 
25 | @end
26 | 
--------------------------------------------------------------------------------
/Pods/YYKit/YYKit/Base/UIKit/UIBarButtonItem+YYAdd.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  UIBarButtonItem+YYAdd.h
 3 | //  YYKit 
 4 | //
 5 | //  Created by ibireme on 13/10/15.
 6 | //  Copyright (c) 2015 ibireme.
 7 | //
 8 | //  This source code is licensed under the MIT-style license found in the
 9 | //  LICENSE file in the root directory of this source tree.
10 | //
11 | 
12 | #import 
13 | 
14 | NS_ASSUME_NONNULL_BEGIN
15 | 
16 | /**
17 |  Provides extensions for `UIBarButtonItem`.
18 |  */
19 | @interface UIBarButtonItem (YYAdd)
20 | 
21 | /**
22 |  The block that invoked when the item is selected. The objects captured by block
23 |  will retained by the ButtonItem.
24 |  
25 |  @discussion This param is conflict with `target` and `action` property.
26 |  Set this will set `target` and `action` property to some internal objects.
27 |  */
28 | @property (nullable, nonatomic, copy) void (^actionBlock)(id);
29 | 
30 | @end
31 | 
32 | NS_ASSUME_NONNULL_END
--------------------------------------------------------------------------------
/Pods/YYKit/YYKit/Base/UIKit/UITextField+YYAdd.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  UITextField+YYAdd.h
 3 | //  YYKit 
 4 | //
 5 | //  Created by ibireme on 14/5/12.
 6 | //  Copyright (c) 2015 ibireme.
 7 | //
 8 | //  This source code is licensed under the MIT-style license found in the
 9 | //  LICENSE file in the root directory of this source tree.
10 | //
11 | 
12 | #import 
13 | 
14 | NS_ASSUME_NONNULL_BEGIN
15 | 
16 | /**
17 |  Provides extensions for `UITextField`.
18 |  */
19 | @interface UITextField (YYAdd)
20 | 
21 | /**
22 |  Set all text selected.
23 |  */
24 | - (void)selectAllText;
25 | 
26 | /**
27 |  Set text in range selected.
28 |  
29 |  @param range  The range of selected text in a document.
30 |  */
31 | - (void)setSelectedRange:(NSRange)range;
32 | 
33 | @end
34 | 
35 | NS_ASSUME_NONNULL_END
36 | 
--------------------------------------------------------------------------------
/Pods/YYKit/YYKit/Utility/YYSentinel.h:
--------------------------------------------------------------------------------
 1 | //
 2 | //  YYSentinel.h
 3 | //  YYKit 
 4 | //
 5 | //  Created by ibireme on 15/4/13.
 6 | //  Copyright (c) 2015 ibireme.
 7 | //
 8 | //  This source code is licensed under the MIT-style license found in the
 9 | //  LICENSE file in the root directory of this source tree.
10 | //
11 | 
12 | #import 
13 | 
14 | NS_ASSUME_NONNULL_BEGIN
15 | 
16 | /**
17 |  YYSentinel is a thread safe incrementing counter. 
18 |  It may be used in some multi-threaded situation.
19 |  */
20 | @interface YYSentinel : NSObject
21 | 
22 | /// Returns the current value of the counter.
23 | @property (readonly) int32_t value;
24 | 
25 | /// Increase the value atomically.
26 | /// @return The new value.
27 | - (int32_t)increase;
28 | 
29 | @end
30 | 
31 | NS_ASSUME_NONNULL_END
32 | 
--------------------------------------------------------------------------------
/Pods/YYKit/YYKit/Utility/YYSentinel.m:
--------------------------------------------------------------------------------
 1 | //
 2 | //  YYSentinel.m
 3 | //  YYKit 
 4 | //
 5 | //  Created by ibireme on 15/4/13.
 6 | //  Copyright (c) 2015 ibireme.
 7 | //
 8 | //  This source code is licensed under the MIT-style license found in the
 9 | //  LICENSE file in the root directory of this source tree.
10 | //
11 | 
12 | #import "YYSentinel.h"
13 | #import 
14 | 
15 | @implementation YYSentinel {
16 |     int32_t _value;
17 | }
18 | 
19 | - (int32_t)value {
20 |     return _value;
21 | }
22 | 
23 | - (int32_t)increase {
24 |     return OSAtomicIncrement32(&_value);
25 | }
26 | 
27 | @end
28 | 
--------------------------------------------------------------------------------