├── .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 | --------------------------------------------------------------------------------