├── iOS-Network-Stack-Dive ├── Docs │ ├── CoreNetworkStackDoc │ │ ├── NetworkMonitorDesign.md │ │ ├── TCP链路流转图.png │ │ └── 协议解析流程图.png │ └── RFC │ │ └── rfc793.pdf ├── Assets.xcassets │ ├── Contents.json │ ├── AppIcon.appiconset │ │ ├── imag_app_icon.png │ │ ├── imag_app_icon 1.png │ │ └── imag_app_icon 2.png │ └── AccentColor.colorset │ │ └── Contents.json ├── Resources │ ├── Message │ │ ├── img_msg_fail@2x.png │ │ └── img_msg_fail@3x.png │ ├── loading │ │ ├── img_data_empty@3x.png │ │ └── img_default_loading@3x.png │ └── ChatBar │ │ ├── img_chat_bar_audio@2x.png │ │ ├── img_chat_bar_audio@3x.png │ │ ├── img_chat_bar_camera@2x.png │ │ ├── img_chat_bar_camera@3x.png │ │ ├── img_chat_bar_character@2x.png │ │ └── img_chat_bar_character@3x.png ├── Tools │ ├── MJRefresh │ │ ├── MJRefresh.bundle │ │ │ ├── arrow@2x.png │ │ │ ├── en.lproj │ │ │ │ └── Localizable.strings │ │ │ ├── zh-Hans.lproj │ │ │ │ └── Localizable.strings │ │ │ └── zh-Hant.lproj │ │ │ │ └── Localizable.strings │ │ ├── Base │ │ │ ├── MJRefreshBackFooter.h │ │ │ └── MJRefreshAutoFooter.h │ │ ├── Custom │ │ │ ├── Footer │ │ │ │ ├── Auto │ │ │ │ │ ├── MJRefreshAutoNormalFooter.h │ │ │ │ │ ├── MJRefreshAutoGifFooter.h │ │ │ │ │ └── MJRefreshAutoStateFooter.h │ │ │ │ └── Back │ │ │ │ │ ├── MJRefreshBackNormalFooter.h │ │ │ │ │ ├── MJRefreshBackGifFooter.h │ │ │ │ │ └── MJRefreshBackStateFooter.h │ │ │ └── Header │ │ │ │ ├── MJRefreshNormalHeader.h │ │ │ │ └── MJRefreshGifHeader.h │ │ ├── NSBundle+MJRefresh.h │ │ ├── MJRefresh.h │ │ └── UIView+MJExtension.h │ ├── TJPCache │ │ ├── TJPDiskCache.h │ │ ├── TJPMemoryCache.h │ │ └── TJPCacheProtocol.h │ └── TJPUITools │ │ └── TJPToast.h ├── ArchitectureExtensions │ ├── AOP │ │ ├── LoggingAspect │ │ │ ├── TJPLogModel.m │ │ │ ├── TJPLogger.h │ │ │ ├── TJPAspectCore.h │ │ │ ├── TJPLogModel.h │ │ │ └── TJPLogAspectInterface.h │ │ └── TJPLoggerViewController.h │ ├── Utility │ │ ├── TJPUtility │ │ │ └── TJPFPSLabel.h │ │ └── Category │ │ │ └── UIImage+TJPImageOrientation.h │ ├── NetworkMonitor │ │ ├── Metrics │ │ │ ├── TJPMessageParser+TJPMetrics.h │ │ │ ├── TJPConcreteSession+TJPMetrics.h │ │ │ ├── TJPConnectionManager+TJPMetrics.h │ │ │ └── TJPConnectStateMachine+TJPMetrics.h │ │ ├── TJPNetworkMonitorViewController.h │ │ └── TJPSessionPacketMonitor.h │ └── VIPER-Integration │ │ ├── VIPER-Demo │ │ └── Demo │ │ │ ├── Presenter │ │ │ └── TJPVIPERDemoPresenter.h │ │ │ ├── View │ │ │ ├── TJPVIPERDemoDetailViewController.h │ │ │ ├── TJPVIPERDemoViewController.h │ │ │ ├── TJPNineGridImageView.h │ │ │ ├── DetailVC │ │ │ │ ├── TJPNewsDetailTableViewController.h │ │ │ │ └── TJPNewsDetailTableViewController.m │ │ │ ├── TJPLikeCommentAreaView.h │ │ │ ├── TJPVIPERDemoDetailViewController.m │ │ │ └── TJPVIPERDemoViewController.m │ │ │ ├── Interactor │ │ │ └── TJPVIPERDemoInteractorImpl.h │ │ │ ├── Entity │ │ │ ├── TJPNewsCellModel.m │ │ │ ├── TJPImageCellModel.m │ │ │ ├── TJPVideoCellModel.m │ │ │ ├── TJPProductCellModel.m │ │ │ ├── TJPAdCellModel.m │ │ │ ├── TJPImageCellModel.h │ │ │ ├── TJPNewsCellModel.h │ │ │ ├── TJPVideoCellModel.h │ │ │ └── TJPProductCellModel.h │ │ │ ├── Cell │ │ │ ├── TJPAdCell.h │ │ │ ├── TJPImageCell.h │ │ │ ├── TJPNewsCell.h │ │ │ ├── TJPVideoCell.h │ │ │ ├── TJPProductCell.h │ │ │ └── TJPUserDynamicCell.h │ │ │ ├── Router │ │ │ └── TJPVIPERDemoRouter.h │ │ │ └── Respone │ │ │ └── TJPFeedResponse.h │ │ ├── CustomTableViewDemo │ │ ├── TJPCustomTableViewDemoViewController.h │ │ ├── TJPSectionTableViewDemoViewController.h │ │ └── TJPViperBaseTableView │ │ │ ├── Loading │ │ │ └── TJPDefaultLoadingAnimation.h │ │ │ ├── Protocol │ │ │ ├── TJPBaseTableViewLoadingProtocol.h │ │ │ └── TJPBaseCellModelProtocol.h │ │ │ ├── Model │ │ │ ├── TJPBaseSectionModel.m │ │ │ ├── TJPBaseSectionModel.h │ │ │ └── TJPBaseCellModel.h │ │ │ └── Cell │ │ │ └── TJPBaseTableViewCell.h │ │ ├── VIPER-Architecture │ │ ├── Router │ │ │ ├── TJPViewPushHandler.h │ │ │ └── TJPViewPresentHandler.h │ │ ├── View │ │ │ └── TJPViperBaseViewControllerProtocol.h │ │ └── Entity │ │ │ └── TJPNavigationModel.m │ │ └── DIContainer │ │ ├── TJPViperModuleAssembly.h │ │ └── TJPViperModuleProvider.h ├── ProductionBridge │ └── VIPER-Sample │ │ └── MessageModule │ │ ├── Entity │ │ └── TJPChatMessage.m │ │ ├── TJPChatViewController.h │ │ └── Manager │ │ └── TJPMessageTimeoutManager.h ├── CoreNetworkStack │ └── TJPIMCore │ │ ├── Message │ │ ├── TJPMessageFactory.h │ │ ├── TJPTextMessage.h │ │ └── TJPMessageSerializer.h │ │ ├── Error │ │ ├── TJPNETError.m │ │ ├── TJPNETErrorHandler.h │ │ └── TJPNETError.h │ │ ├── Protocol │ │ ├── TJPHeartbeatProtocol.h │ │ ├── TJPMessageProtocol.h │ │ └── TJPMessageManagerNetworkDelegate.h │ │ ├── Bulider │ │ └── TJPMessageBuilder.h │ │ └── Utility │ │ └── TJPNetworkUtil.h ├── Labs │ └── NetworkFundamentals │ │ └── Lab-Socket-API │ │ ├── StickyPacketDemo │ │ ├── StickPacketDemoController.h │ │ ├── SocketChatClient.h │ │ └── SocketChatServer.h │ │ └── StickyPacketSolution │ │ ├── StickPacketSolutionController.h │ │ ├── SolutionStickyPacketClient.h │ │ └── SolutionStickyPacketServer.h ├── Delegate │ └── AppDelegate.h ├── HomeVC │ └── HomeViewController.h ├── main.m └── Info.plist ├── Pods ├── Target Support Files │ ├── OCMock │ │ ├── OCMock.modulemap │ │ ├── OCMock-dummy.m │ │ ├── OCMock-prefix.pch │ │ └── OCMock-umbrella.h │ ├── Masonry │ │ ├── Masonry.modulemap │ │ ├── Masonry-dummy.m │ │ ├── Masonry-prefix.pch │ │ ├── Masonry.debug.xcconfig │ │ └── Masonry.release.xcconfig │ ├── Typhoon │ │ ├── Typhoon.modulemap │ │ ├── Typhoon-dummy.m │ │ ├── Typhoon-prefix.pch │ │ ├── Typhoon.debug.xcconfig │ │ └── Typhoon.release.xcconfig │ ├── YYModel │ │ ├── YYModel.modulemap │ │ ├── YYModel-dummy.m │ │ ├── YYModel-prefix.pch │ │ ├── YYModel-umbrella.h │ │ ├── YYModel.debug.xcconfig │ │ └── YYModel.release.xcconfig │ ├── SDWebImage │ │ ├── SDWebImage.modulemap │ │ ├── SDWebImage-dummy.m │ │ ├── SDWebImage-prefix.pch │ │ └── SDWebImage.debug.xcconfig │ ├── Pods-iOS-Network-Stack-DiveTests │ │ ├── Pods-iOS-Network-Stack-DiveTests-frameworks-Debug-output-files.xcfilelist │ │ ├── Pods-iOS-Network-Stack-DiveTests-frameworks-Release-output-files.xcfilelist │ │ ├── Pods-iOS-Network-Stack-DiveTests.modulemap │ │ ├── Pods-iOS-Network-Stack-DiveTests-dummy.m │ │ ├── Pods-iOS-Network-Stack-DiveTests-frameworks-Debug-input-files.xcfilelist │ │ ├── Pods-iOS-Network-Stack-DiveTests-frameworks-Release-input-files.xcfilelist │ │ └── Pods-iOS-Network-Stack-DiveTests-umbrella.h │ ├── Reachability │ │ ├── Reachability.modulemap │ │ ├── Reachability-dummy.m │ │ ├── Reachability-prefix.pch │ │ ├── Reachability-umbrella.h │ │ ├── Reachability.debug.xcconfig │ │ └── Reachability.release.xcconfig │ ├── ReactiveObjC │ │ ├── ReactiveObjC.modulemap │ │ ├── ReactiveObjC-dummy.m │ │ ├── ReactiveObjC-prefix.pch │ │ ├── ReactiveObjC.debug.xcconfig │ │ └── ReactiveObjC.release.xcconfig │ ├── DZNEmptyDataSet │ │ ├── DZNEmptyDataSet.modulemap │ │ ├── DZNEmptyDataSet-dummy.m │ │ ├── DZNEmptyDataSet-prefix.pch │ │ ├── DZNEmptyDataSet-umbrella.h │ │ ├── DZNEmptyDataSet.debug.xcconfig │ │ └── DZNEmptyDataSet.release.xcconfig │ ├── CocoaAsyncSocket │ │ ├── CocoaAsyncSocket.modulemap │ │ ├── CocoaAsyncSocket-dummy.m │ │ ├── CocoaAsyncSocket-prefix.pch │ │ ├── CocoaAsyncSocket-umbrella.h │ │ ├── CocoaAsyncSocket.debug.xcconfig │ │ └── CocoaAsyncSocket.release.xcconfig │ └── Pods-iOS-Network-Stack-Dive │ │ ├── Pods-iOS-Network-Stack-Dive.modulemap │ │ ├── Pods-iOS-Network-Stack-Dive-dummy.m │ │ ├── Pods-iOS-Network-Stack-Dive-umbrella.h │ │ ├── Pods-iOS-Network-Stack-Dive-frameworks-Debug-output-files.xcfilelist │ │ ├── Pods-iOS-Network-Stack-Dive-frameworks-Release-output-files.xcfilelist │ │ ├── Pods-iOS-Network-Stack-Dive-frameworks-Debug-input-files.xcfilelist │ │ └── Pods-iOS-Network-Stack-Dive-frameworks-Release-input-files.xcfilelist ├── ReactiveObjC │ └── ReactiveObjC │ │ ├── RACCompoundDisposableProvider.d │ │ ├── RACSignalProvider.d │ │ ├── RACAnnotations.h │ │ ├── RACEagerSequence.h │ │ ├── RACImmediateScheduler.h │ │ ├── RACEmptySequence.h │ │ ├── RACUnarySequence.h │ │ ├── RACValueTransformer.h │ │ ├── RACErrorSignal.h │ │ ├── RACIndexSetSequence.h │ │ ├── RACEmptySignal.h │ │ ├── NSArray+RACSequenceAdditions.m │ │ ├── RACMulticastConnection+Private.h │ │ ├── NSString+RACSequenceAdditions.m │ │ ├── NSIndexSet+RACSequenceAdditions.m │ │ ├── RACDynamicSignal.h │ │ ├── RACReturnSignal.h │ │ ├── NSSet+RACSequenceAdditions.m │ │ ├── RACUnit.m │ │ ├── RACSubscriptionScheduler.h │ │ ├── RACUnit.h │ │ ├── NSOrderedSet+RACSequenceAdditions.m │ │ ├── RACSubscriber+Private.h │ │ ├── RACSignalSequence.h │ │ ├── NSEnumerator+RACSequenceAdditions.m │ │ ├── RACGroupedSignal.m │ │ ├── NSFileHandle+RACSupport.h │ │ ├── RACGroupedSignal.h │ │ ├── UISwitch+RACSignalSupport.m │ │ ├── NSObject+RACDescription.h │ │ ├── UIGestureRecognizer+RACSignalSupport.h │ │ ├── RACArraySequence.h │ │ ├── RACTupleSequence.h │ │ ├── RACStringSequence.h │ │ ├── UISlider+RACSignalSupport.m │ │ ├── UIStepper+RACSignalSupport.m │ │ ├── RACScopedDisposable.h │ │ ├── NSNotificationCenter+RACSupport.h │ │ ├── UIDatePicker+RACSignalSupport.m │ │ ├── UIControl+RACSignalSupport.h │ │ ├── RACQueueScheduler.h │ │ ├── UISegmentedControl+RACSignalSupport.m │ │ ├── NSEnumerator+RACSequenceAdditions.h │ │ ├── RACScopedDisposable.m │ │ ├── NSSet+RACSequenceAdditions.h │ │ ├── RACBehaviorSubject.h │ │ ├── NSArray+RACSequenceAdditions.h │ │ ├── NSOrderedSet+RACSequenceAdditions.h │ │ ├── RACStream+Private.h │ │ ├── NSIndexSet+RACSequenceAdditions.h │ │ ├── NSData+RACSupport.h │ │ ├── UIButton+RACCommandSupport.h │ │ ├── NSString+RACSequenceAdditions.h │ │ ├── UISwitch+RACSignalSupport.h │ │ ├── RACDynamicSequence.h │ │ ├── NSString+RACSupport.h │ │ ├── RACReplaySubject.h │ │ ├── UIBarButtonItem+RACCommandSupport.h │ │ └── UIRefreshControl+RACCommandSupport.h ├── OCMock │ ├── README.md │ └── Source │ │ └── OCMock │ │ ├── OCMExpectationRecorder.h │ │ └── OCMArgAction.h ├── Masonry │ └── Masonry │ │ ├── MASLayoutConstraint.m │ │ ├── NSLayoutConstraint+MASDebugAdditions.h │ │ ├── MASLayoutConstraint.h │ │ └── MASCompositeConstraint.h ├── SDWebImage │ ├── SDWebImage │ │ ├── Core │ │ │ ├── SDWebImageOperation.m │ │ │ ├── SDWebImageCompat.m │ │ │ ├── UIImage+GIF.m │ │ │ ├── SDImageAPNGCoder.h │ │ │ ├── SDWebImageError.m │ │ │ ├── SDWebImageOperation.h │ │ │ └── UIImage+ExtendedCacheData.m │ │ └── Private │ │ │ ├── UIColor+SDHexString.h │ │ │ ├── SDAssociatedObject.h │ │ │ ├── SDDeviceHelper.h │ │ │ ├── SDWeakProxy.h │ │ │ ├── SDInternalMacros.m │ │ │ ├── SDWebImageTransitionInternal.h │ │ │ ├── SDImageCachesManagerOperation.h │ │ │ ├── NSBezierPath+SDRoundedCorners.h │ │ │ └── SDAsyncBlockOperation.h │ └── WebImage │ │ └── PrivacyInfo.xcprivacy ├── Typhoon │ └── Source │ │ ├── Definition │ │ ├── AutoInjection │ │ │ ├── TyphoonInjectedObject.m │ │ │ ├── TyphoonInjectedObject.h │ │ │ └── TyphoonAutoInjection.h │ │ ├── Internal │ │ │ ├── TyphoonBlockDefinition+InstanceBuilder.h │ │ │ ├── NSDictionary+CustomInjection.h │ │ │ ├── TyphoonBlockDefinition+Internal.h │ │ │ ├── TyphoonInjectionDefinition.h │ │ │ └── TyphoonObjectWithCustomInjection.h │ │ ├── Injections │ │ │ ├── TyphoonInjectionByComponentFactory.h │ │ │ ├── TyphoonInjectionByType.h │ │ │ ├── TyphoonPropertyInjection.h │ │ │ ├── TyphoonParameterInjection.h │ │ │ ├── TyphoonInjectionByCurrentRuntimeArguments.h │ │ │ ├── TyphoonInjection.h │ │ │ ├── TyphoonInjectionByObjectFromString.h │ │ │ ├── TyphoonInjectionByObjectInstance.h │ │ │ └── TyphoonInjectionByRuntimeArgument.h │ │ └── Namespacing │ │ │ └── TyphoonDefinitionNamespace.h │ │ ├── ios │ │ ├── Storyboard │ │ │ ├── TyphoonStoryboardResolver.h │ │ │ ├── Internal │ │ │ │ ├── UIView+TyphoonDefinitionKey.h │ │ │ │ └── UIViewController+TyphoonStoryboardIntegration.h │ │ │ ├── UIResponder+TyphoonOutletTransfer.h │ │ │ ├── TyphoonStoryboardProvider.h │ │ │ ├── UIView+TyphoonOutletTransfer.h │ │ │ └── TyphoonViewHelpers.h │ │ ├── TyphooniOS.h │ │ ├── TypeConversion │ │ │ └── Converters │ │ │ │ ├── TyphoonBundledImageTypeConverter.h │ │ │ │ └── TyphoonUIColorTypeConverter.h │ │ └── Definition │ │ │ └── TyphoonStoryboardDefinition.h │ │ ├── Factory │ │ ├── Internal │ │ │ ├── TyphoonCircularDependencyTerminator.h │ │ │ ├── TyphoonCircularDependencyTerminator.m │ │ │ ├── TyphoonAssemblyBuilder+PlistProcessor.h │ │ │ ├── NSMethodSignature+TCFUnwrapValues.h │ │ │ ├── TyphoonAssemblyBuilder.h │ │ │ ├── NSInvocation+TCFWrapValues.h │ │ │ ├── TyphoonCollaboratingAssembliesCollector.h │ │ │ ├── NSInvocation+TCFCustomImplementation.h │ │ │ ├── NSInvocation+TCFUnwrapValues.h │ │ │ └── TyphoonMemoryManagementUtils.h │ │ └── Pool │ │ │ └── TyphoonWeakComponentsPool.h │ │ ├── Utils │ │ ├── TyphoonUtils.h │ │ ├── NSObject+PropertyInjection.h │ │ └── Swizzle │ │ │ ├── TyphoonSwizzlerDefaultImpl.h │ │ │ └── TyphoonMethodSwizzler.h │ │ ├── TypeConversion │ │ └── Converters │ │ │ ├── TyphoonNSURLTypeConverter.h │ │ │ ├── TyphoonNSNumberTypeConverter.h │ │ │ ├── NSNullTypeConverter.h │ │ │ ├── NSNullTypeConverter.m │ │ │ └── TyphoonPassThroughTypeConverter.h │ │ └── Configuration │ │ ├── ConfigPostProcessor │ │ └── TyphoonConfiguration │ │ │ ├── TyphoonJsonStyleConfiguration.h │ │ │ ├── TyphoonPropertyStyleConfiguration.h │ │ │ ├── TyphoonPlistStyleConfiguration.h │ │ │ └── TyphoonConfiguration.h │ │ ├── GlobalConfigResolver │ │ └── TyphoonGlobalConfigCollector.h │ │ ├── Startup │ │ └── TyphoonStartup.h │ │ └── Resource │ │ └── TyphoonPathResource.h └── YYModel │ └── YYModel │ └── YYModel.h ├── iOS-Network-Stack-Dive.xcodeproj ├── project.xcworkspace │ └── contents.xcworkspacedata └── xcuserdata │ └── aarongtang.xcuserdatad │ └── xcschemes │ └── xcschememanagement.plist ├── iOS-Network-Stack-Dive.xcworkspace └── contents.xcworkspacedata └── Podfile /iOS-Network-Stack-Dive/Docs/CoreNetworkStackDoc/NetworkMonitorDesign.md: -------------------------------------------------------------------------------- 1 | # 全链路追踪(End-to-End Trace)设计思路 2 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/Docs/RFC/rfc793.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeAcmen/ios-async-socket-explorer/HEAD/iOS-Network-Stack-Dive/Docs/RFC/rfc793.pdf -------------------------------------------------------------------------------- /Pods/Target Support Files/OCMock/OCMock.modulemap: -------------------------------------------------------------------------------- 1 | framework module OCMock { 2 | umbrella header "OCMock-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /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/OCMock/OCMock-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_OCMock : NSObject 3 | @end 4 | @implementation PodsDummy_OCMock 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Typhoon/Typhoon.modulemap: -------------------------------------------------------------------------------- 1 | framework module Typhoon { 2 | umbrella header "Typhoon-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/YYModel/YYModel.modulemap: -------------------------------------------------------------------------------- 1 | framework module YYModel { 2 | umbrella header "YYModel-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /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/Typhoon/Typhoon-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Typhoon : NSObject 3 | @end 4 | @implementation PodsDummy_Typhoon 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/YYModel/YYModel-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_YYModel : NSObject 3 | @end 4 | @implementation PodsDummy_YYModel 5 | @end 6 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/Docs/CoreNetworkStackDoc/TCP链路流转图.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeAcmen/ios-async-socket-explorer/HEAD/iOS-Network-Stack-Dive/Docs/CoreNetworkStackDoc/TCP链路流转图.png -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/Docs/CoreNetworkStackDoc/协议解析流程图.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeAcmen/ios-async-socket-explorer/HEAD/iOS-Network-Stack-Dive/Docs/CoreNetworkStackDoc/协议解析流程图.png -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/Resources/Message/img_msg_fail@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeAcmen/ios-async-socket-explorer/HEAD/iOS-Network-Stack-Dive/Resources/Message/img_msg_fail@2x.png -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/Resources/Message/img_msg_fail@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeAcmen/ios-async-socket-explorer/HEAD/iOS-Network-Stack-Dive/Resources/Message/img_msg_fail@3x.png -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-iOS-Network-Stack-DiveTests/Pods-iOS-Network-Stack-DiveTests-frameworks-Debug-output-files.xcfilelist: -------------------------------------------------------------------------------- 1 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/OCMock.framework -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-iOS-Network-Stack-DiveTests/Pods-iOS-Network-Stack-DiveTests-frameworks-Release-output-files.xcfilelist: -------------------------------------------------------------------------------- 1 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/OCMock.framework -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/Resources/loading/img_data_empty@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeAcmen/ios-async-socket-explorer/HEAD/iOS-Network-Stack-Dive/Resources/loading/img_data_empty@3x.png -------------------------------------------------------------------------------- /Pods/Target Support Files/Reachability/Reachability.modulemap: -------------------------------------------------------------------------------- 1 | framework module Reachability { 2 | umbrella header "Reachability-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/ReactiveObjC/ReactiveObjC.modulemap: -------------------------------------------------------------------------------- 1 | framework module ReactiveObjC { 2 | umbrella header "ReactiveObjC-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/SDWebImage/SDWebImage-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_SDWebImage : NSObject 3 | @end 4 | @implementation PodsDummy_SDWebImage 5 | @end 6 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/Resources/ChatBar/img_chat_bar_audio@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeAcmen/ios-async-socket-explorer/HEAD/iOS-Network-Stack-Dive/Resources/ChatBar/img_chat_bar_audio@2x.png -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/Resources/ChatBar/img_chat_bar_audio@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeAcmen/ios-async-socket-explorer/HEAD/iOS-Network-Stack-Dive/Resources/ChatBar/img_chat_bar_audio@3x.png -------------------------------------------------------------------------------- /Pods/Target Support Files/Reachability/Reachability-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Reachability : NSObject 3 | @end 4 | @implementation PodsDummy_Reachability 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/ReactiveObjC/ReactiveObjC-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_ReactiveObjC : NSObject 3 | @end 4 | @implementation PodsDummy_ReactiveObjC 5 | @end 6 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/Resources/ChatBar/img_chat_bar_camera@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeAcmen/ios-async-socket-explorer/HEAD/iOS-Network-Stack-Dive/Resources/ChatBar/img_chat_bar_camera@2x.png -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/Resources/ChatBar/img_chat_bar_camera@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeAcmen/ios-async-socket-explorer/HEAD/iOS-Network-Stack-Dive/Resources/ChatBar/img_chat_bar_camera@3x.png -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/Resources/loading/img_default_loading@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeAcmen/ios-async-socket-explorer/HEAD/iOS-Network-Stack-Dive/Resources/loading/img_default_loading@3x.png -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/Tools/MJRefresh/MJRefresh.bundle/arrow@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeAcmen/ios-async-socket-explorer/HEAD/iOS-Network-Stack-Dive/Tools/MJRefresh/MJRefresh.bundle/arrow@2x.png -------------------------------------------------------------------------------- /Pods/Target Support Files/DZNEmptyDataSet/DZNEmptyDataSet.modulemap: -------------------------------------------------------------------------------- 1 | framework module DZNEmptyDataSet { 2 | umbrella header "DZNEmptyDataSet-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/Resources/ChatBar/img_chat_bar_character@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeAcmen/ios-async-socket-explorer/HEAD/iOS-Network-Stack-Dive/Resources/ChatBar/img_chat_bar_character@2x.png -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/Resources/ChatBar/img_chat_bar_character@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeAcmen/ios-async-socket-explorer/HEAD/iOS-Network-Stack-Dive/Resources/ChatBar/img_chat_bar_character@3x.png -------------------------------------------------------------------------------- /Pods/Target Support Files/CocoaAsyncSocket/CocoaAsyncSocket.modulemap: -------------------------------------------------------------------------------- 1 | framework module CocoaAsyncSocket { 2 | umbrella header "CocoaAsyncSocket-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/CocoaAsyncSocket/CocoaAsyncSocket-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_CocoaAsyncSocket : NSObject 3 | @end 4 | @implementation PodsDummy_CocoaAsyncSocket 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/DZNEmptyDataSet/DZNEmptyDataSet-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_DZNEmptyDataSet : NSObject 3 | @end 4 | @implementation PodsDummy_DZNEmptyDataSet 5 | @end 6 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/Assets.xcassets/AppIcon.appiconset/imag_app_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeAcmen/ios-async-socket-explorer/HEAD/iOS-Network-Stack-Dive/Assets.xcassets/AppIcon.appiconset/imag_app_icon.png -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/Assets.xcassets/AppIcon.appiconset/imag_app_icon 1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeAcmen/ios-async-socket-explorer/HEAD/iOS-Network-Stack-Dive/Assets.xcassets/AppIcon.appiconset/imag_app_icon 1.png -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/Assets.xcassets/AppIcon.appiconset/imag_app_icon 2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeAcmen/ios-async-socket-explorer/HEAD/iOS-Network-Stack-Dive/Assets.xcassets/AppIcon.appiconset/imag_app_icon 2.png -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/Tools/MJRefresh/MJRefresh.bundle/en.lproj/Localizable.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeAcmen/ios-async-socket-explorer/HEAD/iOS-Network-Stack-Dive/Tools/MJRefresh/MJRefresh.bundle/en.lproj/Localizable.strings -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/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 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/Tools/MJRefresh/MJRefresh.bundle/zh-Hans.lproj/Localizable.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeAcmen/ios-async-socket-explorer/HEAD/iOS-Network-Stack-Dive/Tools/MJRefresh/MJRefresh.bundle/zh-Hans.lproj/Localizable.strings -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-iOS-Network-Stack-Dive/Pods-iOS-Network-Stack-Dive.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_iOS_Network_Stack_Dive { 2 | umbrella header "Pods-iOS-Network-Stack-Dive-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Pods/ReactiveObjC/ReactiveObjC/RACCompoundDisposableProvider.d: -------------------------------------------------------------------------------- 1 | provider RACCompoundDisposable { 2 | probe added(char *compoundDisposable, char *disposable, long newTotal); 3 | probe removed(char *compoundDisposable, char *disposable, long newTotal); 4 | }; 5 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-iOS-Network-Stack-Dive/Pods-iOS-Network-Stack-Dive-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_iOS_Network_Stack_Dive : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_iOS_Network_Stack_Dive 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-iOS-Network-Stack-DiveTests/Pods-iOS-Network-Stack-DiveTests.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_iOS_Network_Stack_DiveTests { 2 | umbrella header "Pods-iOS-Network-Stack-DiveTests-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-iOS-Network-Stack-DiveTests/Pods-iOS-Network-Stack-DiveTests-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_iOS_Network_Stack_DiveTests : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_iOS_Network_Stack_DiveTests 5 | @end 6 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/ArchitectureExtensions/AOP/LoggingAspect/TJPLogModel.m: -------------------------------------------------------------------------------- 1 | // 2 | // TJPLogModel.m 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/3/26. 6 | // 7 | 8 | #import "TJPLogModel.h" 9 | 10 | @implementation TJPLogModel 11 | 12 | @end 13 | -------------------------------------------------------------------------------- /Pods/ReactiveObjC/ReactiveObjC/RACSignalProvider.d: -------------------------------------------------------------------------------- 1 | provider RACSignal { 2 | probe next(char *signal, char *subscriber, char *valueDescription); 3 | probe completed(char *signal, char *subscriber); 4 | probe error(char *signal, char *subscriber, char *errorDescription); 5 | }; 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-iOS-Network-Stack-DiveTests/Pods-iOS-Network-Stack-DiveTests-frameworks-Debug-input-files.xcfilelist: -------------------------------------------------------------------------------- 1 | ${PODS_ROOT}/Target Support Files/Pods-iOS-Network-Stack-DiveTests/Pods-iOS-Network-Stack-DiveTests-frameworks.sh 2 | ${BUILT_PRODUCTS_DIR}/OCMock/OCMock.framework -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-iOS-Network-Stack-DiveTests/Pods-iOS-Network-Stack-DiveTests-frameworks-Release-input-files.xcfilelist: -------------------------------------------------------------------------------- 1 | ${PODS_ROOT}/Target Support Files/Pods-iOS-Network-Stack-DiveTests/Pods-iOS-Network-Stack-DiveTests-frameworks.sh 2 | ${BUILT_PRODUCTS_DIR}/OCMock/OCMock.framework -------------------------------------------------------------------------------- /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/OCMock/OCMock-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/Typhoon/Typhoon-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/YYModel/YYModel-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/Reachability/Reachability-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/ReactiveObjC/ReactiveObjC-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-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 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/ProductionBridge/VIPER-Sample/MessageModule/Entity/TJPChatMessage.m: -------------------------------------------------------------------------------- 1 | // 2 | // TJPChatMessage.m 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/6/23. 6 | // 7 | 8 | #import "TJPChatMessage.h" 9 | 10 | @implementation TJPChatMessage 11 | 12 | 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /Pods/Target Support Files/CocoaAsyncSocket/CocoaAsyncSocket-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/DZNEmptyDataSet/DZNEmptyDataSet-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /Pods/OCMock/README.md: -------------------------------------------------------------------------------- 1 | OCMock 2 | ====== 3 | 4 | ![Build Status](https://github.com/erikdoe/ocmock/actions/workflows/build-and-test.yaml/badge.svg?branch=master) 5 | 6 | OCMock is an Objective-C implementation of mock objects. 7 | 8 | For downloads, documentation, and support please visit [ocmock.org](http://ocmock.org/). 9 | -------------------------------------------------------------------------------- /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/ReactiveObjC/ReactiveObjC/RACAnnotations.h: -------------------------------------------------------------------------------- 1 | // 2 | // RACAnnotations.h 3 | // ReactiveObjC 4 | // 5 | // Created by Eric Horacek on 3/31/17. 6 | // Copyright © 2017 GitHub. All rights reserved. 7 | // 8 | 9 | #ifndef RAC_WARN_UNUSED_RESULT 10 | #define RAC_WARN_UNUSED_RESULT __attribute__((warn_unused_result)) 11 | #endif 12 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/Tools/MJRefresh/Base/MJRefreshBackFooter.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshBackFooter.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/4/24. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshFooter.h" 10 | 11 | @interface MJRefreshBackFooter : MJRefreshFooter 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/ArchitectureExtensions/Utility/TJPUtility/TJPFPSLabel.h: -------------------------------------------------------------------------------- 1 | // 2 | // TJPFPSLabel.h 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/7/29. 6 | // 7 | 8 | #import 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @interface TJPFPSLabel : UILabel 13 | 14 | @end 15 | 16 | NS_ASSUME_NONNULL_END 17 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/CoreNetworkStack/TJPIMCore/Message/TJPMessageFactory.h: -------------------------------------------------------------------------------- 1 | // 2 | // TJPMessageFactory.h 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/5/13. 6 | // 7 | 8 | #import 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @interface TJPMessageFactory : NSObject 13 | 14 | @end 15 | 16 | NS_ASSUME_NONNULL_END 17 | -------------------------------------------------------------------------------- /Pods/ReactiveObjC/ReactiveObjC/RACEagerSequence.h: -------------------------------------------------------------------------------- 1 | // 2 | // RACEagerSequence.h 3 | // ReactiveObjC 4 | // 5 | // Created by Uri Baghin on 02/01/2013. 6 | // Copyright (c) 2013 GitHub, Inc. All rights reserved. 7 | // 8 | 9 | #import "RACArraySequence.h" 10 | 11 | // Private class that implements an eager sequence. 12 | @interface RACEagerSequence : RACArraySequence 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/ProductionBridge/VIPER-Sample/MessageModule/TJPChatViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // TJPChatViewController.h 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/6/23. 6 | // 7 | 8 | #import 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @interface TJPChatViewController : UIViewController 13 | 14 | @end 15 | 16 | NS_ASSUME_NONNULL_END 17 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/ArchitectureExtensions/NetworkMonitor/Metrics/TJPMessageParser+TJPMetrics.h: -------------------------------------------------------------------------------- 1 | // 2 | // TJPMessageParser+TJPMetrics.h 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/4/10. 6 | // 数据解析增强埋点 7 | 8 | #import "TJPMessageParser.h" 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @interface TJPMessageParser (TJPMetrics) 13 | 14 | @end 15 | 16 | NS_ASSUME_NONNULL_END 17 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/ArchitectureExtensions/NetworkMonitor/Metrics/TJPConcreteSession+TJPMetrics.h: -------------------------------------------------------------------------------- 1 | // 2 | // TJPConcreteSession+TJPMetrics.h 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/5/16. 6 | // 消息发送监控 7 | 8 | #import "TJPConcreteSession.h" 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @interface TJPConcreteSession (TJPMetrics) 13 | 14 | @end 15 | 16 | NS_ASSUME_NONNULL_END 17 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/ArchitectureExtensions/NetworkMonitor/TJPNetworkMonitorViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // TJPNetworkMonitorViewController.h 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/4/14. 6 | // 7 | 8 | #import 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @interface TJPNetworkMonitorViewController : UIViewController 13 | 14 | @end 15 | 16 | NS_ASSUME_NONNULL_END 17 | -------------------------------------------------------------------------------- /Pods/ReactiveObjC/ReactiveObjC/RACImmediateScheduler.h: -------------------------------------------------------------------------------- 1 | // 2 | // RACImmediateScheduler.h 3 | // ReactiveObjC 4 | // 5 | // Created by Josh Abernathy on 11/30/12. 6 | // Copyright (c) 2012 GitHub, Inc. All rights reserved. 7 | // 8 | 9 | #import "RACScheduler.h" 10 | 11 | // A private scheduler which immediately executes its scheduled blocks. 12 | @interface RACImmediateScheduler : RACScheduler 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/ArchitectureExtensions/NetworkMonitor/Metrics/TJPConnectionManager+TJPMetrics.h: -------------------------------------------------------------------------------- 1 | // 2 | // TJPConnectionManager+TJPMetrics.h 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/5/15. 6 | // 连接埋点 7 | 8 | #import "TJPConnectionManager.h" 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @interface TJPConnectionManager (TJPMetrics) 13 | 14 | @end 15 | 16 | NS_ASSUME_NONNULL_END 17 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/Labs/NetworkFundamentals/Lab-Socket-API/StickyPacketDemo/StickPacketDemoController.h: -------------------------------------------------------------------------------- 1 | // 2 | // StickPacketDemoController.h 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/3/18. 6 | // 粘包问题演示 7 | 8 | #import 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @interface StickPacketDemoController : UIViewController 13 | 14 | @end 15 | 16 | NS_ASSUME_NONNULL_END 17 | -------------------------------------------------------------------------------- /Pods/ReactiveObjC/ReactiveObjC/RACEmptySequence.h: -------------------------------------------------------------------------------- 1 | // 2 | // RACEmptySequence.h 3 | // ReactiveObjC 4 | // 5 | // Created by Justin Spahr-Summers on 2012-10-29. 6 | // Copyright (c) 2012 GitHub. All rights reserved. 7 | // 8 | 9 | #import "RACSequence.h" 10 | 11 | // Private class representing an empty sequence. 12 | @interface RACEmptySequence : RACSequence 13 | 14 | + (RACEmptySequence *)empty; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/ArchitectureExtensions/VIPER-Integration/VIPER-Demo/Demo/Presenter/TJPVIPERDemoPresenter.h: -------------------------------------------------------------------------------- 1 | // 2 | // TJPVIPERDemoPresenter.h 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/7/28. 6 | // 7 | 8 | #import "TJPViperBasePresenterImpl.h" 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @interface TJPVIPERDemoPresenter : TJPViperBasePresenterImpl 13 | 14 | @end 15 | 16 | NS_ASSUME_NONNULL_END 17 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/Tools/TJPCache/TJPDiskCache.h: -------------------------------------------------------------------------------- 1 | // 2 | // TJPDiskCache.h 3 | // 4 | // 5 | // Created by 唐佳鹏 on 2025/1/18. 6 | // 7 | 8 | #import 9 | #import "TJPCacheProtocol.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface TJPDiskCache : NSObject 14 | 15 | @property (nonatomic, strong) NSString *cacheDirectory; 16 | 17 | @end 18 | 19 | NS_ASSUME_NONNULL_END 20 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/ArchitectureExtensions/VIPER-Integration/VIPER-Demo/Demo/View/TJPVIPERDemoDetailViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // TJPVIPERDemoDetailViewController.h 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/4/1. 6 | // 7 | 8 | #import 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @interface TJPVIPERDemoDetailViewController : UIViewController 13 | 14 | @end 15 | 16 | NS_ASSUME_NONNULL_END 17 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/Labs/NetworkFundamentals/Lab-Socket-API/StickyPacketSolution/StickPacketSolutionController.h: -------------------------------------------------------------------------------- 1 | // 2 | // StickPacketSolutionController.h 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/3/18. 6 | // 解决粘包问题的基本方式 7 | 8 | #import 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @interface StickPacketSolutionController : UIViewController 13 | 14 | @end 15 | 16 | NS_ASSUME_NONNULL_END 17 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/ArchitectureExtensions/VIPER-Integration/CustomTableViewDemo/TJPCustomTableViewDemoViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // TJPCustomTableViewDemoViewController.h 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/3/29. 6 | // 7 | 8 | #import 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @interface TJPCustomTableViewDemoViewController : UIViewController 13 | 14 | @end 15 | 16 | NS_ASSUME_NONNULL_END 17 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/ArchitectureExtensions/VIPER-Integration/VIPER-Demo/Demo/Interactor/TJPVIPERDemoInteractorImpl.h: -------------------------------------------------------------------------------- 1 | // 2 | // TJPVIPERDemoInteractorImpl.h 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/4/1. 6 | // 7 | 8 | #import "TJPViperBaseInteractorImpl.h" 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @interface TJPVIPERDemoInteractorImpl : TJPViperBaseInteractorImpl 13 | 14 | @end 15 | 16 | NS_ASSUME_NONNULL_END 17 | -------------------------------------------------------------------------------- /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/ReactiveObjC/ReactiveObjC/RACUnarySequence.h: -------------------------------------------------------------------------------- 1 | // 2 | // RACUnarySequence.h 3 | // ReactiveObjC 4 | // 5 | // Created by Justin Spahr-Summers on 2013-05-01. 6 | // Copyright (c) 2013 GitHub, Inc. All rights reserved. 7 | // 8 | 9 | #import "RACSequence.h" 10 | 11 | // Private class representing a sequence of exactly one value. 12 | @interface RACUnarySequence : RACSequence 13 | 14 | + (RACUnarySequence *)return:(id)value; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/ArchitectureExtensions/VIPER-Integration/VIPER-Demo/Demo/View/TJPVIPERDemoViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // TJPVIPERDemoViewController.h 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/4/1. 6 | // 7 | 8 | #import "TJPViperBaseTableViewController.h" 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @interface TJPVIPERDemoViewController : TJPViperBaseTableViewController 13 | 14 | @end 15 | 16 | NS_ASSUME_NONNULL_END 17 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/ArchitectureExtensions/Utility/Category/UIImage+TJPImageOrientation.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+TJPImageOrientation.h 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/5/14. 6 | // 7 | 8 | #import 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @interface UIImage (TJPImageOrientation) 13 | 14 | /// 修正图片方向(解决拍照图片旋转问题) 15 | - (UIImage *)fixOrientation; 16 | 17 | 18 | @end 19 | 20 | NS_ASSUME_NONNULL_END 21 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/ArchitectureExtensions/VIPER-Integration/VIPER-Demo/Demo/Entity/TJPNewsCellModel.m: -------------------------------------------------------------------------------- 1 | // 2 | // TJPNewsCellModel.m 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/7/29. 6 | // 7 | 8 | #import "TJPNewsCellModel.h" 9 | 10 | @implementation TJPNewsCellModel 11 | 12 | - (NSString *)cellName { 13 | return @"TJPNewsCell"; 14 | } 15 | 16 | - (CGFloat)cellHeight { 17 | return 120.0f; 18 | } 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /Pods/ReactiveObjC/ReactiveObjC/RACValueTransformer.h: -------------------------------------------------------------------------------- 1 | // 2 | // RACValueTransformer.h 3 | // ReactiveObjC 4 | // 5 | // Created by Josh Abernathy on 3/6/12. 6 | // Copyright (c) 2012 GitHub, Inc. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | // A private block based transformer. 12 | @interface RACValueTransformer : NSValueTransformer 13 | 14 | + (instancetype)transformerWithBlock:(id (^)(id value))block; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/ArchitectureExtensions/VIPER-Integration/VIPER-Demo/Demo/Entity/TJPImageCellModel.m: -------------------------------------------------------------------------------- 1 | // 2 | // TJPImageCellModel.m 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/7/29. 6 | // 7 | 8 | #import "TJPImageCellModel.h" 9 | 10 | @implementation TJPImageCellModel 11 | 12 | - (NSString *)cellName { 13 | return @"TJPImageCell"; 14 | } 15 | 16 | - (CGFloat)cellHeight { 17 | return 280.0f; 18 | } 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/ArchitectureExtensions/VIPER-Integration/VIPER-Demo/Demo/Entity/TJPVideoCellModel.m: -------------------------------------------------------------------------------- 1 | // 2 | // TJPVideoCellModel.m 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/7/29. 6 | // 7 | 8 | #import "TJPVideoCellModel.h" 9 | 10 | @implementation TJPVideoCellModel 11 | 12 | - (NSString *)cellName { 13 | return @"TJPVideoCell"; 14 | } 15 | 16 | - (CGFloat)cellHeight { 17 | return 180.0f; 18 | } 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/ArchitectureExtensions/VIPER-Integration/CustomTableViewDemo/TJPSectionTableViewDemoViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // TJPSectionTableViewDemoViewController.h 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/7/24. 6 | // 7 | 8 | #import 9 | 10 | 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | @interface TJPSectionTableViewDemoViewController : UIViewController 15 | 16 | 17 | @end 18 | 19 | NS_ASSUME_NONNULL_END 20 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/CoreNetworkStack/TJPIMCore/Error/TJPNETError.m: -------------------------------------------------------------------------------- 1 | // 2 | // TJPNETError.m 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/3/19. 6 | // 7 | 8 | #import "TJPNETError.h" 9 | 10 | @implementation TJPNETError 11 | 12 | 13 | + (instancetype)errorWithCode:(TJPNETErrorCode)code userInfo:(NSDictionary *)dict { 14 | return [[self alloc] initWithDomain:@"com.tjpnetwork.error" code:code userInfo:dict]; 15 | } 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/Delegate/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/3/17. 6 | // 7 | 8 | #import 9 | 10 | @class HomeViewController; 11 | @interface AppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow * window; 14 | 15 | 16 | @property (nonatomic, strong) HomeViewController *homeViewController; 17 | 18 | 19 | 20 | @end 21 | 22 | -------------------------------------------------------------------------------- /Pods/ReactiveObjC/ReactiveObjC/RACErrorSignal.h: -------------------------------------------------------------------------------- 1 | // 2 | // RACErrorSignal.h 3 | // ReactiveObjC 4 | // 5 | // Created by Justin Spahr-Summers on 2013-10-10. 6 | // Copyright (c) 2013 GitHub, Inc. All rights reserved. 7 | // 8 | 9 | #import "RACSignal.h" 10 | 11 | // A private `RACSignal` subclass that synchronously sends an error to any 12 | // subscriber. 13 | @interface RACErrorSignal : RACSignal 14 | 15 | + (RACSignal *)error:(NSError *)error; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/ArchitectureExtensions/VIPER-Integration/VIPER-Demo/Demo/Entity/TJPProductCellModel.m: -------------------------------------------------------------------------------- 1 | // 2 | // TJPProductCellModel.m 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/7/29. 6 | // 7 | 8 | #import "TJPProductCellModel.h" 9 | 10 | @implementation TJPProductCellModel 11 | 12 | - (NSString *)cellName { 13 | return @"TJPProductCell"; 14 | } 15 | 16 | - (CGFloat)cellHeight { 17 | return 150.0f; 18 | } 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/ArchitectureExtensions/VIPER-Integration/VIPER-Demo/Demo/View/TJPNineGridImageView.h: -------------------------------------------------------------------------------- 1 | // 2 | // TJPNineGridImageView.h 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/7/30. 6 | // 7 | 8 | #import 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @interface TJPNineGridImageView : UIView 13 | 14 | @property (nonatomic, strong) NSArray *imageUrls; 15 | 16 | 17 | @end 18 | 19 | NS_ASSUME_NONNULL_END 20 | -------------------------------------------------------------------------------- /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/Target Support Files/Reachability/Reachability-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 "Reachability.h" 14 | 15 | FOUNDATION_EXPORT double ReachabilityVersionNumber; 16 | FOUNDATION_EXPORT const unsigned char ReachabilityVersionString[]; 17 | 18 | -------------------------------------------------------------------------------- /Pods/ReactiveObjC/ReactiveObjC/RACIndexSetSequence.h: -------------------------------------------------------------------------------- 1 | // 2 | // RACIndexSetSequence.h 3 | // ReactiveObjC 4 | // 5 | // Created by Sergey Gavrilyuk on 12/18/13. 6 | // Copyright (c) 2013 GitHub, Inc. All rights reserved. 7 | // 8 | 9 | #import "RACSequence.h" 10 | 11 | // Private class that adapts an array to the RACSequence interface. 12 | @interface RACIndexSetSequence : RACSequence 13 | 14 | + (RACSequence *)sequenceWithIndexSet:(NSIndexSet *)indexSet; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/HomeVC/HomeViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // HomeViewController.h 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/3/18. 6 | // 7 | 8 | #import 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @protocol TJPViperModuleProvider; 13 | 14 | @interface HomeViewController : UIViewController 15 | 16 | @property (nonatomic, strong) id tjpViperModuleProvider; 17 | 18 | 19 | @end 20 | 21 | NS_ASSUME_NONNULL_END 22 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/ArchitectureExtensions/VIPER-Integration/VIPER-Architecture/Router/TJPViewPushHandler.h: -------------------------------------------------------------------------------- 1 | // 2 | // TJPViewPushHandler.h 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/3/31. 6 | // 7 | 8 | #import 9 | #import "TJPViperBaseRouterHandlerProtocol.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface TJPViewPushHandler : NSObject 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | 19 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/ArchitectureExtensions/VIPER-Integration/VIPER-Demo/Demo/Cell/TJPAdCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // TJPAdCell.h 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/7/29. 6 | // 7 | 8 | #import "TJPBaseTableViewCell.h" 9 | #import "TJPAdCellModel.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface TJPAdCell : TJPBaseTableViewCell 14 | 15 | @property (nonatomic, weak) TJPAdCellModel *cellModel; 16 | 17 | 18 | @end 19 | 20 | NS_ASSUME_NONNULL_END 21 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/CoreNetworkStack/TJPIMCore/Error/TJPNETErrorHandler.h: -------------------------------------------------------------------------------- 1 | // 2 | // TJPNETErrorHandler.h 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/3/19. 6 | // 7 | 8 | #import 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | @class TJPNetworkManagerV1; 12 | @interface TJPNETErrorHandler : NSObject 13 | 14 | + (void)handleError:(NSError *)error inManager:(TJPNetworkManagerV1 *)manager; 15 | 16 | @end 17 | 18 | NS_ASSUME_NONNULL_END 19 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/ArchitectureExtensions/VIPER-Integration/VIPER-Architecture/Router/TJPViewPresentHandler.h: -------------------------------------------------------------------------------- 1 | // 2 | // TJPViewPresentHandler.h 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/4/1. 6 | // 7 | 8 | #import 9 | #import "TJPViperBaseRouterHandlerProtocol.h" 10 | 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | @interface TJPViewPresentHandler : NSObject 15 | 16 | @end 17 | 18 | NS_ASSUME_NONNULL_END 19 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/Tools/TJPCache/TJPMemoryCache.h: -------------------------------------------------------------------------------- 1 | // 2 | // TJPMemoryCache.h 3 | // 4 | // 5 | // Created by 唐佳鹏 on 2025/1/18. 6 | // 7 | 8 | #import 9 | #import "TJPCacheProtocol.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface TJPMemoryCache : NSObject 14 | @property (nonatomic, strong) NSCache *cache; 15 | @property (nonatomic, strong) NSMutableDictionary *cacheExpiryTimes; 16 | 17 | @end 18 | 19 | NS_ASSUME_NONNULL_END 20 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/Tools/MJRefresh/Custom/Footer/Auto/MJRefreshAutoNormalFooter.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshAutoNormalFooter.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/4/24. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshAutoStateFooter.h" 10 | 11 | @interface MJRefreshAutoNormalFooter : MJRefreshAutoStateFooter 12 | /** 菊花的样式 */ 13 | @property (assign, nonatomic) UIActivityIndicatorViewStyle activityIndicatorViewStyle; 14 | @end 15 | -------------------------------------------------------------------------------- /Pods/ReactiveObjC/ReactiveObjC/RACEmptySignal.h: -------------------------------------------------------------------------------- 1 | // 2 | // RACEmptySignal.h 3 | // ReactiveObjC 4 | // 5 | // Created by Justin Spahr-Summers on 2013-10-10. 6 | // Copyright (c) 2013 GitHub, Inc. All rights reserved. 7 | // 8 | 9 | #import "RACSignal.h" 10 | 11 | // A private `RACSignal` subclasses that synchronously sends completed to any 12 | // subscribers. 13 | @interface RACEmptySignal<__covariant ValueType> : RACSignal 14 | 15 | + (RACSignal *)empty; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /Pods/Target Support Files/DZNEmptyDataSet/DZNEmptyDataSet-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | #import "UIScrollView+EmptyDataSet.h" 14 | 15 | FOUNDATION_EXPORT double DZNEmptyDataSetVersionNumber; 16 | FOUNDATION_EXPORT const unsigned char DZNEmptyDataSetVersionString[]; 17 | 18 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/ArchitectureExtensions/VIPER-Integration/VIPER-Demo/Demo/Cell/TJPImageCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // TJPImageCell.h 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/7/29. 6 | // 7 | 8 | #import "TJPBaseTableViewCell.h" 9 | #import "TJPImageCellModel.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface TJPImageCell : TJPBaseTableViewCell 14 | 15 | @property (nonatomic, weak) TJPImageCellModel *cellModel; 16 | 17 | 18 | @end 19 | 20 | NS_ASSUME_NONNULL_END 21 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/ArchitectureExtensions/VIPER-Integration/VIPER-Demo/Demo/Cell/TJPNewsCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // TJPNewsCell.h 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/7/29. 6 | // 7 | 8 | #import "TJPBaseTableViewCell.h" 9 | #import "TJPNewsCellModel.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface TJPNewsCell : TJPBaseTableViewCell 14 | 15 | @property (nonatomic, weak) TJPNewsCellModel *cellModel; 16 | 17 | 18 | 19 | @end 20 | 21 | NS_ASSUME_NONNULL_END 22 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/ArchitectureExtensions/VIPER-Integration/VIPER-Demo/Demo/Cell/TJPVideoCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // TJPVideoCell.h 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/7/29. 6 | // 7 | 8 | #import "TJPBaseTableViewCell.h" 9 | #import "TJPVideoCellModel.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface TJPVideoCell : TJPBaseTableViewCell 14 | 15 | @property (nonatomic, weak) TJPVideoCellModel *cellModel; 16 | 17 | 18 | @end 19 | 20 | NS_ASSUME_NONNULL_END 21 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-iOS-Network-Stack-Dive/Pods-iOS-Network-Stack-Dive-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_iOS_Network_Stack_DiveVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char Pods_iOS_Network_Stack_DiveVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/ArchitectureExtensions/VIPER-Integration/VIPER-Demo/Demo/Router/TJPVIPERDemoRouter.h: -------------------------------------------------------------------------------- 1 | // 2 | // TJPVIPERDemoRouter.h 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/7/28. 6 | // 7 | 8 | #import "TJPViperBaseRouterImpl.h" 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @interface TJPVIPERDemoRouter : TJPViperBaseRouterImpl 13 | 14 | @property (nonatomic, strong) id viperModuleProvider; 15 | 16 | 17 | @end 18 | 19 | NS_ASSUME_NONNULL_END 20 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/ArchitectureExtensions/VIPER-Integration/VIPER-Demo/Demo/View/DetailVC/TJPNewsDetailTableViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // TJPNewsDetailTableViewController.h 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/8/29. 6 | // 7 | 8 | #import 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @interface TJPNewsDetailTableViewController : UIViewController 13 | 14 | @property (nonatomic, copy) NSString *titleStr; 15 | 16 | @end 17 | 18 | NS_ASSUME_NONNULL_END 19 | -------------------------------------------------------------------------------- /Pods/Target Support Files/YYModel/YYModel-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 "NSObject+YYModel.h" 14 | #import "YYClassInfo.h" 15 | #import "YYModel.h" 16 | 17 | FOUNDATION_EXPORT double YYModelVersionNumber; 18 | FOUNDATION_EXPORT const unsigned char YYModelVersionString[]; 19 | 20 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/ArchitectureExtensions/VIPER-Integration/VIPER-Demo/Demo/Cell/TJPProductCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // TJPProductCell.h 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/7/29. 6 | // 7 | 8 | #import "TJPBaseTableViewCell.h" 9 | #import "TJPProductCellModel.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface TJPProductCell : TJPBaseTableViewCell 14 | 15 | @property (nonatomic, weak) TJPProductCellModel *cellModel; 16 | 17 | 18 | @end 19 | 20 | NS_ASSUME_NONNULL_END 21 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/ArchitectureExtensions/AOP/TJPLoggerViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // TJPLoggerViewController.h 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/3/26. 6 | // 7 | 8 | #import 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @interface TJPLoggerViewController : UIViewController 13 | 14 | - (NSString *)processData:(NSData *)data count:(int)count; 15 | - (void)testMethod; 16 | - (NSString *)greeting:(NSString *)name; 17 | 18 | @end 19 | 20 | NS_ASSUME_NONNULL_END 21 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/ArchitectureExtensions/VIPER-Integration/VIPER-Demo/Demo/Entity/TJPAdCellModel.m: -------------------------------------------------------------------------------- 1 | // 2 | // TJPAdCellModel.m 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/7/29. 6 | // 7 | 8 | #import "TJPAdCellModel.h" 9 | 10 | @implementation TJPAdCellModel 11 | 12 | - (NSString *)cellName { 13 | return @"TJPAdCell"; 14 | } 15 | 16 | - (CGFloat)cellHeight { 17 | return 100.0f; 18 | } 19 | 20 | @end 21 | 22 | @implementation TJPAdFlipContentModel 23 | 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/Labs/NetworkFundamentals/Lab-Socket-API/StickyPacketDemo/SocketChatClient.h: -------------------------------------------------------------------------------- 1 | // 2 | // SocketChatClient.h 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/3/17. 6 | // 基于TCP的文本聊天客户端 7 | 8 | #import 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @interface SocketChatClient : NSObject 13 | 14 | - (void)connectToHost:(NSString *)host port:(uint16_t)port; 15 | - (void)sendMessage:(NSString *)message; 16 | 17 | @end 18 | 19 | NS_ASSUME_NONNULL_END 20 | -------------------------------------------------------------------------------- /Pods/ReactiveObjC/ReactiveObjC/NSArray+RACSequenceAdditions.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSArray+RACSequenceAdditions.m 3 | // ReactiveObjC 4 | // 5 | // Created by Justin Spahr-Summers on 2012-10-29. 6 | // Copyright (c) 2012 GitHub. All rights reserved. 7 | // 8 | 9 | #import "NSArray+RACSequenceAdditions.h" 10 | #import "RACArraySequence.h" 11 | 12 | @implementation NSArray (RACSequenceAdditions) 13 | 14 | - (RACSequence *)rac_sequence { 15 | return [RACArraySequence sequenceWithArray:self offset:0]; 16 | } 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /Pods/ReactiveObjC/ReactiveObjC/RACMulticastConnection+Private.h: -------------------------------------------------------------------------------- 1 | // 2 | // RACMulticastConnection+Private.h 3 | // ReactiveObjC 4 | // 5 | // Created by Josh Abernathy on 4/11/12. 6 | // Copyright (c) 2012 GitHub, Inc. All rights reserved. 7 | // 8 | 9 | #import "RACMulticastConnection.h" 10 | 11 | @class RACSubject; 12 | 13 | @interface RACMulticastConnection<__covariant ValueType> () 14 | 15 | - (instancetype)initWithSourceSignal:(RACSignal *)source subject:(RACSubject *)subject; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/ArchitectureExtensions/VIPER-Integration/CustomTableViewDemo/TJPViperBaseTableView/Loading/TJPDefaultLoadingAnimation.h: -------------------------------------------------------------------------------- 1 | // 2 | // TJPDefaultLoadingAnimation.h 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/7/24. 6 | // 7 | 8 | #import 9 | #import "TJPBaseTableViewLoadingProtocol.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface TJPDefaultLoadingAnimation : NSObject 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/Tools/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 | @interface NSBundle (MJRefresh) 12 | + (instancetype)mj_refreshBundle; 13 | + (UIImage *)mj_arrowImage; 14 | + (NSString *)mj_localizedStringForKey:(NSString *)key value:(NSString *)value; 15 | + (NSString *)mj_localizedStringForKey:(NSString *)key; 16 | @end 17 | -------------------------------------------------------------------------------- /Pods/ReactiveObjC/ReactiveObjC/NSString+RACSequenceAdditions.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSString+RACSequenceAdditions.m 3 | // ReactiveObjC 4 | // 5 | // Created by Justin Spahr-Summers on 2012-10-29. 6 | // Copyright (c) 2012 GitHub. All rights reserved. 7 | // 8 | 9 | #import "NSString+RACSequenceAdditions.h" 10 | #import "RACStringSequence.h" 11 | 12 | @implementation NSString (RACSequenceAdditions) 13 | 14 | - (RACSequence *)rac_sequence { 15 | return [RACStringSequence sequenceWithString:self offset:0]; 16 | } 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /Pods/Target Support Files/CocoaAsyncSocket/CocoaAsyncSocket-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 "GCDAsyncSocket.h" 14 | #import "GCDAsyncUdpSocket.h" 15 | 16 | FOUNDATION_EXPORT double CocoaAsyncSocketVersionNumber; 17 | FOUNDATION_EXPORT const unsigned char CocoaAsyncSocketVersionString[]; 18 | 19 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-iOS-Network-Stack-DiveTests/Pods-iOS-Network-Stack-DiveTests-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_iOS_Network_Stack_DiveTestsVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char Pods_iOS_Network_Stack_DiveTestsVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /Pods/ReactiveObjC/ReactiveObjC/NSIndexSet+RACSequenceAdditions.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSIndexSet+RACSequenceAdditions.m 3 | // ReactiveObjC 4 | // 5 | // Created by Sergey Gavrilyuk on 12/17/13. 6 | // Copyright (c) 2013 GitHub, Inc. All rights reserved. 7 | // 8 | 9 | #import "NSIndexSet+RACSequenceAdditions.h" 10 | #import "RACIndexSetSequence.h" 11 | 12 | @implementation NSIndexSet (RACSequenceAdditions) 13 | 14 | - (RACSequence *)rac_sequence { 15 | return [RACIndexSetSequence sequenceWithIndexSet:self]; 16 | } 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/CoreNetworkStack/TJPIMCore/Message/TJPTextMessage.h: -------------------------------------------------------------------------------- 1 | // 2 | // TJPTextMessage.h 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/5/13. 6 | // 7 | 8 | #import 9 | #import "TJPMessageProtocol.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface TJPTextMessage : NSObject 14 | 15 | @property (nonatomic, copy) NSString *text; 16 | 17 | - (instancetype)initWithText:(NSString *)text; 18 | 19 | 20 | @end 21 | 22 | NS_ASSUME_NONNULL_END 23 | -------------------------------------------------------------------------------- /Pods/ReactiveObjC/ReactiveObjC/RACDynamicSignal.h: -------------------------------------------------------------------------------- 1 | // 2 | // RACDynamicSignal.h 3 | // ReactiveObjC 4 | // 5 | // Created by Justin Spahr-Summers on 2013-10-10. 6 | // Copyright (c) 2013 GitHub, Inc. All rights reserved. 7 | // 8 | 9 | #import "RACSignal.h" 10 | 11 | // A private `RACSignal` subclasses that implements its subscription behavior 12 | // using a block. 13 | @interface RACDynamicSignal : RACSignal 14 | 15 | + (RACSignal *)createSignal:(RACDisposable * (^)(id subscriber))didSubscribe; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /Pods/ReactiveObjC/ReactiveObjC/RACReturnSignal.h: -------------------------------------------------------------------------------- 1 | // 2 | // RACReturnSignal.h 3 | // ReactiveObjC 4 | // 5 | // Created by Justin Spahr-Summers on 2013-10-10. 6 | // Copyright (c) 2013 GitHub, Inc. All rights reserved. 7 | // 8 | 9 | #import "RACSignal.h" 10 | 11 | // A private `RACSignal` subclasses that synchronously sends a value to any 12 | // subscribers, then completes. 13 | @interface RACReturnSignal<__covariant ValueType> : RACSignal 14 | 15 | + (RACSignal *)return:(ValueType)value; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/ArchitectureExtensions/NetworkMonitor/Metrics/TJPConnectStateMachine+TJPMetrics.h: -------------------------------------------------------------------------------- 1 | // 2 | // TJPConnectStateMachine+TJPMetrics.h 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/4/9. 6 | // 状态机增强埋点 7 | 8 | #import "TJPConnectStateMachine.h" 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @interface TJPConnectStateMachine (TJPMetrics) 13 | 14 | /// 增强版状态进入时间 15 | @property (nonatomic, assign) NSTimeInterval metrics_stateEnterTime; 16 | 17 | 18 | 19 | @end 20 | 21 | NS_ASSUME_NONNULL_END 22 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/ArchitectureExtensions/VIPER-Integration/VIPER-Demo/Demo/Cell/TJPUserDynamicCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // TJPUserDynamicCell.h 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/7/29. 6 | // 7 | 8 | #import "TJPBaseTableViewCell.h" 9 | #import "TJPUserDynamicCellModel.h" 10 | 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | @interface TJPUserDynamicCell : TJPBaseTableViewCell 15 | 16 | @property (nonatomic, weak) TJPUserDynamicCellModel *cellModel; 17 | 18 | 19 | @end 20 | 21 | NS_ASSUME_NONNULL_END 22 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/CoreNetworkStack/TJPIMCore/Protocol/TJPHeartbeatProtocol.h: -------------------------------------------------------------------------------- 1 | // 2 | // TJPHeartbeatProtocol.h 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/4/22. 6 | // 7 | 8 | #import 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @protocol TJPHeartbeatProtocol 13 | 14 | // 开始监听 15 | - (void)startMonitoring; 16 | // 停止监听 17 | - (void)stopMonitoring; 18 | // 自适应心跳 19 | - (void)adjustInterval:(NSTimeInterval)interval; 20 | 21 | @end 22 | 23 | NS_ASSUME_NONNULL_END 24 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/Labs/NetworkFundamentals/Lab-Socket-API/StickyPacketSolution/SolutionStickyPacketClient.h: -------------------------------------------------------------------------------- 1 | // 2 | // SolutionStickyPacketClient.h 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/3/18. 6 | // 7 | 8 | #import 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @interface SolutionStickyPacketClient : NSObject 13 | 14 | - (void)connectToHost:(NSString *)host port:(uint16_t)port; 15 | - (void)sendMessage:(NSString *)message; 16 | 17 | @end 18 | 19 | NS_ASSUME_NONNULL_END 20 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/Tools/MJRefresh/Custom/Header/MJRefreshNormalHeader.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshNormalHeader.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/4/24. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshStateHeader.h" 10 | 11 | @interface MJRefreshNormalHeader : MJRefreshStateHeader 12 | @property (weak, nonatomic, readonly) UIImageView *arrowView; 13 | /** 菊花的样式 */ 14 | @property (assign, nonatomic) UIActivityIndicatorViewStyle activityIndicatorViewStyle; 15 | @end 16 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/ArchitectureExtensions/AOP/LoggingAspect/TJPLogger.h: -------------------------------------------------------------------------------- 1 | // 2 | // TJPLogger.h 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/3/26. 6 | // 7 | 8 | #import 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @class TJPLogModel; 13 | @interface TJPLogger : NSObject 14 | 15 | /// 全局id用于链路追踪 16 | @property (nonatomic, copy, readonly) NSString *traceId; 17 | 18 | + (instancetype)shared; 19 | 20 | - (void)log:(TJPLogModel *)log; 21 | 22 | @end 23 | 24 | NS_ASSUME_NONNULL_END 25 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/3/17. 6 | // 7 | 8 | #import 9 | #import "AppDelegate.h" 10 | 11 | int main(int argc, char * argv[]) { 12 | NSString * appDelegateClassName; 13 | @autoreleasepool { 14 | // Setup code that might create autoreleased objects goes here. 15 | appDelegateClassName = NSStringFromClass([AppDelegate class]); 16 | } 17 | return UIApplicationMain(argc, argv, nil, appDelegateClassName); 18 | } 19 | -------------------------------------------------------------------------------- /Pods/ReactiveObjC/ReactiveObjC/NSSet+RACSequenceAdditions.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSSet+RACSequenceAdditions.m 3 | // ReactiveObjC 4 | // 5 | // Created by Justin Spahr-Summers on 2012-10-29. 6 | // Copyright (c) 2012 GitHub. All rights reserved. 7 | // 8 | 9 | #import "NSSet+RACSequenceAdditions.h" 10 | #import "NSArray+RACSequenceAdditions.h" 11 | 12 | @implementation NSSet (RACSequenceAdditions) 13 | 14 | - (RACSequence *)rac_sequence { 15 | // TODO: First class support for set sequences. 16 | return self.allObjects.rac_sequence; 17 | } 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /Pods/ReactiveObjC/ReactiveObjC/RACUnit.m: -------------------------------------------------------------------------------- 1 | // 2 | // RACUnit.m 3 | // ReactiveObjC 4 | // 5 | // Created by Josh Abernathy on 3/27/12. 6 | // Copyright (c) 2012 GitHub, Inc. All rights reserved. 7 | // 8 | 9 | #import "RACUnit.h" 10 | 11 | @implementation RACUnit 12 | 13 | #pragma mark API 14 | 15 | + (RACUnit *)defaultUnit { 16 | static dispatch_once_t onceToken; 17 | static RACUnit *defaultUnit = nil; 18 | dispatch_once(&onceToken, ^{ 19 | defaultUnit = [[self alloc] init]; 20 | }); 21 | 22 | return defaultUnit; 23 | } 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/Tools/MJRefresh/Custom/Footer/Back/MJRefreshBackNormalFooter.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshBackNormalFooter.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/4/24. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshBackStateFooter.h" 10 | 11 | @interface MJRefreshBackNormalFooter : MJRefreshBackStateFooter 12 | @property (weak, nonatomic, readonly) UIImageView *arrowView; 13 | /** 菊花的样式 */ 14 | @property (assign, nonatomic) UIActivityIndicatorViewStyle activityIndicatorViewStyle; 15 | @end 16 | -------------------------------------------------------------------------------- /Pods/ReactiveObjC/ReactiveObjC/RACSubscriptionScheduler.h: -------------------------------------------------------------------------------- 1 | // 2 | // RACSubscriptionScheduler.h 3 | // ReactiveObjC 4 | // 5 | // Created by Josh Abernathy on 11/30/12. 6 | // Copyright (c) 2012 GitHub, Inc. All rights reserved. 7 | // 8 | 9 | #import "RACScheduler.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | // A private scheduler used only for subscriptions. See the private 14 | // +[RACScheduler subscriptionScheduler] method for more information. 15 | @interface RACSubscriptionScheduler : RACScheduler 16 | 17 | @end 18 | 19 | NS_ASSUME_NONNULL_END 20 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/ArchitectureExtensions/VIPER-Integration/DIContainer/TJPViperModuleAssembly.h: -------------------------------------------------------------------------------- 1 | // 2 | // TJPViperModuleAssembly.h 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/3/31. 6 | // 7 | 8 | #import 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @protocol TJPViperModuleProvider; 13 | 14 | @interface TJPViperModuleAssembly : TyphoonAssembly 15 | 16 | @property (nonatomic, strong, readonly) TyphoonAssembly *tjpViperModuleProvider; 17 | 18 | 19 | @end 20 | 21 | NS_ASSUME_NONNULL_END 22 | -------------------------------------------------------------------------------- /Pods/ReactiveObjC/ReactiveObjC/RACUnit.h: -------------------------------------------------------------------------------- 1 | // 2 | // RACUnit.h 3 | // ReactiveObjC 4 | // 5 | // Created by Josh Abernathy on 3/27/12. 6 | // Copyright (c) 2012 GitHub, Inc. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | /// A unit represents an empty value. 14 | /// 15 | /// It should never be necessary to create a unit yourself. Just use +defaultUnit. 16 | @interface RACUnit : NSObject 17 | 18 | /// A singleton instance. 19 | + (RACUnit *)defaultUnit; 20 | 21 | @end 22 | 23 | NS_ASSUME_NONNULL_END 24 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/ArchitectureExtensions/VIPER-Integration/VIPER-Architecture/View/TJPViperBaseViewControllerProtocol.h: -------------------------------------------------------------------------------- 1 | // 2 | // TJPViperBaseViewControllerProtocol.h 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/3/31. 6 | // 7 | 8 | #import 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @protocol TJPViperBaseViewControllerProtocol 13 | 14 | @required 15 | - (UIViewController *)currentViewController; 16 | 17 | @optional 18 | - (void)showError:(NSString *)error; 19 | 20 | 21 | @end 22 | 23 | NS_ASSUME_NONNULL_END 24 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/ArchitectureExtensions/VIPER-Integration/CustomTableViewDemo/TJPViperBaseTableView/Protocol/TJPBaseTableViewLoadingProtocol.h: -------------------------------------------------------------------------------- 1 | // 2 | // TJPBaseTableViewLoadingProtocol.h 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/7/24. 6 | // 加载动画协议,可注入 Lottie 动画、骨架屏、ProgressHUD 等 7 | 8 | #import 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @protocol TJPBaseTableViewLoadingProtocol 13 | 14 | /// 返回一个 loading 状态的视图(供空态展示使用) 15 | - (UIView *)customLoadingView; 16 | 17 | @end 18 | 19 | NS_ASSUME_NONNULL_END 20 | -------------------------------------------------------------------------------- /Pods/ReactiveObjC/ReactiveObjC/NSOrderedSet+RACSequenceAdditions.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSOrderedSet+RACSequenceAdditions.m 3 | // ReactiveObjC 4 | // 5 | // Created by Justin Spahr-Summers on 2012-10-29. 6 | // Copyright (c) 2012 GitHub. All rights reserved. 7 | // 8 | 9 | #import "NSOrderedSet+RACSequenceAdditions.h" 10 | #import "NSArray+RACSequenceAdditions.h" 11 | 12 | @implementation NSOrderedSet (RACSequenceAdditions) 13 | 14 | - (RACSequence *)rac_sequence { 15 | // TODO: First class support for ordered set sequences. 16 | return self.array.rac_sequence; 17 | } 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /Pods/ReactiveObjC/ReactiveObjC/RACSubscriber+Private.h: -------------------------------------------------------------------------------- 1 | // 2 | // RACSubscriber+Private.h 3 | // ReactiveObjC 4 | // 5 | // Created by Justin Spahr-Summers on 2013-06-13. 6 | // Copyright (c) 2013 GitHub, Inc. All rights reserved. 7 | // 8 | 9 | #import "RACSubscriber.h" 10 | 11 | // A simple block-based subscriber. 12 | @interface RACSubscriber : NSObject 13 | 14 | // Creates a new subscriber with the given blocks. 15 | + (instancetype)subscriberWithNext:(void (^)(id x))next error:(void (^)(NSError *error))error completed:(void (^)(void))completed; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/Labs/NetworkFundamentals/Lab-Socket-API/StickyPacketSolution/SolutionStickyPacketServer.h: -------------------------------------------------------------------------------- 1 | // 2 | // SolutionStickyPacketServer.h 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/3/18. 6 | // 7 | 8 | #import 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @interface SolutionStickyPacketServer : NSObject 13 | 14 | @property (nonatomic, copy) void(^serverReceiveChatComplete)(NSString *message); 15 | 16 | - (void)startServerOnPort:(uint16_t)port; 17 | - (void)stopServer; 18 | 19 | @end 20 | 21 | NS_ASSUME_NONNULL_END 22 | -------------------------------------------------------------------------------- /Pods/ReactiveObjC/ReactiveObjC/RACSignalSequence.h: -------------------------------------------------------------------------------- 1 | // 2 | // RACSignalSequence.h 3 | // ReactiveObjC 4 | // 5 | // Created by Justin Spahr-Summers on 2012-11-09. 6 | // Copyright (c) 2012 GitHub, Inc. All rights reserved. 7 | // 8 | 9 | #import "RACSequence.h" 10 | 11 | @class RACSignal<__covariant ValueType>; 12 | 13 | // Private class that adapts a RACSignal to the RACSequence interface. 14 | @interface RACSignalSequence : RACSequence 15 | 16 | // Returns a sequence for enumerating over the given signal. 17 | + (RACSequence *)sequenceWithSignal:(RACSignal *)signal; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/ArchitectureExtensions/VIPER-Integration/CustomTableViewDemo/TJPViperBaseTableView/Model/TJPBaseSectionModel.m: -------------------------------------------------------------------------------- 1 | // 2 | // TJPBaseSectionModel.m 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/7/24. 6 | // 7 | 8 | #import "TJPBaseSectionModel.h" 9 | 10 | @implementation TJPBaseSectionModel 11 | @synthesize cellModels; 12 | 13 | - (instancetype)initWithCellModels:(NSArray >*)cellModels { 14 | if (self = [super init]) { 15 | self.cellModels = cellModels; 16 | } 17 | return self; 18 | } 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/ArchitectureExtensions/NetworkMonitor/TJPSessionPacketMonitor.h: -------------------------------------------------------------------------------- 1 | // 2 | // TJPSessionPacketMonitor.h 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/4/21. 6 | // 7 | 8 | #import 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @interface TJPSessionPacketMonitor : NSObject 13 | 14 | /// 记录新数据包大小(线程安全) 15 | - (void)recordPacketSize:(NSUInteger)size; 16 | 17 | /// 获取最近N个包的平均大小(线程安全) 18 | - (CGFloat)averageSizeForLastPackets:(NSUInteger)count; 19 | 20 | /// 重置监控数据 21 | - (void)reset; 22 | 23 | @end 24 | 25 | NS_ASSUME_NONNULL_END 26 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/ArchitectureExtensions/VIPER-Integration/VIPER-Demo/Demo/View/TJPLikeCommentAreaView.h: -------------------------------------------------------------------------------- 1 | // 2 | // TJPLikeCommentAreaView.h 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/7/30. 6 | // 7 | 8 | #import 9 | #import "TJPUserDynamicCellModel.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface TJPLikeCommentAreaView : UIView 14 | 15 | @property (nonatomic, strong) NSArray *likeUsers; 16 | @property (nonatomic, strong) NSArray *commentList; 17 | 18 | 19 | 20 | @end 21 | 22 | NS_ASSUME_NONNULL_END 23 | -------------------------------------------------------------------------------- /Pods/ReactiveObjC/ReactiveObjC/NSEnumerator+RACSequenceAdditions.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSEnumerator+RACSequenceAdditions.m 3 | // ReactiveObjC 4 | // 5 | // Created by Uri Baghin on 07/01/2013. 6 | // Copyright (c) 2013 GitHub, Inc. All rights reserved. 7 | // 8 | 9 | #import "NSEnumerator+RACSequenceAdditions.h" 10 | #import "RACSequence.h" 11 | 12 | @implementation NSEnumerator (RACSequenceAdditions) 13 | 14 | - (RACSequence *)rac_sequence { 15 | return [RACSequence sequenceWithHeadBlock:^{ 16 | return [self nextObject]; 17 | } tailBlock:^{ 18 | return self.rac_sequence; 19 | }]; 20 | } 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /Pods/ReactiveObjC/ReactiveObjC/RACGroupedSignal.m: -------------------------------------------------------------------------------- 1 | // 2 | // RACGroupedSignal.m 3 | // ReactiveObjC 4 | // 5 | // Created by Josh Abernathy on 5/2/12. 6 | // Copyright (c) 2012 GitHub, Inc. All rights reserved. 7 | // 8 | 9 | #import "RACGroupedSignal.h" 10 | 11 | @interface RACGroupedSignal () 12 | @property (nonatomic, copy) id key; 13 | @end 14 | 15 | @implementation RACGroupedSignal 16 | 17 | #pragma mark API 18 | 19 | + (instancetype)signalWithKey:(id)key { 20 | RACGroupedSignal *subject = [self subject]; 21 | subject.key = key; 22 | return subject; 23 | } 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/Tools/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" -------------------------------------------------------------------------------- /Pods/ReactiveObjC/ReactiveObjC/NSFileHandle+RACSupport.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSFileHandle+RACSupport.h 3 | // ReactiveObjC 4 | // 5 | // Created by Josh Abernathy on 5/10/12. 6 | // Copyright (c) 2012 GitHub. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class RACSignal<__covariant ValueType>; 12 | 13 | NS_ASSUME_NONNULL_BEGIN 14 | 15 | @interface NSFileHandle (RACSupport) 16 | 17 | // Read any available data in the background and send it. Completes when data 18 | // length is <= 0. 19 | - (RACSignal *)rac_readInBackground; 20 | 21 | @end 22 | 23 | NS_ASSUME_NONNULL_END 24 | -------------------------------------------------------------------------------- /Pods/ReactiveObjC/ReactiveObjC/RACGroupedSignal.h: -------------------------------------------------------------------------------- 1 | // 2 | // RACGroupedSignal.h 3 | // ReactiveObjC 4 | // 5 | // Created by Josh Abernathy on 5/2/12. 6 | // Copyright (c) 2012 GitHub, Inc. All rights reserved. 7 | // 8 | 9 | #import "RACSubject.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | /// A grouped signal is used by -[RACSignal groupBy:transform:]. 14 | @interface RACGroupedSignal : RACSubject 15 | 16 | /// The key shared by the group. 17 | @property (nonatomic, readonly, copy) id key; 18 | 19 | + (instancetype)signalWithKey:(id)key; 20 | 21 | @end 22 | 23 | NS_ASSUME_NONNULL_END 24 | -------------------------------------------------------------------------------- /Pods/ReactiveObjC/ReactiveObjC/UISwitch+RACSignalSupport.m: -------------------------------------------------------------------------------- 1 | // 2 | // UISwitch+RACSignalSupport.m 3 | // ReactiveObjC 4 | // 5 | // Created by Uri Baghin on 20/07/2013. 6 | // Copyright (c) 2013 GitHub, Inc. All rights reserved. 7 | // 8 | 9 | #import "UISwitch+RACSignalSupport.h" 10 | #import 11 | #import "UIControl+RACSignalSupportPrivate.h" 12 | 13 | @implementation UISwitch (RACSignalSupport) 14 | 15 | - (RACChannelTerminal *)rac_newOnChannel { 16 | return [self rac_channelForControlEvents:UIControlEventValueChanged key:@keypath(self.on) nilValue:@NO]; 17 | } 18 | 19 | @end 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/ReactiveObjC/ReactiveObjC/NSObject+RACDescription.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSObject+RACDescription.h 3 | // ReactiveObjC 4 | // 5 | // Created by Justin Spahr-Summers on 2013-05-13. 6 | // Copyright (c) 2013 GitHub, Inc. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | // A simplified description of the object, which does not invoke -description 12 | // (and thus should be much faster in many cases). 13 | // 14 | // This is for debugging purposes only, and will return a constant string 15 | // unless the RAC_DEBUG_SIGNAL_NAMES environment variable is set. 16 | NSString *RACDescription(id object); 17 | -------------------------------------------------------------------------------- /Pods/ReactiveObjC/ReactiveObjC/UIGestureRecognizer+RACSignalSupport.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIGestureRecognizer+RACSignalSupport.h 3 | // ReactiveObjC 4 | // 5 | // Created by Josh Vera on 5/5/13. 6 | // Copyright (c) 2013 GitHub. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class RACSignal<__covariant ValueType>; 12 | 13 | NS_ASSUME_NONNULL_BEGIN 14 | 15 | @interface UIGestureRecognizer (RACSignalSupport) 16 | 17 | /// Returns a signal that sends the receiver when its gesture occurs. 18 | - (RACSignal<__kindof UIGestureRecognizer *> *)rac_gestureSignal; 19 | 20 | @end 21 | 22 | NS_ASSUME_NONNULL_END 23 | -------------------------------------------------------------------------------- /Pods/Typhoon/Source/Definition/AutoInjection/TyphoonInjectedObject.m: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // TYPHOON FRAMEWORK 4 | // Copyright 2013, Typhoon Framework Contributors 5 | // All Rights Reserved. 6 | // 7 | // NOTICE: The authors permit you to use, modify, and distribute this file 8 | // in accordance with the terms of the license agreement accompanying it. 9 | // 10 | //////////////////////////////////////////////////////////////////////////////// 11 | 12 | #import "TyphoonInjectedObject.h" 13 | 14 | 15 | @implementation TyphoonInjectedObject 16 | @end 17 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleName 6 | $(PRODUCT_NAME) 7 | 8 | UIMainStoryboardFile 9 | 10 | 11 | UIApplicationMainClassName 12 | AppDelegate 13 | 14 | 15 | TyphoonInitialAssemblies 16 | 17 | TJPViperModuleAssembly 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /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/ReactiveObjC/ReactiveObjC/RACArraySequence.h: -------------------------------------------------------------------------------- 1 | // 2 | // RACArraySequence.h 3 | // ReactiveObjC 4 | // 5 | // Created by Justin Spahr-Summers on 2012-10-29. 6 | // Copyright (c) 2012 GitHub. All rights reserved. 7 | // 8 | 9 | #import "RACSequence.h" 10 | 11 | // Private class that adapts an array to the RACSequence interface. 12 | @interface RACArraySequence : RACSequence 13 | 14 | // Returns a sequence for enumerating over the given array, starting from the 15 | // given offset. The array will be copied to prevent mutation. 16 | + (RACSequence *)sequenceWithArray:(NSArray *)array offset:(NSUInteger)offset; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/ArchitectureExtensions/VIPER-Integration/VIPER-Demo/Demo/View/DetailVC/TJPNewsDetailTableViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // TJPNewsDetailTableViewController.m 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/8/29. 6 | // 7 | 8 | #import "TJPNewsDetailTableViewController.h" 9 | 10 | @interface TJPNewsDetailTableViewController () 11 | 12 | @end 13 | 14 | @implementation TJPNewsDetailTableViewController 15 | 16 | - (void)viewDidLoad { 17 | [super viewDidLoad]; 18 | 19 | self.view.backgroundColor = [UIColor whiteColor]; 20 | self.title = self.titleStr; 21 | } 22 | 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/Tools/TJPUITools/TJPToast.h: -------------------------------------------------------------------------------- 1 | // 2 | // TJPToast.h 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/3/31. 6 | // 7 | 8 | #import 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | 13 | @interface TJPToastLabel : UILabel 14 | - (void)setMessageText:(NSString *)text; 15 | @end 16 | 17 | 18 | @interface TJPToast : NSObject 19 | 20 | + (instancetype)shareInstance; 21 | + (void)show:(NSString *)title duration:(CGFloat)duration; 22 | + (void)show:(NSString *)title duration:(CGFloat)duration controller:(UIViewController *)controller; 23 | 24 | 25 | @end 26 | 27 | NS_ASSUME_NONNULL_END 28 | -------------------------------------------------------------------------------- /Pods/ReactiveObjC/ReactiveObjC/RACTupleSequence.h: -------------------------------------------------------------------------------- 1 | // 2 | // RACTupleSequence.h 3 | // ReactiveObjC 4 | // 5 | // Created by Justin Spahr-Summers on 2013-05-01. 6 | // Copyright (c) 2013 GitHub, Inc. All rights reserved. 7 | // 8 | 9 | #import "RACSequence.h" 10 | 11 | // Private class that adapts a RACTuple to the RACSequence interface. 12 | @interface RACTupleSequence : RACSequence 13 | 14 | // Returns a sequence for enumerating over the given backing array (from a 15 | // RACTuple), starting from the given offset. 16 | + (RACSequence *)sequenceWithTupleBackingArray:(NSArray *)backingArray offset:(NSUInteger)offset; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /Pods/Typhoon/Source/ios/Storyboard/TyphoonStoryboardResolver.h: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // TYPHOON FRAMEWORK 4 | // Copyright 2013, Typhoon Framework Contributors 5 | // All Rights Reserved. 6 | // 7 | // NOTICE: The authors permit you to use, modify, and distribute this file 8 | // in accordance with the terms of the license agreement accompanying it. 9 | // 10 | //////////////////////////////////////////////////////////////////////////////// 11 | 12 | 13 | #import 14 | 15 | 16 | @interface TyphoonStoryboardResolver : NSObject 17 | @end 18 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/ArchitectureExtensions/AOP/LoggingAspect/TJPAspectCore.h: -------------------------------------------------------------------------------- 1 | // 2 | // TJPAspectCore.h 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/3/26. 6 | // 核心类 7 | 8 | #import 9 | #import "TJPLogAspectInterface.h" 10 | 11 | @class TJPLogModel; 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | @interface TJPAspectCore : NSObject 15 | 16 | /// 注册日志切面 17 | + (void)registerLogWithConfig:(TJPLogConfig)config trigger:(TJPLogTriggerPoint)trigger handler:(void(^)(TJPLogModel *log))handler; 18 | 19 | /// 移除日志切面 20 | + (void)removeLogForClass:(Class)cls; 21 | @end 22 | 23 | NS_ASSUME_NONNULL_END 24 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/ArchitectureExtensions/VIPER-Integration/DIContainer/TJPViperModuleProvider.h: -------------------------------------------------------------------------------- 1 | // 2 | // TJPViperModuleProvider.h 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/3/31. 6 | // 7 | 8 | #import 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @protocol TJPViperModuleProvider 13 | 14 | 15 | 16 | /// VIPER示例VC 17 | - (UIViewController *)viperDemoViewController; 18 | 19 | 20 | - (UIViewController *)viperDemoDetailViewController; 21 | 22 | 23 | - (UIViewController *)viperNewsDetailViewControllerWithTitle:(id)title; 24 | 25 | 26 | @end 27 | 28 | NS_ASSUME_NONNULL_END 29 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/Tools/MJRefresh/Custom/Header/MJRefreshGifHeader.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshGifHeader.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/4/24. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshStateHeader.h" 10 | 11 | @interface MJRefreshGifHeader : MJRefreshStateHeader 12 | @property (weak, nonatomic, readonly) UIImageView *gifView; 13 | 14 | /** 设置state状态下的动画图片images 动画持续时间duration*/ 15 | - (void)setImages:(NSArray *)images duration:(NSTimeInterval)duration forState:(MJRefreshState)state; 16 | - (void)setImages:(NSArray *)images forState:(MJRefreshState)state; 17 | @end 18 | -------------------------------------------------------------------------------- /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/ReactiveObjC/ReactiveObjC/RACStringSequence.h: -------------------------------------------------------------------------------- 1 | // 2 | // RACStringSequence.h 3 | // ReactiveObjC 4 | // 5 | // Created by Justin Spahr-Summers on 2012-10-29. 6 | // Copyright (c) 2012 GitHub. All rights reserved. 7 | // 8 | 9 | #import "RACSequence.h" 10 | 11 | // Private class that adapts a string to the RACSequence interface. 12 | @interface RACStringSequence : RACSequence 13 | 14 | // Returns a sequence for enumerating over the given string, starting from the 15 | // given character offset. The string will be copied to prevent mutation. 16 | + (RACSequence *)sequenceWithString:(NSString *)string offset:(NSUInteger)offset; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /Pods/Typhoon/Source/ios/TyphooniOS.h: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // TYPHOON FRAMEWORK 4 | // Copyright 2013, Typhoon Framework Contributors 5 | // All Rights Reserved. 6 | // 7 | // NOTICE: The authors permit you to use, modify, and distribute this file 8 | // in accordance with the terms of the license agreement accompanying it. 9 | // 10 | //////////////////////////////////////////////////////////////////////////////// 11 | 12 | 13 | #import "TyphoonStoryboard.h" 14 | #import "TyphoonNibLoader.h" 15 | #import "TyphoonBundledImageTypeConverter.h" 16 | #import "TyphoonLoadedView.h" 17 | -------------------------------------------------------------------------------- /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/Typhoon/Source/Definition/Internal/TyphoonBlockDefinition+InstanceBuilder.h: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // TYPHOON FRAMEWORK 4 | // Copyright 2016, Typhoon Framework Contributors 5 | // All Rights Reserved. 6 | // 7 | // NOTICE: The authors permit you to use, modify, and distribute this file 8 | // in accordance with the terms of the license agreement accompanying it. 9 | // 10 | //////////////////////////////////////////////////////////////////////////////// 11 | 12 | 13 | #import "TyphoonBlockDefinition.h" 14 | 15 | @interface TyphoonBlockDefinition (InstanceBuilder) 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /Pods/ReactiveObjC/ReactiveObjC/UISlider+RACSignalSupport.m: -------------------------------------------------------------------------------- 1 | // 2 | // UISlider+RACSignalSupport.m 3 | // ReactiveObjC 4 | // 5 | // Created by Uri Baghin on 20/07/2013. 6 | // Copyright (c) 2013 GitHub, Inc. All rights reserved. 7 | // 8 | 9 | #import "UISlider+RACSignalSupport.h" 10 | #import 11 | #import "UIControl+RACSignalSupportPrivate.h" 12 | 13 | @implementation UISlider (RACSignalSupport) 14 | 15 | - (RACChannelTerminal *)rac_newValueChannelWithNilValue:(NSNumber *)nilValue { 16 | return [self rac_channelForControlEvents:UIControlEventValueChanged key:@keypath(self.value) nilValue:nilValue]; 17 | } 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /Pods/Typhoon/Source/Factory/Internal/TyphoonCircularDependencyTerminator.h: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // TYPHOON FRAMEWORK 4 | // Copyright 2013, Typhoon Framework Contributors 5 | // All Rights Reserved. 6 | // 7 | // NOTICE: The authors permit you to use, modify, and distribute this file 8 | // in accordance with the terms of the license agreement accompanying it. 9 | // 10 | //////////////////////////////////////////////////////////////////////////////// 11 | 12 | 13 | 14 | #import 15 | 16 | 17 | @interface TyphoonCircularDependencyTerminator : NSObject 18 | @end 19 | -------------------------------------------------------------------------------- /Pods/ReactiveObjC/ReactiveObjC/UIStepper+RACSignalSupport.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIStepper+RACSignalSupport.m 3 | // ReactiveObjC 4 | // 5 | // Created by Uri Baghin on 20/07/2013. 6 | // Copyright (c) 2013 GitHub, Inc. All rights reserved. 7 | // 8 | 9 | #import "UIStepper+RACSignalSupport.h" 10 | #import 11 | #import "UIControl+RACSignalSupportPrivate.h" 12 | 13 | @implementation UIStepper (RACSignalSupport) 14 | 15 | - (RACChannelTerminal *)rac_newValueChannelWithNilValue:(NSNumber *)nilValue { 16 | return [self rac_channelForControlEvents:UIControlEventValueChanged key:@keypath(self.value) nilValue:nilValue]; 17 | } 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /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/Target Support Files/Pods-iOS-Network-Stack-Dive/Pods-iOS-Network-Stack-Dive-frameworks-Debug-output-files.xcfilelist: -------------------------------------------------------------------------------- 1 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CocoaAsyncSocket.framework 2 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/DZNEmptyDataSet.framework 3 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Masonry.framework 4 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Reachability.framework 5 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ReactiveObjC.framework 6 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SDWebImage.framework 7 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Typhoon.framework 8 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/YYModel.framework -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-iOS-Network-Stack-Dive/Pods-iOS-Network-Stack-Dive-frameworks-Release-output-files.xcfilelist: -------------------------------------------------------------------------------- 1 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CocoaAsyncSocket.framework 2 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/DZNEmptyDataSet.framework 3 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Masonry.framework 4 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Reachability.framework 5 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ReactiveObjC.framework 6 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SDWebImage.framework 7 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Typhoon.framework 8 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/YYModel.framework -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/Tools/MJRefresh/Custom/Footer/Auto/MJRefreshAutoGifFooter.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshAutoGifFooter.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/4/24. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshAutoStateFooter.h" 10 | 11 | @interface MJRefreshAutoGifFooter : MJRefreshAutoStateFooter 12 | @property (weak, nonatomic, readonly) UIImageView *gifView; 13 | 14 | /** 设置state状态下的动画图片images 动画持续时间duration*/ 15 | - (void)setImages:(NSArray *)images duration:(NSTimeInterval)duration forState:(MJRefreshState)state; 16 | - (void)setImages:(NSArray *)images forState:(MJRefreshState)state; 17 | @end 18 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/Tools/MJRefresh/Custom/Footer/Back/MJRefreshBackGifFooter.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshBackGifFooter.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/4/24. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshBackStateFooter.h" 10 | 11 | @interface MJRefreshBackGifFooter : MJRefreshBackStateFooter 12 | @property (weak, nonatomic, readonly) UIImageView *gifView; 13 | 14 | /** 设置state状态下的动画图片images 动画持续时间duration*/ 15 | - (void)setImages:(NSArray *)images duration:(NSTimeInterval)duration forState:(MJRefreshState)state; 16 | - (void)setImages:(NSArray *)images forState:(MJRefreshState)state; 17 | @end 18 | -------------------------------------------------------------------------------- /Pods/ReactiveObjC/ReactiveObjC/RACScopedDisposable.h: -------------------------------------------------------------------------------- 1 | // 2 | // RACScopedDisposable.h 3 | // ReactiveObjC 4 | // 5 | // Created by Josh Abernathy on 3/28/12. 6 | // Copyright (c) 2012 GitHub, Inc. All rights reserved. 7 | // 8 | 9 | #import "RACDisposable.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | /// A disposable that calls its own -dispose when it is dealloc'd. 14 | @interface RACScopedDisposable : RACDisposable 15 | 16 | /// Creates a new scoped disposable that will also dispose of the given 17 | /// disposable when it is dealloc'd. 18 | + (instancetype)scopedDisposableWithDisposable:(RACDisposable *)disposable; 19 | 20 | @end 21 | 22 | NS_ASSUME_NONNULL_END 23 | -------------------------------------------------------------------------------- /Pods/Typhoon/Source/Definition/Injections/TyphoonInjectionByComponentFactory.h: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // TYPHOON FRAMEWORK 4 | // Copyright 2013, Typhoon Framework Contributors 5 | // All Rights Reserved. 6 | // 7 | // NOTICE: The authors permit you to use, modify, and distribute this file 8 | // in accordance with the terms of the license agreement accompanying it. 9 | // 10 | //////////////////////////////////////////////////////////////////////////////// 11 | 12 | #import "TyphoonAbstractInjection.h" 13 | 14 | @interface TyphoonInjectionByComponentFactory : TyphoonAbstractInjection 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Pods/ReactiveObjC/ReactiveObjC/NSNotificationCenter+RACSupport.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSNotificationCenter+RACSupport.h 3 | // ReactiveObjC 4 | // 5 | // Created by Josh Abernathy on 5/10/12. 6 | // Copyright (c) 2012 GitHub. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class RACSignal<__covariant ValueType>; 12 | 13 | NS_ASSUME_NONNULL_BEGIN 14 | 15 | @interface NSNotificationCenter (RACSupport) 16 | 17 | // Sends the NSNotification every time the notification is posted. 18 | - (RACSignal *)rac_addObserverForName:(nullable NSString *)notificationName object:(nullable id)object; 19 | 20 | @end 21 | 22 | NS_ASSUME_NONNULL_END 23 | -------------------------------------------------------------------------------- /Pods/ReactiveObjC/ReactiveObjC/UIDatePicker+RACSignalSupport.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIDatePicker+RACSignalSupport.m 3 | // ReactiveObjC 4 | // 5 | // Created by Uri Baghin on 20/07/2013. 6 | // Copyright (c) 2013 GitHub, Inc. All rights reserved. 7 | // 8 | 9 | #import "UIDatePicker+RACSignalSupport.h" 10 | #import 11 | #import "UIControl+RACSignalSupportPrivate.h" 12 | 13 | @implementation UIDatePicker (RACSignalSupport) 14 | 15 | - (RACChannelTerminal *)rac_newDateChannelWithNilValue:(NSDate *)nilValue { 16 | return [self rac_channelForControlEvents:UIControlEventValueChanged key:@keypath(self.date) nilValue:nilValue]; 17 | } 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-iOS-Network-Stack-Dive/Pods-iOS-Network-Stack-Dive-frameworks-Debug-input-files.xcfilelist: -------------------------------------------------------------------------------- 1 | ${PODS_ROOT}/Target Support Files/Pods-iOS-Network-Stack-Dive/Pods-iOS-Network-Stack-Dive-frameworks.sh 2 | ${BUILT_PRODUCTS_DIR}/CocoaAsyncSocket/CocoaAsyncSocket.framework 3 | ${BUILT_PRODUCTS_DIR}/DZNEmptyDataSet/DZNEmptyDataSet.framework 4 | ${BUILT_PRODUCTS_DIR}/Masonry/Masonry.framework 5 | ${BUILT_PRODUCTS_DIR}/Reachability/Reachability.framework 6 | ${BUILT_PRODUCTS_DIR}/ReactiveObjC/ReactiveObjC.framework 7 | ${BUILT_PRODUCTS_DIR}/SDWebImage/SDWebImage.framework 8 | ${BUILT_PRODUCTS_DIR}/Typhoon/Typhoon.framework 9 | ${BUILT_PRODUCTS_DIR}/YYModel/YYModel.framework -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-iOS-Network-Stack-Dive/Pods-iOS-Network-Stack-Dive-frameworks-Release-input-files.xcfilelist: -------------------------------------------------------------------------------- 1 | ${PODS_ROOT}/Target Support Files/Pods-iOS-Network-Stack-Dive/Pods-iOS-Network-Stack-Dive-frameworks.sh 2 | ${BUILT_PRODUCTS_DIR}/CocoaAsyncSocket/CocoaAsyncSocket.framework 3 | ${BUILT_PRODUCTS_DIR}/DZNEmptyDataSet/DZNEmptyDataSet.framework 4 | ${BUILT_PRODUCTS_DIR}/Masonry/Masonry.framework 5 | ${BUILT_PRODUCTS_DIR}/Reachability/Reachability.framework 6 | ${BUILT_PRODUCTS_DIR}/ReactiveObjC/ReactiveObjC.framework 7 | ${BUILT_PRODUCTS_DIR}/SDWebImage/SDWebImage.framework 8 | ${BUILT_PRODUCTS_DIR}/Typhoon/Typhoon.framework 9 | ${BUILT_PRODUCTS_DIR}/YYModel/YYModel.framework -------------------------------------------------------------------------------- /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/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 | #pragma mark - RAM 16 | + (NSUInteger)totalMemory; 17 | + (NSUInteger)freeMemory; 18 | 19 | #pragma mark - Screen 20 | + (double)screenScale; 21 | + (double)screenEDR; 22 | + (double)screenMaxEDR; 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/CoreNetworkStack/TJPIMCore/Protocol/TJPMessageProtocol.h: -------------------------------------------------------------------------------- 1 | // 2 | // TJPMessageProtocol.h 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/5/13. 6 | // 消息接口 7 | 8 | #import 9 | #import "TJPCoreTypes.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @protocol TJPMessageProtocol 14 | 15 | @required 16 | // 内容类型 17 | @property (nonatomic, readonly) TJPContentType contentType; 18 | // 消息类型 如普通消息/ACK消息/控制消息 19 | @property (nonatomic, readonly) TJPMessageType messageType; 20 | 21 | /// 消息类型 22 | + (uint16_t)messageTag; 23 | /// TLV数据格式 24 | - (NSData *)tlvData; 25 | 26 | @end 27 | 28 | NS_ASSUME_NONNULL_END 29 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/Labs/NetworkFundamentals/Lab-Socket-API/StickyPacketDemo/SocketChatServer.h: -------------------------------------------------------------------------------- 1 | // 2 | // SocketChatServer.h 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/3/17. 6 | // 基于TCP的文本聊天服务器 7 | 8 | #import 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @protocol SocketChatServerDelegate 13 | 14 | - (void)didReceiveMessageFromClient:(NSString *)message; 15 | 16 | @end 17 | 18 | @interface SocketChatServer : NSObject 19 | 20 | @property (nonatomic, weak) id delegate; 21 | 22 | - (void)startServerOnPort:(uint16_t)port; 23 | - (void)stopServer; 24 | @end 25 | 26 | NS_ASSUME_NONNULL_END 27 | -------------------------------------------------------------------------------- /Pods/Typhoon/Source/Definition/AutoInjection/TyphoonInjectedObject.h: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // TYPHOON FRAMEWORK 4 | // Copyright 2013, Typhoon Framework Contributors 5 | // All Rights Reserved. 6 | // 7 | // NOTICE: The authors permit you to use, modify, and distribute this file 8 | // in accordance with the terms of the license agreement accompanying it. 9 | // 10 | //////////////////////////////////////////////////////////////////////////////// 11 | 12 | #import 13 | 14 | 15 | @interface TyphoonInjectedObject : NSObject 16 | @end 17 | 18 | @protocol TyphoonInjectedProtocol 19 | @end 20 | -------------------------------------------------------------------------------- /Pods/Typhoon/Source/ios/Storyboard/Internal/UIView+TyphoonDefinitionKey.h: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // TYPHOON FRAMEWORK 4 | // Copyright 2015, Typhoon Framework Contributors 5 | // All Rights Reserved. 6 | // 7 | // NOTICE: The authors permit you to use, modify, and distribute this file 8 | // in accordance with the terms of the license agreement accompanying it. 9 | // 10 | //////////////////////////////////////////////////////////////////////////////// 11 | 12 | #import 13 | 14 | @interface UIView (TyphoonDefinitionKey) 15 | 16 | @property(nonatomic, strong) NSString *typhoonKey; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /Pods/Typhoon/Source/ios/Storyboard/UIResponder+TyphoonOutletTransfer.h: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // TYPHOON FRAMEWORK 4 | // Copyright 2016, Typhoon Framework Contributors 5 | // All Rights Reserved. 6 | // 7 | // NOTICE: The authors permit you to use, modify, and distribute this file 8 | // in accordance with the terms of the license agreement accompanying it. 9 | // 10 | //////////////////////////////////////////////////////////////////////////////// 11 | 12 | #import 13 | 14 | @interface UIResponder (TyphoonOutletTransfer) 15 | 16 | - (void)transferConstraintsFromView:(UIView *)view; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /Pods/Typhoon/Source/Factory/Internal/TyphoonCircularDependencyTerminator.m: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // TYPHOON FRAMEWORK 4 | // Copyright 2013, Typhoon Framework Contributors 5 | // All Rights Reserved. 6 | // 7 | // NOTICE: The authors permit you to use, modify, and distribute this file 8 | // in accordance with the terms of the license agreement accompanying it. 9 | // 10 | //////////////////////////////////////////////////////////////////////////////// 11 | 12 | 13 | 14 | #import "TyphoonCircularDependencyTerminator.h" 15 | 16 | 17 | @implementation TyphoonCircularDependencyTerminator 18 | { 19 | 20 | } 21 | @end 22 | -------------------------------------------------------------------------------- /Pods/Typhoon/Source/Factory/Pool/TyphoonWeakComponentsPool.h: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // TYPHOON FRAMEWORK 4 | // Copyright 2013, Typhoon Framework Contributors 5 | // All Rights Reserved. 6 | // 7 | // NOTICE: The authors permit you to use, modify, and distribute this file 8 | // in accordance with the terms of the license agreement accompanying it. 9 | // 10 | //////////////////////////////////////////////////////////////////////////////// 11 | 12 | #import 13 | #import "TyphoonComponentsPool.h" 14 | 15 | @interface TyphoonWeakComponentsPool : NSObject 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /Pods/Typhoon/Source/Utils/TyphoonUtils.h: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // TYPHOON FRAMEWORK 4 | // Copyright 2013, Typhoon Framework Contributors 5 | // All Rights Reserved. 6 | // 7 | // NOTICE: The authors permit you to use, modify, and distribute this file 8 | // in accordance with the terms of the license agreement accompanying it. 9 | // 10 | //////////////////////////////////////////////////////////////////////////////// 11 | 12 | 13 | #define CStringEquals(stringA, stringB) (stringA == stringB || strcmp(stringA, stringB) == 0) 14 | 15 | #define TyphoonHashByAppendingInteger(hash, integer) ((hash << 5) - hash + integer) 16 | -------------------------------------------------------------------------------- /Pods/ReactiveObjC/ReactiveObjC/UIControl+RACSignalSupport.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIControl+RACSignalSupport.h 3 | // ReactiveObjC 4 | // 5 | // Created by Josh Abernathy on 4/17/12. 6 | // Copyright (c) 2012 GitHub, Inc. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class RACSignal<__covariant ValueType>; 12 | 13 | NS_ASSUME_NONNULL_BEGIN 14 | 15 | @interface UIControl (RACSignalSupport) 16 | 17 | /// Creates and returns a signal that sends the sender of the control event 18 | /// whenever one of the control events is triggered. 19 | - (RACSignal<__kindof UIControl *> *)rac_signalForControlEvents:(UIControlEvents)controlEvents; 20 | 21 | @end 22 | 23 | NS_ASSUME_NONNULL_END 24 | -------------------------------------------------------------------------------- /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/Typhoon/Source/Utils/NSObject+PropertyInjection.h: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // TYPHOON FRAMEWORK 4 | // Copyright 2013, Typhoon Framework Contributors 5 | // All Rights Reserved. 6 | // 7 | // NOTICE: The authors permit you to use, modify, and distribute this file 8 | // in accordance with the terms of the license agreement accompanying it. 9 | // 10 | //////////////////////////////////////////////////////////////////////////////// 11 | 12 | #import 13 | 14 | @interface NSObject (PropertyInjection) 15 | 16 | - (void)typhoon_injectValue:(id)value forPropertyName:(NSString *)propertyName; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /Pods/Typhoon/Source/ios/Storyboard/TyphoonStoryboardProvider.h: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // TYPHOON FRAMEWORK 4 | // Copyright 2015, Typhoon Framework Contributors 5 | // All Rights Reserved. 6 | // 7 | // NOTICE: The authors permit you to use, modify, and distribute this file 8 | // in accordance with the terms of the license agreement accompanying it. 9 | // 10 | //////////////////////////////////////////////////////////////////////////////// 11 | 12 | #import 13 | 14 | @interface TyphoonStoryboardProvider : NSObject 15 | 16 | - (NSArray *)collectStoryboardsFromBundle:(NSBundle *)bundle; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /Pods/ReactiveObjC/ReactiveObjC/RACQueueScheduler.h: -------------------------------------------------------------------------------- 1 | // 2 | // RACQueueScheduler.h 3 | // ReactiveObjC 4 | // 5 | // Created by Josh Abernathy on 11/30/12. 6 | // Copyright (c) 2012 GitHub, Inc. All rights reserved. 7 | // 8 | 9 | #import "RACScheduler.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | /// An abstract scheduler which asynchronously enqueues all its work to a Grand 14 | /// Central Dispatch queue. 15 | /// 16 | /// Because RACQueueScheduler is abstract, it should not be instantiated 17 | /// directly. Create a subclass using the `RACQueueScheduler+Subclass.h` 18 | /// interface and use that instead. 19 | @interface RACQueueScheduler : RACScheduler 20 | @end 21 | 22 | NS_ASSUME_NONNULL_END 23 | -------------------------------------------------------------------------------- /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 | os_log_t sd_getDefaultLog(void) { 12 | static dispatch_once_t onceToken; 13 | static os_log_t log; 14 | dispatch_once(&onceToken, ^{ 15 | log = os_log_create("com.hackemist.SDWebImage", "Default"); 16 | }); 17 | return log; 18 | } 19 | 20 | void sd_executeCleanupBlock (__strong sd_cleanupBlock_t *block) { 21 | (*block)(); 22 | } 23 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/ArchitectureExtensions/AOP/LoggingAspect/TJPLogModel.h: -------------------------------------------------------------------------------- 1 | // 2 | // TJPLogModel.h 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/3/26. 6 | // 日志内容模型 7 | 8 | #import 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @interface TJPLogModel : NSObject 13 | 14 | /// 类名 15 | @property (nonatomic, copy) NSString *clsName; 16 | /// 方法名 17 | @property (nonatomic, copy) NSString *methodName; 18 | /// 参数 19 | @property (nonatomic, strong) NSArray *arguments; 20 | /// 执行时间 21 | @property (nonatomic, assign) NSTimeInterval executeTime; 22 | /// 异常 23 | @property (nonatomic, strong) NSException *exception; 24 | 25 | @end 26 | 27 | NS_ASSUME_NONNULL_END 28 | -------------------------------------------------------------------------------- /Pods/Typhoon/Source/TypeConversion/Converters/TyphoonNSURLTypeConverter.h: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // TYPHOON FRAMEWORK 4 | // Copyright 2013, Typhoon Framework Contributors 5 | // All Rights Reserved. 6 | // 7 | // NOTICE: The authors permit you to use, modify, and distribute this file 8 | // in accordance with the terms of the license agreement accompanying it. 9 | // 10 | //////////////////////////////////////////////////////////////////////////////// 11 | 12 | 13 | 14 | #import 15 | #import "TyphoonTypeConverter.h" 16 | 17 | 18 | @interface TyphoonNSURLTypeConverter : NSObject 19 | @end 20 | -------------------------------------------------------------------------------- /Pods/YYModel/YYModel/YYModel.h: -------------------------------------------------------------------------------- 1 | // 2 | // YYModel.h 3 | // YYModel 4 | // 5 | // Created by ibireme on 15/5/10. 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 | #if __has_include() 15 | FOUNDATION_EXPORT double YYModelVersionNumber; 16 | FOUNDATION_EXPORT const unsigned char YYModelVersionString[]; 17 | #import 18 | #import 19 | #else 20 | #import "NSObject+YYModel.h" 21 | #import "YYClassInfo.h" 22 | #endif 23 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/CoreNetworkStack/TJPIMCore/Bulider/TJPMessageBuilder.h: -------------------------------------------------------------------------------- 1 | // 2 | // TJPMessageBuilder.h 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/5/14. 6 | // 消息组装类 7 | 8 | #import 9 | #import "TJPCoreTypes.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface TJPMessageBuilder : NSObject 14 | 15 | /// 组装数据包 16 | + (NSData *)buildPacketWithMessageType:(TJPMessageType)msgType sequence:(uint32_t)sequence payload:(NSData *)payload encryptType:(TJPEncryptType)encryptType compressType:(TJPCompressType)compressType sessionID:(NSString *)sessionID; 17 | 18 | + (uint16_t)sessionIDFromUUID:(NSString *)uuidString; 19 | @end 20 | 21 | NS_ASSUME_NONNULL_END 22 | -------------------------------------------------------------------------------- /Pods/Typhoon/Source/Factory/Internal/TyphoonAssemblyBuilder+PlistProcessor.h: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // TYPHOON FRAMEWORK 4 | // Copyright 2013, Typhoon Framework Contributors 5 | // All Rights Reserved. 6 | // 7 | // NOTICE: The authors permit you to use, modify, and distribute this file 8 | // in accordance with the terms of the license agreement accompanying it. 9 | // 10 | //////////////////////////////////////////////////////////////////////////////// 11 | 12 | #import "TyphoonAssemblyBuilder.h" 13 | 14 | @interface TyphoonAssemblyBuilder (PlistProcessor) 15 | 16 | + (id)buildAssembliesFromPlistInBundle:(NSBundle *)bundle; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /Pods/Typhoon/Source/TypeConversion/Converters/TyphoonNSNumberTypeConverter.h: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // TYPHOON FRAMEWORK 4 | // Copyright 2013, Typhoon Framework Contributors 5 | // All Rights Reserved. 6 | // 7 | // NOTICE: The authors permit you to use, modify, and distribute this file 8 | // in accordance with the terms of the license agreement accompanying it. 9 | // 10 | //////////////////////////////////////////////////////////////////////////////// 11 | 12 | 13 | #import 14 | #import "TyphoonTypeConverter.h" 15 | 16 | 17 | @interface TyphoonNSNumberTypeConverter : NSObject 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /Pods/Typhoon/Source/ios/TypeConversion/Converters/TyphoonBundledImageTypeConverter.h: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // TYPHOON FRAMEWORK 4 | // Copyright 2013, Typhoon Framework Contributors 5 | // All Rights Reserved. 6 | // 7 | // NOTICE: The authors permit you to use, modify, and distribute this file 8 | // in accordance with the terms of the license agreement accompanying it. 9 | // 10 | //////////////////////////////////////////////////////////////////////////////// 11 | 12 | #import 13 | #import "TyphoonTypeConverter.h" 14 | 15 | 16 | @interface TyphoonBundledImageTypeConverter : NSObject 17 | @end 18 | -------------------------------------------------------------------------------- /Pods/Typhoon/Source/Definition/Injections/TyphoonInjectionByType.h: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // TYPHOON FRAMEWORK 4 | // Copyright 2013, Typhoon Framework Contributors 5 | // All Rights Reserved. 6 | // 7 | // NOTICE: The authors permit you to use, modify, and distribute this file 8 | // in accordance with the terms of the license agreement accompanying it. 9 | // 10 | //////////////////////////////////////////////////////////////////////////////// 11 | 12 | 13 | #import "TyphoonAbstractInjection.h" 14 | 15 | @interface TyphoonInjectionByType : TyphoonAbstractInjection 16 | 17 | @property (nonatomic, strong) id explicitClassOrProtocol; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /Pods/Typhoon/Source/Definition/Injections/TyphoonPropertyInjection.h: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // TYPHOON FRAMEWORK 4 | // Copyright 2013, Typhoon Framework Contributors 5 | // All Rights Reserved. 6 | // 7 | // NOTICE: The authors permit you to use, modify, and distribute this file 8 | // in accordance with the terms of the license agreement accompanying it. 9 | // 10 | //////////////////////////////////////////////////////////////////////////////// 11 | 12 | #import "TyphoonInjection.h" 13 | 14 | @protocol TyphoonPropertyInjection 15 | 16 | - (void)setPropertyName:(NSString *)name; 17 | - (NSString *)propertyName; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /Pods/Typhoon/Source/Factory/Internal/NSMethodSignature+TCFUnwrapValues.h: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // TYPHOON FRAMEWORK 4 | // Copyright 2013, Typhoon Framework Contributors 5 | // All Rights Reserved. 6 | // 7 | // NOTICE: The authors permit you to use, modify, and distribute this file 8 | // in accordance with the terms of the license agreement accompanying it. 9 | // 10 | //////////////////////////////////////////////////////////////////////////////// 11 | 12 | #import 13 | 14 | @interface NSMethodSignature (TCFUnwrapValues) 15 | 16 | - (BOOL)shouldUnwrapValue:(id)value forArgumentAtIndex:(NSUInteger)index; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/Tools/MJRefresh/Custom/Footer/Back/MJRefreshBackStateFooter.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshBackStateFooter.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/6/13. 6 | // Copyright © 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshBackFooter.h" 10 | 11 | @interface MJRefreshBackStateFooter : MJRefreshBackFooter 12 | /** 文字距离圈圈、箭头的距离 */ 13 | @property (assign, nonatomic) CGFloat labelLeftInset; 14 | /** 显示刷新状态的label */ 15 | @property (weak, nonatomic, readonly) UILabel *stateLabel; 16 | /** 设置state状态下的文字 */ 17 | - (void)setTitle:(NSString *)title forState:(MJRefreshState)state; 18 | 19 | /** 获取state状态下的title */ 20 | - (NSString *)titleForState:(MJRefreshState)state; 21 | @end 22 | -------------------------------------------------------------------------------- /Pods/ReactiveObjC/ReactiveObjC/UISegmentedControl+RACSignalSupport.m: -------------------------------------------------------------------------------- 1 | // 2 | // UISegmentedControl+RACSignalSupport.m 3 | // ReactiveObjC 4 | // 5 | // Created by Uri Baghin on 20/07/2013. 6 | // Copyright (c) 2013 GitHub, Inc. All rights reserved. 7 | // 8 | 9 | #import "UISegmentedControl+RACSignalSupport.h" 10 | #import 11 | #import "UIControl+RACSignalSupportPrivate.h" 12 | 13 | @implementation UISegmentedControl (RACSignalSupport) 14 | 15 | - (RACChannelTerminal *)rac_newSelectedSegmentIndexChannelWithNilValue:(NSNumber *)nilValue { 16 | return [self rac_channelForControlEvents:UIControlEventValueChanged key:@keypath(self.selectedSegmentIndex) nilValue:nilValue]; 17 | } 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /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/Typhoon/Source/Configuration/ConfigPostProcessor/TyphoonConfiguration/TyphoonJsonStyleConfiguration.h: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // TYPHOON FRAMEWORK 4 | // Copyright 2013, Typhoon Framework Contributors 5 | // All Rights Reserved. 6 | // 7 | // NOTICE: The authors permit you to use, modify, and distribute this file 8 | // in accordance with the terms of the license agreement accompanying it. 9 | // 10 | //////////////////////////////////////////////////////////////////////////////// 11 | 12 | #import 13 | #import "TyphoonConfiguration.h" 14 | 15 | @interface TyphoonJsonStyleConfiguration : NSObject 16 | @end 17 | -------------------------------------------------------------------------------- /Pods/Typhoon/Source/Utils/Swizzle/TyphoonSwizzlerDefaultImpl.h: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // TYPHOON FRAMEWORK 4 | // Copyright 2014, Typhoon Framework Contributors 5 | // All Rights Reserved. 6 | // 7 | // NOTICE: The authors permit you to use, modify, and distribute this file 8 | // in accordance with the terms of the license agreement accompanying it. 9 | // 10 | //////////////////////////////////////////////////////////////////////////////// 11 | 12 | #import 13 | #import "TyphoonMethodSwizzler.h" 14 | 15 | @interface TyphoonSwizzlerDefaultImpl : NSObject 16 | 17 | + (instancetype)instance; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/ArchitectureExtensions/VIPER-Integration/VIPER-Demo/Demo/View/TJPVIPERDemoDetailViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // TJPVIPERDemoDetailViewController.m 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/4/1. 6 | // 7 | 8 | #import "TJPVIPERDemoDetailViewController.h" 9 | 10 | @interface TJPVIPERDemoDetailViewController () 11 | 12 | @end 13 | 14 | @implementation TJPVIPERDemoDetailViewController 15 | 16 | - (void)dealloc { 17 | NSLog(@"%@ dealloc", NSStringFromClass([self class])); 18 | } 19 | 20 | - (void)viewDidLoad { 21 | [super viewDidLoad]; 22 | 23 | self.title = @"VIPER DEMO详情页"; 24 | self.view.backgroundColor = [UIColor whiteColor]; 25 | } 26 | 27 | 28 | 29 | @end 30 | -------------------------------------------------------------------------------- /Pods/ReactiveObjC/ReactiveObjC/NSEnumerator+RACSequenceAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSEnumerator+RACSequenceAdditions.h 3 | // ReactiveObjC 4 | // 5 | // Created by Uri Baghin on 07/01/2013. 6 | // Copyright (c) 2013 GitHub, Inc. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class RACSequence<__covariant ValueType>; 12 | 13 | NS_ASSUME_NONNULL_BEGIN 14 | 15 | @interface NSEnumerator (RACSequenceAdditions) 16 | 17 | /// Creates and returns a sequence corresponding to the receiver. 18 | /// 19 | /// The receiver is exhausted lazily as the sequence is enumerated. 20 | @property (nonatomic, copy, readonly) RACSequence *rac_sequence; 21 | 22 | @end 23 | 24 | NS_ASSUME_NONNULL_END 25 | -------------------------------------------------------------------------------- /Pods/ReactiveObjC/ReactiveObjC/RACScopedDisposable.m: -------------------------------------------------------------------------------- 1 | // 2 | // RACScopedDisposable.m 3 | // ReactiveObjC 4 | // 5 | // Created by Josh Abernathy on 3/28/12. 6 | // Copyright (c) 2012 GitHub, Inc. All rights reserved. 7 | // 8 | 9 | #import "RACScopedDisposable.h" 10 | 11 | @implementation RACScopedDisposable 12 | 13 | #pragma mark Lifecycle 14 | 15 | + (instancetype)scopedDisposableWithDisposable:(RACDisposable *)disposable { 16 | return [self disposableWithBlock:^{ 17 | [disposable dispose]; 18 | }]; 19 | } 20 | 21 | - (void)dealloc { 22 | [self dispose]; 23 | } 24 | 25 | #pragma mark RACDisposable 26 | 27 | - (RACScopedDisposable *)asScopedDisposable { 28 | // totally already are 29 | return self; 30 | } 31 | 32 | @end 33 | -------------------------------------------------------------------------------- /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/WebImage/PrivacyInfo.xcprivacy: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | NSPrivacyTracking 6 | 7 | NSPrivacyCollectedDataTypes 8 | 9 | NSPrivacyTrackingDomains 10 | 11 | NSPrivacyAccessedAPITypes 12 | 13 | 14 | NSPrivacyAccessedAPIType 15 | NSPrivacyAccessedAPICategoryFileTimestamp 16 | NSPrivacyAccessedAPITypeReasons 17 | 18 | C617.1 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Typhoon/Typhoon.debug.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Typhoon 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_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} 7 | PODS_ROOT = ${SRCROOT} 8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/Typhoon 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/Typhoon/Source/Configuration/ConfigPostProcessor/TyphoonConfiguration/TyphoonPropertyStyleConfiguration.h: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // TYPHOON FRAMEWORK 4 | // Copyright 2013, Typhoon Framework Contributors 5 | // All Rights Reserved. 6 | // 7 | // NOTICE: The authors permit you to use, modify, and distribute this file 8 | // in accordance with the terms of the license agreement accompanying it. 9 | // 10 | //////////////////////////////////////////////////////////////////////////////// 11 | 12 | #import 13 | #import "TyphoonConfiguration.h" 14 | 15 | @interface TyphoonPropertyStyleConfiguration : NSObject 16 | @end 17 | -------------------------------------------------------------------------------- /Pods/Typhoon/Source/Definition/Injections/TyphoonParameterInjection.h: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // TYPHOON FRAMEWORK 4 | // Copyright 2013, Typhoon Framework Contributors 5 | // All Rights Reserved. 6 | // 7 | // NOTICE: The authors permit you to use, modify, and distribute this file 8 | // in accordance with the terms of the license agreement accompanying it. 9 | // 10 | //////////////////////////////////////////////////////////////////////////////// 11 | 12 | 13 | #import "TyphoonInjection.h" 14 | 15 | @protocol TyphoonParameterInjection 16 | 17 | - (void)setParameterIndex:(NSUInteger)index; 18 | - (NSUInteger)parameterIndex; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /Pods/Typhoon/Source/Definition/Internal/NSDictionary+CustomInjection.h: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // TYPHOON FRAMEWORK 4 | // Copyright 2013, Typhoon Framework Contributors 5 | // All Rights Reserved. 6 | // 7 | // NOTICE: The authors permit you to use, modify, and distribute this file 8 | // in accordance with the terms of the license agreement accompanying it. 9 | // 10 | //////////////////////////////////////////////////////////////////////////////// 11 | 12 | 13 | #import 14 | #import "TyphoonObjectWithCustomInjection.h" 15 | 16 | @interface NSDictionary (TyphoonObjectWithCustomInjection) 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/ArchitectureExtensions/VIPER-Integration/CustomTableViewDemo/TJPViperBaseTableView/Cell/TJPBaseTableViewCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // TJPBaseTableViewCell.h 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/3/29. 6 | // 7 | 8 | #import 9 | 10 | #import "TJPBaseCellModelProtocol.h" 11 | #import "TJPBaseTableViewCellProtocol.h" 12 | 13 | NS_ASSUME_NONNULL_BEGIN 14 | 15 | @interface TJPBaseTableViewCell : UITableViewCell 16 | 17 | @property (nonatomic, weak) id cellModel; 18 | 19 | @property (nonatomic, strong) UIView *tjp_bottomLineView; 20 | 21 | 22 | - (void)initializationChildUI; 23 | 24 | @end 25 | 26 | NS_ASSUME_NONNULL_END 27 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/ArchitectureExtensions/VIPER-Integration/VIPER-Demo/Demo/Entity/TJPImageCellModel.h: -------------------------------------------------------------------------------- 1 | // 2 | // TJPImageCellModel.h 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/7/29. 6 | // 7 | 8 | #import "TJPBaseCellModel.h" 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @interface TJPImageCellModel : TJPBaseCellModel 13 | 14 | @property (nonatomic, copy) NSString *imageId; 15 | 16 | @property (nonatomic, copy) NSString *title; 17 | @property (nonatomic, strong) NSArray *imageUrls; 18 | @property (nonatomic, assign) NSInteger likes; 19 | @property (nonatomic, assign) NSInteger comments; 20 | @property (nonatomic, copy) NSString *imageDescription; 21 | 22 | @end 23 | 24 | NS_ASSUME_NONNULL_END 25 | -------------------------------------------------------------------------------- /Pods/ReactiveObjC/ReactiveObjC/NSSet+RACSequenceAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSSet+RACSequenceAdditions.h 3 | // ReactiveObjC 4 | // 5 | // Created by Justin Spahr-Summers on 2012-10-29. 6 | // Copyright (c) 2012 GitHub. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class RACSequence<__covariant ValueType>; 12 | 13 | NS_ASSUME_NONNULL_BEGIN 14 | 15 | @interface NSSet<__covariant ObjectType> (RACSequenceAdditions) 16 | 17 | /// Creates and returns a sequence corresponding to the receiver. 18 | /// 19 | /// Mutating the receiver will not affect the sequence after it's been created. 20 | @property (nonatomic, copy, readonly) RACSequence *rac_sequence; 21 | 22 | @end 23 | 24 | NS_ASSUME_NONNULL_END 25 | -------------------------------------------------------------------------------- /Pods/ReactiveObjC/ReactiveObjC/RACBehaviorSubject.h: -------------------------------------------------------------------------------- 1 | // 2 | // RACBehaviorSubject.h 3 | // ReactiveObjC 4 | // 5 | // Created by Josh Abernathy on 3/16/12. 6 | // Copyright (c) 2012 GitHub, Inc. All rights reserved. 7 | // 8 | 9 | #import "RACSubject.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | /// A behavior subject sends the last value it received when it is subscribed to. 14 | @interface RACBehaviorSubject : RACSubject 15 | 16 | /// Creates a new behavior subject with a default value. If it hasn't received 17 | /// any values when it gets subscribed to, it sends the default value. 18 | + (instancetype)behaviorSubjectWithDefaultValue:(nullable ValueType)value; 19 | 20 | @end 21 | 22 | NS_ASSUME_NONNULL_END 23 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Typhoon/Typhoon.release.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Typhoon 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_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} 7 | PODS_ROOT = ${SRCROOT} 8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/Typhoon 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/Typhoon/Source/Configuration/ConfigPostProcessor/TyphoonConfiguration/TyphoonPlistStyleConfiguration.h: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // TYPHOON FRAMEWORK 4 | // Copyright 2013, Typhoon Framework Contributors 5 | // All Rights Reserved. 6 | // 7 | // NOTICE: The authors permit you to use, modify, and distribute this file 8 | // in accordance with the terms of the license agreement accompanying it. 9 | // 10 | //////////////////////////////////////////////////////////////////////////////// 11 | 12 | 13 | #import 14 | #import "TyphoonConfiguration.h" 15 | 16 | @interface TyphoonPlistStyleConfiguration : NSObject 17 | @end 18 | -------------------------------------------------------------------------------- /Pods/Typhoon/Source/Definition/Injections/TyphoonInjectionByCurrentRuntimeArguments.h: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // TYPHOON FRAMEWORK 4 | // Copyright 2013, Typhoon Framework Contributors 5 | // All Rights Reserved. 6 | // 7 | // NOTICE: The authors permit you to use, modify, and distribute this file 8 | // in accordance with the terms of the license agreement accompanying it. 9 | // 10 | //////////////////////////////////////////////////////////////////////////////// 11 | 12 | #import 13 | #import "TyphoonAbstractInjection.h" 14 | 15 | 16 | @interface TyphoonInjectionByCurrentRuntimeArguments : TyphoonAbstractInjection 17 | 18 | 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/Tools/MJRefresh/MJRefresh.bundle/zh-Hant.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/Typhoon/Source/TypeConversion/Converters/NSNullTypeConverter.h: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // TYPHOON FRAMEWORK 4 | // Copyright 2013, Typhoon Framework Contributors 5 | // All Rights Reserved. 6 | // 7 | // NOTICE: The authors permit you to use, modify, and distribute this file 8 | // in accordance with the terms of the license agreement accompanying it. 9 | // 10 | //////////////////////////////////////////////////////////////////////////////// 11 | 12 | 13 | #import 14 | #import "TyphoonTypeConverter.h" 15 | 16 | /** 17 | Converter used for testing. 18 | */ 19 | @interface NSNullTypeConverter : NSObject 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /Pods/ReactiveObjC/ReactiveObjC/NSArray+RACSequenceAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSArray+RACSequenceAdditions.h 3 | // ReactiveObjC 4 | // 5 | // Created by Justin Spahr-Summers on 2012-10-29. 6 | // Copyright (c) 2012 GitHub. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class RACSequence<__covariant ValueType>; 12 | 13 | NS_ASSUME_NONNULL_BEGIN 14 | 15 | @interface NSArray<__covariant ObjectType> (RACSequenceAdditions) 16 | 17 | /// Creates and returns a sequence corresponding to the receiver. 18 | /// 19 | /// Mutating the receiver will not affect the sequence after it's been created. 20 | @property (nonatomic, copy, readonly) RACSequence *rac_sequence; 21 | 22 | @end 23 | 24 | NS_ASSUME_NONNULL_END 25 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/ArchitectureExtensions/VIPER-Integration/VIPER-Architecture/Entity/TJPNavigationModel.m: -------------------------------------------------------------------------------- 1 | // 2 | // TJPNavigationModel.m 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/3/31. 6 | // 7 | 8 | #import "TJPNavigationModel.h" 9 | 10 | @implementation TJPNavigationModel 11 | 12 | + (instancetype)modelWithRouteId:(NSString *)routeId parameters:(NSDictionary *)params routeType:(TJPNavigationRouteType)routeType { 13 | TJPNavigationModel *model = [[TJPNavigationModel alloc] init]; 14 | model.routeId = routeId; 15 | model.parameters = params ?: @{}; 16 | model.routeType = routeType; 17 | model.timestamp = [[NSDate date] timeIntervalSince1970]; 18 | 19 | return model; 20 | } 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /Pods/Typhoon/Source/Utils/Swizzle/TyphoonMethodSwizzler.h: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // TYPHOON FRAMEWORK 4 | // Copyright 2014, Typhoon Framework Contributors 5 | // All Rights Reserved. 6 | // 7 | // NOTICE: The authors permit you to use, modify, and distribute this file 8 | // in accordance with the terms of the license agreement accompanying it. 9 | // 10 | //////////////////////////////////////////////////////////////////////////////// 11 | 12 | 13 | 14 | #import 15 | 16 | @protocol TyphoonMethodSwizzler 17 | 18 | @required 19 | - (BOOL)swizzleMethod:(SEL)selA withMethod:(SEL)selB onClass:(Class)pClass error:(NSError **)error; 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /Pods/Typhoon/Source/Configuration/ConfigPostProcessor/TyphoonConfiguration/TyphoonConfiguration.h: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // TYPHOON FRAMEWORK 4 | // Copyright 2013, Typhoon Framework Contributors 5 | // All Rights Reserved. 6 | // 7 | // NOTICE: The authors permit you to use, modify, and distribute this file 8 | // in accordance with the terms of the license agreement accompanying it. 9 | // 10 | //////////////////////////////////////////////////////////////////////////////// 11 | 12 | @protocol TyphoonResource; 13 | 14 | @protocol TyphoonConfiguration 15 | 16 | - (void)appendResource:(id)resource; 17 | 18 | - (id)objectForKey:(NSString *)key; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /Pods/Typhoon/Source/Definition/Injections/TyphoonInjection.h: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // TYPHOON FRAMEWORK 4 | // Copyright 2013, Typhoon Framework Contributors 5 | // All Rights Reserved. 6 | // 7 | // NOTICE: The authors permit you to use, modify, and distribute this file 8 | // in accordance with the terms of the license agreement accompanying it. 9 | // 10 | //////////////////////////////////////////////////////////////////////////////// 11 | 12 | 13 | #import "TyphoonInjectionContext.h" 14 | 15 | @protocol TyphoonInjection 16 | 17 | - (void)valueToInjectWithContext:(TyphoonInjectionContext *)context completion:(TyphoonInjectionValueBlock)result; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /Pods/Typhoon/Source/Definition/Internal/TyphoonBlockDefinition+Internal.h: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // TYPHOON FRAMEWORK 4 | // Copyright 2016, Typhoon Framework Contributors 5 | // All Rights Reserved. 6 | // 7 | // NOTICE: The authors permit you to use, modify, and distribute this file 8 | // in accordance with the terms of the license agreement accompanying it. 9 | // 10 | //////////////////////////////////////////////////////////////////////////////// 11 | 12 | 13 | #import "TyphoonBlockDefinition.h" 14 | 15 | @interface TyphoonBlockDefinition () 16 | 17 | @property (nonatomic, assign) BOOL hasInitializerBlock; 18 | @property (nonatomic, assign) BOOL hasInjectionsBlock; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /Pods/Typhoon/Source/Factory/Internal/TyphoonAssemblyBuilder.h: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // TYPHOON FRAMEWORK 4 | // Copyright 2013, Typhoon Framework Contributors 5 | // All Rights Reserved. 6 | // 7 | // NOTICE: The authors permit you to use, modify, and distribute this file 8 | // in accordance with the terms of the license agreement accompanying it. 9 | // 10 | //////////////////////////////////////////////////////////////////////////////// 11 | 12 | #import 13 | 14 | @interface TyphoonAssemblyBuilder : NSObject 15 | 16 | + (id)buildAssemblyWithClass:(Class)assemblyClass; 17 | + (NSArray *)buildAssembliesWithClasses:(NSArray *)assemblyClasses; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /Pods/Typhoon/Source/ios/Storyboard/UIView+TyphoonOutletTransfer.h: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // TYPHOON FRAMEWORK 4 | // Copyright 2016, Typhoon Framework Contributors 5 | // All Rights Reserved. 6 | // 7 | // NOTICE: The authors permit you to use, modify, and distribute this file 8 | // in accordance with the terms of the license agreement accompanying it. 9 | // 10 | //////////////////////////////////////////////////////////////////////////////// 11 | 12 | #import 13 | 14 | @interface UIView (TyphoonOutletTransfer) 15 | 16 | // Flag to check whether the outlets constraint transportation needs 17 | @property (nonatomic, assign) BOOL typhoonNeedTransferOutlets; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/ArchitectureExtensions/VIPER-Integration/VIPER-Demo/Demo/Respone/TJPFeedResponse.h: -------------------------------------------------------------------------------- 1 | // 2 | // TJPFeedResponse.h 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/7/29. 6 | // 7 | 8 | #import "TJPBaseResponse.h" 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @class TJPPaginationInfo; 13 | 14 | @interface TJPFeedResponse : TJPBaseResponse 15 | 16 | // Feed特有属性 17 | @property (nonatomic, strong, readonly, nullable) NSArray *feeds; 18 | 19 | // Feed特有方法 20 | - (NSInteger)feedCount; 21 | - (BOOL)hasFeedData; 22 | - (NSArray *)getFeedsByType:(NSString *)feedType; 23 | - (NSDictionary *)getFeedStatistics; 24 | 25 | + (instancetype)feedResponseWithDict:(NSDictionary *)dict; 26 | 27 | 28 | @end 29 | 30 | NS_ASSUME_NONNULL_END 31 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/Tools/MJRefresh/Custom/Footer/Auto/MJRefreshAutoStateFooter.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshAutoStateFooter.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/6/13. 6 | // Copyright © 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshAutoFooter.h" 10 | 11 | @interface MJRefreshAutoStateFooter : MJRefreshAutoFooter 12 | /** 文字距离圈圈、箭头的距离 */ 13 | @property (assign, nonatomic) CGFloat labelLeftInset; 14 | /** 显示刷新状态的label */ 15 | @property (weak, nonatomic, readonly) UILabel *stateLabel; 16 | 17 | /** 设置state状态下的文字 */ 18 | - (void)setTitle:(NSString *)title forState:(MJRefreshState)state; 19 | 20 | /** 隐藏刷新状态的文字 */ 21 | @property (assign, nonatomic, getter=isRefreshingTitleHidden) BOOL refreshingTitleHidden; 22 | @end 23 | -------------------------------------------------------------------------------- /Pods/ReactiveObjC/ReactiveObjC/NSOrderedSet+RACSequenceAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSOrderedSet+RACSequenceAdditions.h 3 | // ReactiveObjC 4 | // 5 | // Created by Justin Spahr-Summers on 2012-10-29. 6 | // Copyright (c) 2012 GitHub. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class RACSequence<__covariant ValueType>; 12 | 13 | NS_ASSUME_NONNULL_BEGIN 14 | 15 | @interface NSOrderedSet<__covariant ObjectType> (RACSequenceAdditions) 16 | 17 | /// Creates and returns a sequence corresponding to the receiver. 18 | /// 19 | /// Mutating the receiver will not affect the sequence after it's been created. 20 | @property (nonatomic, copy, readonly) RACSequence *rac_sequence; 21 | 22 | @end 23 | 24 | NS_ASSUME_NONNULL_END 25 | -------------------------------------------------------------------------------- /Pods/ReactiveObjC/ReactiveObjC/RACStream+Private.h: -------------------------------------------------------------------------------- 1 | // 2 | // RACStream+Private.h 3 | // ReactiveObjC 4 | // 5 | // Created by Justin Spahr-Summers on 2013-07-22. 6 | // Copyright (c) 2013 GitHub, Inc. All rights reserved. 7 | // 8 | 9 | #import "RACStream.h" 10 | 11 | @interface RACStream () 12 | 13 | // Combines a list of streams using the logic of the given block. 14 | // 15 | // streams - The streams to combine. 16 | // block - An operator that combines two streams and returns a new one. The 17 | // returned stream should contain 2-tuples of the streams' combined 18 | // values. 19 | // 20 | // Returns a combined stream. 21 | + (__kindof RACStream *)join:(id)streams block:(RACStream * (^)(id, id))block; 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/ArchitectureExtensions/VIPER-Integration/VIPER-Demo/Demo/Entity/TJPNewsCellModel.h: -------------------------------------------------------------------------------- 1 | // 2 | // TJPNewsCellModel.h 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/7/29. 6 | // 7 | 8 | #import "TJPBaseCellModel.h" 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @interface TJPNewsCellModel : TJPBaseCellModel 13 | 14 | @property (nonatomic, copy) NSString *newsId; 15 | 16 | @property (nonatomic, copy) NSString *title; 17 | @property (nonatomic, copy) NSString *summary; 18 | @property (nonatomic, copy) NSString *imageUrl; 19 | @property (nonatomic, copy) NSString *publishTime; 20 | @property (nonatomic, copy) NSString *source; 21 | @property (nonatomic, assign) NSInteger readCount; 22 | 23 | @end 24 | 25 | NS_ASSUME_NONNULL_END 26 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/ArchitectureExtensions/VIPER-Integration/VIPER-Demo/Demo/Entity/TJPVideoCellModel.h: -------------------------------------------------------------------------------- 1 | // 2 | // TJPVideoCellModel.h 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/7/29. 6 | // 7 | 8 | #import "TJPBaseCellModel.h" 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @interface TJPVideoCellModel : TJPBaseCellModel 13 | 14 | @property (nonatomic, copy) NSString *videoId; 15 | 16 | @property (nonatomic, copy) NSString *title; 17 | @property (nonatomic, copy) NSString *coverUrl; 18 | @property (nonatomic, copy) NSString *videoUrl; 19 | @property (nonatomic, copy) NSString *duration; 20 | @property (nonatomic, assign) NSInteger playCount; 21 | @property (nonatomic, copy) NSString *author; 22 | 23 | @end 24 | 25 | NS_ASSUME_NONNULL_END 26 | -------------------------------------------------------------------------------- /Pods/ReactiveObjC/ReactiveObjC/NSIndexSet+RACSequenceAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSIndexSet+RACSequenceAdditions.h 3 | // ReactiveObjC 4 | // 5 | // Created by Sergey Gavrilyuk on 12/17/13. 6 | // Copyright (c) 2013 GitHub, Inc. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class RACSequence<__covariant ValueType>; 12 | 13 | NS_ASSUME_NONNULL_BEGIN 14 | 15 | @interface NSIndexSet (RACSequenceAdditions) 16 | 17 | /// Creates and returns a sequence of indexes (as `NSNumber`s) corresponding to 18 | /// the receiver. 19 | /// 20 | /// Mutating the receiver will not affect the sequence after it's been created. 21 | @property (nonatomic, copy, readonly) RACSequence *rac_sequence; 22 | 23 | @end 24 | 25 | NS_ASSUME_NONNULL_END 26 | -------------------------------------------------------------------------------- /Pods/Typhoon/Source/Factory/Internal/NSInvocation+TCFWrapValues.h: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // TYPHOON FRAMEWORK 4 | // Copyright 2016, Typhoon Framework Contributors 5 | // All Rights Reserved. 6 | // 7 | // NOTICE: The authors permit you to use, modify, and distribute this file 8 | // in accordance with the terms of the license agreement accompanying it. 9 | // 10 | //////////////////////////////////////////////////////////////////////////////// 11 | 12 | 13 | #import 14 | 15 | @interface NSInvocation (TCFWrapValues) 16 | 17 | /** Get argument at index, wrapping primitive values in NSValue if needed */ 18 | - (id)typhoon_getArgumentObjectAtIndex:(NSInteger)idx; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/CoreNetworkStack/TJPIMCore/Protocol/TJPMessageManagerNetworkDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // TJPMessageManagerNetworkDelegate.h 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/6/24. 6 | // 网络发送代理协议 7 | 8 | #import 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @class TJPMessageManager, TJPMessageContext; 13 | 14 | @protocol TJPMessageManagerNetworkDelegate 15 | /** 16 | * 请求网络层发送消息 17 | */ 18 | - (void)messageManager:(TJPMessageManager *)manager needsSendMessage:(TJPMessageContext *)message; 19 | 20 | @optional 21 | /** 22 | * 请求网络层重传消息 23 | */ 24 | - (void)messageManager:(TJPMessageManager *)manager needsRetransmitMessage:(TJPMessageContext *)message; 25 | 26 | @end 27 | 28 | NS_ASSUME_NONNULL_END 29 | -------------------------------------------------------------------------------- /Pods/ReactiveObjC/ReactiveObjC/NSData+RACSupport.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSData+RACSupport.h 3 | // ReactiveObjC 4 | // 5 | // Created by Josh Abernathy on 5/11/12. 6 | // Copyright (c) 2012 GitHub, Inc. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class RACScheduler; 12 | @class RACSignal<__covariant ValueType>; 13 | 14 | NS_ASSUME_NONNULL_BEGIN 15 | 16 | @interface NSData (RACSupport) 17 | 18 | // Read the data at the URL using -[NSData initWithContentsOfURL:options:error:]. 19 | // Sends the data or the error. 20 | // 21 | // scheduler - cannot be nil. 22 | + (RACSignal *)rac_readContentsOfURL:(nullable NSURL *)URL options:(NSDataReadingOptions)options scheduler:(RACScheduler *)scheduler; 23 | 24 | @end 25 | 26 | NS_ASSUME_NONNULL_END 27 | -------------------------------------------------------------------------------- /Pods/ReactiveObjC/ReactiveObjC/UIButton+RACCommandSupport.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIButton+RACCommandSupport.h 3 | // ReactiveObjC 4 | // 5 | // Created by Ash Furrow on 2013-06-06. 6 | // Copyright (c) 2013 GitHub, Inc. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class RACCommand<__contravariant InputType, __covariant ValueType>; 12 | 13 | NS_ASSUME_NONNULL_BEGIN 14 | 15 | @interface UIButton (RACCommandSupport) 16 | 17 | /// Sets the button's command. When the button is clicked, the command is 18 | /// executed with the sender of the event. The button's enabledness is bound 19 | /// to the command's `canExecute`. 20 | @property (nonatomic, strong, nullable) RACCommand<__kindof UIButton *, id> *rac_command; 21 | 22 | @end 23 | 24 | NS_ASSUME_NONNULL_END 25 | -------------------------------------------------------------------------------- /Pods/Typhoon/Source/Factory/Internal/TyphoonCollaboratingAssembliesCollector.h: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // TYPHOON FRAMEWORK 4 | // Copyright 2015, Typhoon Framework Contributors 5 | // All Rights Reserved. 6 | // 7 | // NOTICE: The authors permit you to use, modify, and distribute this file 8 | // in accordance with the terms of the license agreement accompanying it. 9 | // 10 | //////////////////////////////////////////////////////////////////////////////// 11 | 12 | #import 13 | 14 | @interface TyphoonCollaboratingAssembliesCollector : NSObject 15 | 16 | - (instancetype)initWithAssemblyClass:(Class)assemblyClass; 17 | 18 | - (NSSet *)collectCollaboratingAssemblies; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /Pods/Typhoon/Source/Factory/Internal/NSInvocation+TCFCustomImplementation.h: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // TYPHOONFRAMEWORK.ORG 4 | // Copyright 2016 typhoonframework.org Pty Ltd 5 | // All Rights Reserved. 6 | // 7 | // NOTICE: Prepared by AppsQuick.ly on behalf of typhoonframework.org. This software 8 | // is proprietary information. Unauthorized use is prohibited. 9 | // 10 | //////////////////////////////////////////////////////////////////////////////// 11 | 12 | #import 13 | 14 | @interface NSInvocation (TCFCustomImplementation) 15 | 16 | /** 17 | * Works with `id` arguments and `id` return values only 18 | * */ 19 | - (void)invokeWithCustomImplementation:(IMP)impl; 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /Pods/Typhoon/Source/TypeConversion/Converters/NSNullTypeConverter.m: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // TYPHOON FRAMEWORK 4 | // Copyright 2013, Typhoon Framework Contributors 5 | // All Rights Reserved. 6 | // 7 | // NOTICE: The authors permit you to use, modify, and distribute this file 8 | // in accordance with the terms of the license agreement accompanying it. 9 | // 10 | //////////////////////////////////////////////////////////////////////////////// 11 | 12 | #import "NSNullTypeConverter.h" 13 | 14 | @implementation NSNullTypeConverter 15 | 16 | - (id)supportedType 17 | { 18 | return @"NSNull"; 19 | } 20 | 21 | - (id)convert:(NSString *)stringValue 22 | { 23 | return [NSNull null]; 24 | } 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /Pods/Typhoon/Source/ios/Storyboard/TyphoonViewHelpers.h: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // TYPHOON FRAMEWORK 4 | // Copyright 2015, Typhoon Framework Contributors 5 | // All Rights Reserved. 6 | // 7 | // NOTICE: The authors permit you to use, modify, and distribute this file 8 | // in accordance with the terms of the license agreement accompanying it. 9 | // 10 | //////////////////////////////////////////////////////////////////////////////// 11 | 12 | #import 13 | 14 | @interface TyphoonViewHelpers : NSObject 15 | 16 | + (id)viewFromDefinition:(NSString *)definitionKey originalView:(UIView *)original; 17 | + (void)transferPropertiesFromView:(UIView *)src toView:(UIView *)dst; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /Pods/ReactiveObjC/ReactiveObjC/NSString+RACSequenceAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSString+RACSequenceAdditions.h 3 | // ReactiveObjC 4 | // 5 | // Created by Justin Spahr-Summers on 2012-10-29. 6 | // Copyright (c) 2012 GitHub. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class RACSequence<__covariant ValueType>; 12 | 13 | NS_ASSUME_NONNULL_BEGIN 14 | 15 | @interface NSString (RACSequenceAdditions) 16 | 17 | /// Creates and returns a sequence containing strings corresponding to each 18 | /// composed character sequence in the receiver. 19 | /// 20 | /// Mutating the receiver will not affect the sequence after it's been created. 21 | @property (nonatomic, copy, readonly) RACSequence *rac_sequence; 22 | 23 | @end 24 | 25 | NS_ASSUME_NONNULL_END 26 | -------------------------------------------------------------------------------- /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/Typhoon/Source/Definition/Internal/TyphoonInjectionDefinition.h: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // TYPHOONFRAMEWORK.ORG 4 | // Copyright 2015 typhoonframework.org Pty Ltd 5 | // All Rights Reserved. 6 | // 7 | // NOTICE: Prepared by AppsQuick.ly on behalf of typhoonframework.org. This software 8 | // is proprietary information. Unauthorized use is prohibited. 9 | // 10 | //////////////////////////////////////////////////////////////////////////////// 11 | 12 | #import 13 | #import "TyphoonDefinition.h" 14 | #import "TyphoonInjection.h" 15 | 16 | @interface TyphoonInjectionDefinition : TyphoonDefinition 17 | 18 | - (instancetype)initWithInjection:(id)injection; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /Pods/Typhoon/Source/Factory/Internal/NSInvocation+TCFUnwrapValues.h: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // TYPHOON FRAMEWORK 4 | // Copyright 2014, Typhoon Framework Contributors 5 | // All Rights Reserved. 6 | // 7 | // NOTICE: The authors permit you to use, modify, and distribute this file 8 | // in accordance with the terms of the license agreement accompanying it. 9 | // 10 | //////////////////////////////////////////////////////////////////////////////// 11 | 12 | #import 13 | 14 | @interface NSInvocation (TCFUnwrapValues) 15 | 16 | /** Set object as argument at index, plus unwrap NSValue and NSNumber if needed */ 17 | - (void)typhoon_setArgumentObject:(id)object atIndex:(NSInteger)idx; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/Tools/MJRefresh/Base/MJRefreshAutoFooter.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshAutoFooter.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/4/24. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshFooter.h" 10 | 11 | @interface MJRefreshAutoFooter : MJRefreshFooter 12 | /** 是否自动刷新(默认为YES) */ 13 | @property (assign, nonatomic, getter=isAutomaticallyRefresh) BOOL automaticallyRefresh; 14 | 15 | /** 当底部控件出现多少时就自动刷新(默认为1.0,也就是底部控件完全出现时,才会自动刷新) */ 16 | @property (assign, nonatomic) CGFloat appearencePercentTriggerAutoRefresh MJRefreshDeprecated("请使用triggerAutomaticallyRefreshPercent属性"); 17 | 18 | /** 当底部控件出现多少时就自动刷新(默认为1.0,也就是底部控件完全出现时,才会自动刷新) */ 19 | @property (assign, nonatomic) CGFloat triggerAutomaticallyRefreshPercent; 20 | @end 21 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/Tools/MJRefresh/UIView+MJExtension.h: -------------------------------------------------------------------------------- 1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh 2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000 3 | // UIView+Extension.h 4 | // MJRefreshExample 5 | // 6 | // Created by MJ Lee on 14-5-28. 7 | // Copyright (c) 2014年 小码哥. All rights reserved. 8 | // 9 | 10 | #import 11 | 12 | @interface UIView (MJExtension) 13 | @property (assign, nonatomic) CGFloat mj_x; 14 | @property (assign, nonatomic) CGFloat mj_y; 15 | @property (assign, nonatomic) CGFloat mj_w; 16 | @property (assign, nonatomic) CGFloat mj_h; 17 | @property (assign, nonatomic) CGSize mj_size; 18 | @property (assign, nonatomic) CGPoint mj_origin; 19 | @end 20 | -------------------------------------------------------------------------------- /Pods/Typhoon/Source/Configuration/GlobalConfigResolver/TyphoonGlobalConfigCollector.h: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // TYPHOON FRAMEWORK 4 | // Copyright 2015, Typhoon Framework Contributors 5 | // All Rights Reserved. 6 | // 7 | // NOTICE: The authors permit you to use, modify, and distribute this file 8 | // in accordance with the terms of the license agreement accompanying it. 9 | // 10 | //////////////////////////////////////////////////////////////////////////////// 11 | 12 | #import 13 | 14 | @interface TyphoonGlobalConfigCollector : NSObject 15 | 16 | - (instancetype)initWithAppDelegate:(id)appDelegate; 17 | 18 | - (NSArray *)obtainGlobalConfigFilenamesFromBundle:(NSBundle *)bundle; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /Pods/Typhoon/Source/Definition/Injections/TyphoonInjectionByObjectFromString.h: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // TYPHOON FRAMEWORK 4 | // Copyright 2013, Typhoon Framework Contributors 5 | // All Rights Reserved. 6 | // 7 | // NOTICE: The authors permit you to use, modify, and distribute this file 8 | // in accordance with the terms of the license agreement accompanying it. 9 | // 10 | //////////////////////////////////////////////////////////////////////////////// 11 | 12 | 13 | #import "TyphoonAbstractInjection.h" 14 | 15 | @interface TyphoonInjectionByObjectFromString : TyphoonAbstractInjection 16 | 17 | @property(nonatomic, strong) NSString *textValue; 18 | 19 | - (instancetype)initWithString:(NSString *)string; 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /Pods/Typhoon/Source/Definition/Internal/TyphoonObjectWithCustomInjection.h: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // TYPHOON FRAMEWORK 4 | // Copyright 2013, Typhoon Framework Contributors 5 | // All Rights Reserved. 6 | // 7 | // NOTICE: The authors permit you to use, modify, and distribute this file 8 | // in accordance with the terms of the license agreement accompanying it. 9 | // 10 | //////////////////////////////////////////////////////////////////////////////// 11 | 12 | 13 | #import "TyphoonPropertyInjection.h" 14 | #import "TyphoonParameterInjection.h" 15 | 16 | @protocol TyphoonObjectWithCustomInjection 17 | 18 | - (id )typhoonCustomObjectInjection; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /Pods/ReactiveObjC/ReactiveObjC/UISwitch+RACSignalSupport.h: -------------------------------------------------------------------------------- 1 | // 2 | // UISwitch+RACSignalSupport.h 3 | // ReactiveObjC 4 | // 5 | // Created by Uri Baghin on 20/07/2013. 6 | // Copyright (c) 2013 GitHub, Inc. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class RACChannelTerminal; 12 | 13 | NS_ASSUME_NONNULL_BEGIN 14 | 15 | @interface UISwitch (RACSignalSupport) 16 | 17 | /// Creates a new RACChannel-based binding to the receiver. 18 | /// 19 | /// Returns a RACChannelTerminal that sends whether the receiver is on whenever 20 | /// the UIControlEventValueChanged control event is fired, and sets it on or off 21 | /// when it receives @YES or @NO respectively. 22 | - (RACChannelTerminal *)rac_newOnChannel; 23 | 24 | @end 25 | 26 | NS_ASSUME_NONNULL_END 27 | -------------------------------------------------------------------------------- /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 | 14 | NSErrorUserInfoKey const _Nonnull SDWebImageErrorDownloadResponseKey = @"SDWebImageErrorDownloadResponseKey"; 15 | NSErrorUserInfoKey const _Nonnull SDWebImageErrorDownloadStatusCodeKey = @"SDWebImageErrorDownloadStatusCodeKey"; 16 | NSErrorUserInfoKey const _Nonnull SDWebImageErrorDownloadContentTypeKey = @"SDWebImageErrorDownloadContentTypeKey"; 17 | -------------------------------------------------------------------------------- /Pods/Typhoon/Source/Configuration/Startup/TyphoonStartup.h: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // TYPHOON FRAMEWORK 4 | // Copyright 2013, Typhoon Framework Contributors 5 | // All Rights Reserved. 6 | // 7 | // NOTICE: The authors permit you to use, modify, and distribute this file 8 | // in accordance with the terms of the license agreement accompanying it. 9 | // 10 | //////////////////////////////////////////////////////////////////////////////// 11 | 12 | 13 | #import 14 | 15 | @class TyphoonComponentFactory; 16 | 17 | 18 | @interface TyphoonStartup : NSObject 19 | 20 | + (void)requireInitialFactory; 21 | 22 | + (TyphoonComponentFactory *)initialFactory; 23 | 24 | + (void)releaseInitialFactory; 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /Pods/Target Support Files/OCMock/OCMock-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 "OCMock.h" 14 | #import "OCMockObject.h" 15 | #import "OCMArg.h" 16 | #import "OCMConstraint.h" 17 | #import "OCMLocation.h" 18 | #import "OCMMacroState.h" 19 | #import "OCMRecorder.h" 20 | #import "OCMStubRecorder.h" 21 | #import "NSNotificationCenter+OCMAdditions.h" 22 | #import "OCMFunctions.h" 23 | #import "OCMVerifier.h" 24 | #import "OCMQuantifier.h" 25 | #import "OCMockMacros.h" 26 | 27 | FOUNDATION_EXPORT double OCMockVersionNumber; 28 | FOUNDATION_EXPORT const unsigned char OCMockVersionString[]; 29 | 30 | -------------------------------------------------------------------------------- /Pods/Typhoon/Source/Definition/Injections/TyphoonInjectionByObjectInstance.h: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // TYPHOON FRAMEWORK 4 | // Copyright 2013, Typhoon Framework Contributors 5 | // All Rights Reserved. 6 | // 7 | // NOTICE: The authors permit you to use, modify, and distribute this file 8 | // in accordance with the terms of the license agreement accompanying it. 9 | // 10 | //////////////////////////////////////////////////////////////////////////////// 11 | 12 | 13 | #import "TyphoonAbstractInjection.h" 14 | 15 | @interface TyphoonInjectionByObjectInstance : TyphoonAbstractInjection 16 | 17 | @property(nonatomic, strong, readonly) id objectInstance; 18 | 19 | - (instancetype)initWithObjectInstance:(id)objectInstance; 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive.xcodeproj/xcuserdata/aarongtang.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | iOS-Network-Stack-Dive.xcscheme_^#shared#^_ 8 | 9 | orderHint 10 | 12 11 | 12 | 13 | SuppressBuildableAutocreation 14 | 15 | 962A7EC12D8830A6009FAD4E 16 | 17 | primary 18 | 19 | 20 | 967117802D8C0B3E00EC1DDF 21 | 22 | primary 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /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_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} 8 | PODS_ROOT = ${SRCROOT} 9 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/Masonry 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/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_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} 8 | PODS_ROOT = ${SRCROOT} 9 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/Masonry 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/ReactiveObjC/ReactiveObjC.debug.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/ReactiveObjC 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | OTHER_LDFLAGS = $(inherited) -framework "Foundation" 5 | PODS_BUILD_DIR = ${BUILD_DIR} 6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} 8 | PODS_ROOT = ${SRCROOT} 9 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/ReactiveObjC 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/ReactiveObjC/ReactiveObjC.release.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/ReactiveObjC 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | OTHER_LDFLAGS = $(inherited) -framework "Foundation" 5 | PODS_BUILD_DIR = ${BUILD_DIR} 6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} 8 | PODS_ROOT = ${SRCROOT} 9 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/ReactiveObjC 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/Typhoon/Source/Configuration/Resource/TyphoonPathResource.h: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // TYPHOON FRAMEWORK 4 | // Copyright 2013, Typhoon Framework Contributors 5 | // All Rights Reserved. 6 | // 7 | // NOTICE: The authors permit you to use, modify, and distribute this file 8 | // in accordance with the terms of the license agreement accompanying it. 9 | // 10 | //////////////////////////////////////////////////////////////////////////////// 11 | 12 | 13 | #import 14 | #import "TyphoonResource.h" 15 | 16 | @interface TyphoonPathResource : NSObject 17 | 18 | + (id )withPath:(NSString *)filePath; 19 | 20 | - (instancetype)initWithContentsOfFile:(NSString *)filePath; 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/CoreNetworkStack/TJPIMCore/Utility/TJPNetworkUtil.h: -------------------------------------------------------------------------------- 1 | // 2 | // TJPNetworkUtil.h 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/3/23. 6 | // 7 | 8 | #import 9 | #import "TJPCoreTypes.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface TJPNetworkUtil : NSObject 14 | 15 | /// crc32校验 16 | + (uint32_t)crc32ForData:(NSData *)data; 17 | 18 | /// 使用zlib 数据压缩 19 | + (NSData *)compressData:(NSData *)data; 20 | 21 | /// 数据解压 22 | + (NSData *)decompressData:(NSData *)data; 23 | 24 | + (NSString *)base64EncodeData:(NSData *)data; 25 | + (NSData *)base64DecodeString:(NSString *)string; 26 | 27 | /// 获取当前设备IP地址 28 | + (NSString *)deviceIPAddress; 29 | + (BOOL)isValidIPAddress:(NSString *)ip; 30 | 31 | 32 | @end 33 | 34 | NS_ASSUME_NONNULL_END 35 | -------------------------------------------------------------------------------- /Pods/Target Support Files/DZNEmptyDataSet/DZNEmptyDataSet.debug.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | OTHER_LDFLAGS = $(inherited) -framework "UIKit" 5 | PODS_BUILD_DIR = ${BUILD_DIR} 6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} 8 | PODS_ROOT = ${SRCROOT} 9 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/DZNEmptyDataSet 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/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 | /// Cancel the operation 15 | - (void)cancel; 16 | 17 | @optional 18 | 19 | /// Whether the operation has been cancelled. 20 | @property (nonatomic, assign, readonly, getter=isCancelled) BOOL cancelled; 21 | 22 | @end 23 | 24 | /// NSOperation conform to `SDWebImageOperation`. 25 | @interface NSOperation (SDWebImageOperation) 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /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/Target Support Files/DZNEmptyDataSet/DZNEmptyDataSet.release.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | OTHER_LDFLAGS = $(inherited) -framework "UIKit" 5 | PODS_BUILD_DIR = ${BUILD_DIR} 6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} 8 | PODS_ROOT = ${SRCROOT} 9 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/DZNEmptyDataSet 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/Reachability/Reachability.debug.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Reachability 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | OTHER_LDFLAGS = $(inherited) -framework "SystemConfiguration" 5 | PODS_BUILD_DIR = ${BUILD_DIR} 6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} 8 | PODS_ROOT = ${SRCROOT} 9 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/Reachability 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/Reachability/Reachability.release.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Reachability 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | OTHER_LDFLAGS = $(inherited) -framework "SystemConfiguration" 5 | PODS_BUILD_DIR = ${BUILD_DIR} 6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} 8 | PODS_ROOT = ${SRCROOT} 9 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/Reachability 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/YYModel/YYModel.debug.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/YYModel 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | OTHER_LDFLAGS = $(inherited) -framework "CoreFoundation" -framework "Foundation" 5 | PODS_BUILD_DIR = ${BUILD_DIR} 6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} 8 | PODS_ROOT = ${SRCROOT} 9 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/YYModel 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/YYModel/YYModel.release.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/YYModel 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | OTHER_LDFLAGS = $(inherited) -framework "CoreFoundation" -framework "Foundation" 5 | PODS_BUILD_DIR = ${BUILD_DIR} 6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} 8 | PODS_ROOT = ${SRCROOT} 9 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/YYModel 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 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/CoreNetworkStack/TJPIMCore/Message/TJPMessageSerializer.h: -------------------------------------------------------------------------------- 1 | // 2 | // TJPMessageSerializer.h 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/5/13. 6 | // 序列化工具 7 | 8 | #import 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @interface TJPMessageSerializer : NSObject 13 | 14 | 15 | /// 文本内容序列化成TLV格式的二进制数据 16 | /// - Parameters: 17 | /// - text: 要序列化的文本内容(UTF-8编码) 18 | /// - tag: 消息类型标识 详见 TJPContentType 19 | + (NSData *)serializeText:(NSString *)text tag:(uint16_t)tag; 20 | 21 | 22 | 23 | /// 图片序列化成TLV格式的二进制数据 24 | /// - Parameters: 25 | /// - image: 要序列化的图片 26 | /// - tag: 消息类型标识 详见 TJPContentType 27 | + (NSData *)serializeImage:(UIImage *)image tag:(uint16_t)tag; 28 | 29 | 30 | 31 | // 后续增加别的消息类型直接增加方法即可 32 | 33 | @end 34 | 35 | NS_ASSUME_NONNULL_END 36 | -------------------------------------------------------------------------------- /Pods/ReactiveObjC/ReactiveObjC/RACDynamicSequence.h: -------------------------------------------------------------------------------- 1 | // 2 | // RACDynamicSequence.h 3 | // ReactiveObjC 4 | // 5 | // Created by Justin Spahr-Summers on 2012-10-29. 6 | // Copyright (c) 2012 GitHub. All rights reserved. 7 | // 8 | 9 | #import "RACSequence.h" 10 | 11 | // Private class that implements a sequence dynamically using blocks. 12 | @interface RACDynamicSequence : RACSequence 13 | 14 | // Returns a sequence which evaluates `dependencyBlock` only once, the first 15 | // time either `headBlock` or `tailBlock` is evaluated. The result of 16 | // `dependencyBlock` will be passed into `headBlock` and `tailBlock` when 17 | // invoked. 18 | + (RACSequence *)sequenceWithLazyDependency:(id (^)(void))dependencyBlock headBlock:(id (^)(id dependency))headBlock tailBlock:(RACSequence *(^)(id dependency))tailBlock; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /Pods/Typhoon/Source/Definition/AutoInjection/TyphoonAutoInjection.h: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // TYPHOON FRAMEWORK 4 | // Copyright 2013, Typhoon Framework Contributors 5 | // All Rights Reserved. 6 | // 7 | // NOTICE: The authors permit you to use, modify, and distribute this file 8 | // in accordance with the terms of the license agreement accompanying it. 9 | // 10 | //////////////////////////////////////////////////////////////////////////////// 11 | 12 | 13 | #import "TyphoonInjectedObject.h" 14 | 15 | //Injects property by definition matched by Protocol 16 | #define InjectedProtocol(aProtocol) TyphoonInjectedObject* 17 | 18 | //Injects property by definition matched by Class 19 | #define InjectedClass(aClass) aClass* 20 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/Tools/TJPCache/TJPCacheProtocol.h: -------------------------------------------------------------------------------- 1 | // 2 | // TJPCacheProtocol.h 3 | // 4 | // 5 | // Created by 唐佳鹏 on 2025/1/18. 6 | // 7 | 8 | #import 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @protocol TJPCacheProtocol 13 | 14 | // 基础缓存操作 15 | - (void)saveCacheWithData:(id)data forKey:(NSString *)key expireTime:(NSTimeInterval)expireTime; 16 | - (id)loadCacheForKey:(NSString *)key; 17 | - (void)removeCacheForKey:(NSString *)key; 18 | - (void)clearAllCache; 19 | 20 | // 缓存数据查询 21 | - (BOOL)hasCacheForKey:(NSString *)key; 22 | - (NSTimeInterval)remainingTimeForKey:(NSString *)key; 23 | - (NSUInteger)cacheSize; 24 | 25 | // 批量操作 26 | - (void)removeCacheWithKeyPrefix:(NSString *)keyPrefix; 27 | - (NSArray *)allCacheKeys; 28 | 29 | @end 30 | 31 | NS_ASSUME_NONNULL_END 32 | -------------------------------------------------------------------------------- /Pods/Typhoon/Source/ios/Definition/TyphoonStoryboardDefinition.h: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // TYPHOON FRAMEWORK 4 | // Copyright 2015, Typhoon Framework Contributors 5 | // All Rights Reserved. 6 | // 7 | // NOTICE: The authors permit you to use, modify, and distribute this file 8 | // in accordance with the terms of the license agreement accompanying it. 9 | // 10 | //////////////////////////////////////////////////////////////////////////////// 11 | 12 | #import 13 | 14 | @interface TyphoonStoryboardDefinition : TyphoonFactoryDefinition 15 | 16 | - (id)initWithStoryboardName:(id)storyboardName viewControllerId:(id)viewControllerId; 17 | - (id)initWithStoryboard:(UIStoryboard *)storyboard viewControllerId:(id)viewControllerId; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/ArchitectureExtensions/AOP/LoggingAspect/TJPLogAspectInterface.h: -------------------------------------------------------------------------------- 1 | // 2 | // TJPLogAspectInterface.h 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/3/26. 6 | // 日志切面接口 7 | 8 | #import 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @protocol TJPLogAspectInterface 13 | //日志触发点 14 | typedef NS_ENUM(NSUInteger, TJPLogTriggerPoint) { 15 | TJPLogTriggerBeforeMethod, //方法执行前 16 | TJPLogTriggerAfterMethod, //方法执行后 17 | TJPLogTriggerOnException //发生异常时 18 | }; 19 | 20 | //日志配置 方法过滤 21 | typedef struct TJPLogConfig { 22 | Class targetClass; //目标类 23 | SEL targetSelector; //目标方法 24 | Protocol *targetProtocol; //目标协议 25 | }TJPLogConfig; 26 | 27 | 28 | 29 | @end 30 | 31 | NS_ASSUME_NONNULL_END 32 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/ArchitectureExtensions/VIPER-Integration/CustomTableViewDemo/TJPViperBaseTableView/Model/TJPBaseSectionModel.h: -------------------------------------------------------------------------------- 1 | // 2 | // TJPBaseSectionModel.h 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/7/24. 6 | // 7 | 8 | #import 9 | #import "TJPBaseSectionModelProtocol.h" 10 | 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | @protocol TJPBaseCellModelProtocol; 14 | 15 | @interface TJPBaseSectionModel : NSObject 16 | 17 | - (instancetype)initWithCellModels:(NSArray >*)cellModels; 18 | 19 | @property (nonatomic, copy) NSString *sectionTitle; 20 | @property (nonatomic, assign) CGFloat sectionHeaderHeight; 21 | @property (nonatomic, assign) CGFloat sectionFooterHeight; 22 | 23 | 24 | @end 25 | 26 | NS_ASSUME_NONNULL_END 27 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/ArchitectureExtensions/VIPER-Integration/VIPER-Demo/Demo/Entity/TJPProductCellModel.h: -------------------------------------------------------------------------------- 1 | // 2 | // TJPProductCellModel.h 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/7/29. 6 | // 7 | 8 | #import "TJPBaseCellModel.h" 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @interface TJPProductCellModel : TJPBaseCellModel 13 | 14 | @property (nonatomic, copy) NSString *productId; 15 | 16 | @property (nonatomic, copy) NSString *name; 17 | @property (nonatomic, assign) CGFloat price; 18 | @property (nonatomic, assign) CGFloat originalPrice; 19 | @property (nonatomic, copy) NSString *imageUrl; 20 | @property (nonatomic, assign) CGFloat rating; 21 | @property (nonatomic, assign) NSInteger sales; 22 | @property (nonatomic, strong) NSArray *tags; 23 | 24 | @end 25 | 26 | NS_ASSUME_NONNULL_END 27 | -------------------------------------------------------------------------------- /Pods/Typhoon/Source/Definition/Namespacing/TyphoonDefinitionNamespace.h: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // TYPHOON FRAMEWORK 4 | // Copyright 2015, Typhoon Framework Contributors 5 | // All Rights Reserved. 6 | // 7 | // NOTICE: The authors permit you to use, modify, and distribute this file 8 | // in accordance with the terms of the license agreement accompanying it. 9 | // 10 | //////////////////////////////////////////////////////////////////////////////// 11 | 12 | #import 13 | 14 | @interface TyphoonDefinitionNamespace : NSObject 15 | 16 | + (instancetype)namespaceWithKey:(NSString *)key; 17 | + (instancetype)globalNamespace; 18 | 19 | @property (strong, nonatomic, readonly) NSString *key; 20 | 21 | - (BOOL)isGlobalNamespace; 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /Pods/ReactiveObjC/ReactiveObjC/NSString+RACSupport.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSString+RACSupport.h 3 | // ReactiveObjC 4 | // 5 | // Created by Josh Abernathy on 5/11/12. 6 | // Copyright (c) 2012 GitHub, Inc. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class RACScheduler; 12 | @class RACSignal<__covariant ValueType>; 13 | 14 | NS_ASSUME_NONNULL_BEGIN 15 | 16 | @interface NSString (RACSupport) 17 | 18 | // Reads in the contents of the file using +[NSString stringWithContentsOfURL:usedEncoding:error:]. 19 | // Note that encoding won't be valid until the signal completes successfully. 20 | // 21 | // scheduler - cannot be nil. 22 | + (RACSignal *)rac_readContentsOfURL:(NSURL *)URL usedEncoding:(NSStringEncoding *)encoding scheduler:(RACScheduler *)scheduler; 23 | 24 | @end 25 | 26 | NS_ASSUME_NONNULL_END 27 | -------------------------------------------------------------------------------- /Pods/Typhoon/Source/Definition/Injections/TyphoonInjectionByRuntimeArgument.h: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // TYPHOON FRAMEWORK 4 | // Copyright 2013, Typhoon Framework Contributors 5 | // All Rights Reserved. 6 | // 7 | // NOTICE: The authors permit you to use, modify, and distribute this file 8 | // in accordance with the terms of the license agreement accompanying it. 9 | // 10 | //////////////////////////////////////////////////////////////////////////////// 11 | 12 | #import "TyphoonAbstractInjection.h" 13 | 14 | @interface TyphoonInjectionByRuntimeArgument : TyphoonAbstractInjection 15 | 16 | @property(nonatomic, readonly) NSUInteger runtimeArgumentIndex; 17 | 18 | /* index is zero-based */ 19 | - (instancetype)initWithArgumentIndex:(NSUInteger)index; 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/CoreNetworkStack/TJPIMCore/Error/TJPNETError.h: -------------------------------------------------------------------------------- 1 | // 2 | // TJPNETError.h 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/3/19. 6 | // 7 | 8 | #import 9 | 10 | typedef NS_ENUM(NSInteger, TJPNETErrorCode) { 11 | TJPNETErrorConnectionFailed = 1000, // 连接失败 12 | TJPNETErrorHeartbeatTimeout, // 心跳超时 13 | TJPNETErrorInvalidProtocol, // 协议错误(魔数校验失败) 14 | TJPNETErrorSSLHandshakeFailed, // SSL握手失败 15 | TJPNETErrorDataCorrupted, // 数据校验失败 16 | TJPNETErrorACKTimeout // ACK确认超时 17 | }; 18 | 19 | NS_ASSUME_NONNULL_BEGIN 20 | 21 | @interface TJPNETError : NSError 22 | 23 | + (instancetype)errorWithCode:(TJPNETErrorCode)code userInfo:(NSDictionary *)dict; 24 | 25 | 26 | @end 27 | 28 | NS_ASSUME_NONNULL_END 29 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/ProductionBridge/VIPER-Sample/MessageModule/Manager/TJPMessageTimeoutManager.h: -------------------------------------------------------------------------------- 1 | // 2 | // TJPMessageTimeoutManager.h 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/6/26. 6 | // 7 | 8 | #import 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | @class TJPChatMessage; 12 | 13 | @interface TJPMessageTimeoutManager : NSObject 14 | 15 | // 存储所有正在发送的消息 16 | @property (nonatomic, strong) NSMutableArray *pendingMessages; 17 | // 统一处理定时器 18 | @property (nonatomic, strong) dispatch_source_t timeoutTimer; 19 | 20 | + (instancetype)sharedManager; 21 | - (void)addMessageForTimeoutCheck:(TJPChatMessage *)message; 22 | - (void)removeMessageFromTimeoutCheck:(TJPChatMessage *)message; 23 | // 定时检查消息超时 24 | - (void)checkMessagesTimeout; 25 | 26 | @end 27 | 28 | NS_ASSUME_NONNULL_END 29 | -------------------------------------------------------------------------------- /Podfile: -------------------------------------------------------------------------------- 1 | # Uncomment the next line to define a global platform for your project 2 | # platform :ios, '9.0' 3 | 4 | target 'iOS-Network-Stack-Dive' do 5 | # Comment the next line if you don't want to use dynamic frameworks 6 | use_frameworks! 7 | 8 | # Pods for iOS-Network-Stack-Dive 9 | pod 'CocoaAsyncSocket' 10 | pod 'Reachability', '3.7.5' 11 | # pod 'libffi-ios-latest', :git => 'https://github.com/codeacmen/libffi-ios-latest.git', :tag => '3.4.0-fix' 12 | 13 | pod 'ReactiveObjC' 14 | pod 'Typhoon' 15 | 16 | 17 | #UI pod 18 | # pod 'MJRefresh' 19 | pod 'DZNEmptyDataSet' 20 | pod 'Masonry' 21 | pod 'SDWebImage' 22 | # pod 'YYKit' 23 | pod 'YYModel' 24 | 25 | 26 | target 'iOS-Network-Stack-DiveTests' do 27 | inherit! :search_paths 28 | 29 | #Mock pod 30 | pod 'OCMock' 31 | end 32 | 33 | end 34 | -------------------------------------------------------------------------------- /Pods/Target Support Files/CocoaAsyncSocket/CocoaAsyncSocket.debug.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/CocoaAsyncSocket 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | OTHER_LDFLAGS = $(inherited) -framework "CFNetwork" -framework "Security" 5 | PODS_BUILD_DIR = ${BUILD_DIR} 6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} 8 | PODS_ROOT = ${SRCROOT} 9 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/CocoaAsyncSocket 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/Typhoon/Source/ios/Storyboard/Internal/UIViewController+TyphoonStoryboardIntegration.h: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // TYPHOON FRAMEWORK 4 | // Copyright 2015, Typhoon Framework Contributors 5 | // All Rights Reserved. 6 | // 7 | // NOTICE: The authors permit you to use, modify, and distribute this file 8 | // in accordance with the terms of the license agreement accompanying it. 9 | // 10 | //////////////////////////////////////////////////////////////////////////////// 11 | 12 | #import 13 | 14 | @interface UIViewController (TyphoonStoryboardIntegration) 15 | 16 | @property(nonatomic, strong) NSString *typhoonKey; 17 | 18 | - (void)setViewDidLoadNotificationBlock:(void(^)(void))viewDidLoadBlock; 19 | 20 | + (void)swizzleViewDidLoadMethod; 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /Pods/Target Support Files/CocoaAsyncSocket/CocoaAsyncSocket.release.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/CocoaAsyncSocket 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | OTHER_LDFLAGS = $(inherited) -framework "CFNetwork" -framework "Security" 5 | PODS_BUILD_DIR = ${BUILD_DIR} 6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} 8 | PODS_ROOT = ${SRCROOT} 9 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/CocoaAsyncSocket 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/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 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/ArchitectureExtensions/VIPER-Integration/CustomTableViewDemo/TJPViperBaseTableView/Protocol/TJPBaseCellModelProtocol.h: -------------------------------------------------------------------------------- 1 | // 2 | // TJPBaseCellModelProtocol.h 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/3/29. 6 | // 7 | 8 | #import 9 | #import 10 | #import "TJPNavigationDefines.h" 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | //@class TJPNavigationModel; 15 | 16 | @protocol TJPBaseCellModelProtocol 17 | 18 | @property (nonatomic, strong) RACCommand, NSObject*>* selectedCommand; 19 | 20 | //// 返回要跳转的类型 (已废弃) 21 | //- (TJPNavigationType)navigationTypeForModel __deprecated_msg("请使用navigationModelForCell方法"); 22 | 23 | - (NSString *)cellName; 24 | - (CGFloat)cellHeight; 25 | 26 | @end 27 | 28 | NS_ASSUME_NONNULL_END 29 | 30 | -------------------------------------------------------------------------------- /Pods/Typhoon/Source/ios/TypeConversion/Converters/TyphoonUIColorTypeConverter.h: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // TYPHOON FRAMEWORK 4 | // Copyright 2013, Typhoon Framework Contributors 5 | // All Rights Reserved. 6 | // 7 | // NOTICE: The authors permit you to use, modify, and distribute this file 8 | // in accordance with the terms of the license agreement accompanying it. 9 | // 10 | //////////////////////////////////////////////////////////////////////////////// 11 | 12 | 13 | 14 | #import "TyphoonTypeConverter.h" 15 | 16 | /** 17 | * A type converter for UIColor. 18 | * 19 | * The formats supported are: 20 | * Hexadecimal, #RRGGBB or #AARRGGBB 21 | * Css-style, rgb(r,g,b) or rgba(r,g,b,a) 22 | * 23 | */ 24 | @interface TyphoonUIColorTypeConverter : NSObject 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/ArchitectureExtensions/VIPER-Integration/CustomTableViewDemo/TJPViperBaseTableView/Model/TJPBaseCellModel.h: -------------------------------------------------------------------------------- 1 | // 2 | // TJPBaseCellModel.h 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/3/29. 6 | // 7 | 8 | #import 9 | #import "TJPBaseCellModelProtocol.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface TJPBaseCellModel : NSObject 14 | 15 | /// 选中Cell信号 16 | @property (nonatomic, strong) RACCommand* selectedCommand; 17 | /// 是否显示底部线条 18 | @property (nonatomic, assign) BOOL tjp_showBottomLine; 19 | 20 | 21 | /// Cell名称 22 | - (NSString *)cellName; 23 | /// Cell高度 24 | - (CGFloat)cellHeight; 25 | /// 子类实现的计算Cell高度方法 26 | - (CGFloat)calculateCellHeight; 27 | /// 刷新缓存 28 | - (void)invalidateCellHeightCache; 29 | 30 | @end 31 | 32 | NS_ASSUME_NONNULL_END 33 | -------------------------------------------------------------------------------- /iOS-Network-Stack-Dive/ArchitectureExtensions/VIPER-Integration/VIPER-Demo/Demo/View/TJPVIPERDemoViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // TJPVIPERDemoViewController.m 3 | // iOS-Network-Stack-Dive 4 | // 5 | // Created by 唐佳鹏 on 2025/4/1. 6 | // 7 | 8 | #import "TJPVIPERDemoViewController.h" 9 | #import "TJPFPSLabel.h" 10 | 11 | 12 | @interface TJPVIPERDemoViewController () 13 | 14 | @end 15 | 16 | @implementation TJPVIPERDemoViewController 17 | 18 | - (void)dealloc { 19 | NSLog(@"%@ dealloc", NSStringFromClass([self class])); 20 | } 21 | 22 | - (void)viewDidLoad { 23 | [super viewDidLoad]; 24 | TJPFPSLabel *fpsLabel = [[TJPFPSLabel alloc] initWithFrame:CGRectMake(20, 100, 80, 30)]; 25 | [self.view addSubview:fpsLabel]; 26 | 27 | self.title = @"多类型Feed流应用 - VIPER架构实战"; 28 | self.view.backgroundColor = [UIColor whiteColor]; 29 | } 30 | 31 | 32 | @end 33 | -------------------------------------------------------------------------------- /Pods/OCMock/Source/OCMock/OCMExpectationRecorder.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2004-2021 Erik Doernenburg and contributors 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | * not use these files except in compliance with the License. You may obtain 6 | * a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | * License for the specific language governing permissions and limitations 14 | * under the License. 15 | */ 16 | 17 | #import "OCMStubRecorder.h" 18 | 19 | @interface OCMExpectationRecorder : OCMStubRecorder 20 | 21 | - (id)never; 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /Pods/ReactiveObjC/ReactiveObjC/RACReplaySubject.h: -------------------------------------------------------------------------------- 1 | // 2 | // RACReplaySubject.h 3 | // ReactiveObjC 4 | // 5 | // Created by Josh Abernathy on 3/14/12. 6 | // Copyright (c) 2012 GitHub, Inc. All rights reserved. 7 | // 8 | 9 | #import "RACSubject.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | extern const NSUInteger RACReplaySubjectUnlimitedCapacity; 14 | 15 | /// A replay subject saves the values it is sent (up to its defined capacity) 16 | /// and resends those to new subscribers. It will also replay an error or 17 | /// completion. 18 | @interface RACReplaySubject : RACSubject 19 | 20 | /// Creates a new replay subject with the given capacity. A capacity of 21 | /// RACReplaySubjectUnlimitedCapacity means values are never trimmed. 22 | + (instancetype)replaySubjectWithCapacity:(NSUInteger)capacity; 23 | 24 | @end 25 | 26 | NS_ASSUME_NONNULL_END 27 | -------------------------------------------------------------------------------- /Pods/ReactiveObjC/ReactiveObjC/UIBarButtonItem+RACCommandSupport.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIBarButtonItem+RACCommandSupport.h 3 | // ReactiveObjC 4 | // 5 | // Created by Kyle LeNeau on 3/27/13. 6 | // Copyright (c) 2013 GitHub, Inc. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class RACCommand<__contravariant InputType, __covariant ValueType>; 12 | 13 | NS_ASSUME_NONNULL_BEGIN 14 | 15 | @interface UIBarButtonItem (RACCommandSupport) 16 | 17 | /// Sets the control's command. When the control is clicked, the command is 18 | /// executed with the sender of the event. The control's enabledness is bound 19 | /// to the command's `canExecute`. 20 | /// 21 | /// Note: this will reset the control's target and action. 22 | @property (nonatomic, strong, nullable) RACCommand<__kindof UIBarButtonItem *, id> *rac_command; 23 | 24 | @end 25 | 26 | NS_ASSUME_NONNULL_END 27 | -------------------------------------------------------------------------------- /Pods/OCMock/Source/OCMock/OCMArgAction.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015-2021 Erik Doernenburg and contributors 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | * not use these files except in compliance with the License. You may obtain 6 | * a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | * License for the specific language governing permissions and limitations 14 | * under the License. 15 | */ 16 | 17 | #import 18 | 19 | @interface OCMArgAction : NSObject 20 | 21 | - (void)handleArgument:(id)argument; 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /Pods/Typhoon/Source/TypeConversion/Converters/TyphoonPassThroughTypeConverter.h: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // TYPHOON FRAMEWORK 4 | // Copyright 2013, Typhoon Framework Contributors 5 | // All Rights Reserved. 6 | // 7 | // NOTICE: The authors permit you to use, modify, and distribute this file 8 | // in accordance with the terms of the license agreement accompanying it. 9 | // 10 | //////////////////////////////////////////////////////////////////////////////// 11 | 12 | 13 | #import 14 | #import "TyphoonTypeConverter.h" 15 | 16 | /** 17 | * A 'type converter' for NSString and NSMutableString. 18 | */ 19 | @interface TyphoonPassThroughTypeConverter : NSObject 20 | { 21 | BOOL _isMutable; 22 | } 23 | 24 | - (id)initWithIsMutable:(BOOL)isMutable; 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /Pods/ReactiveObjC/ReactiveObjC/UIRefreshControl+RACCommandSupport.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIRefreshControl+RACCommandSupport.h 3 | // ReactiveObjC 4 | // 5 | // Created by Dave Lee on 2013-10-17. 6 | // Copyright (c) 2013 GitHub, Inc. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class RACCommand<__contravariant InputType, __covariant ValueType>; 12 | 13 | NS_ASSUME_NONNULL_BEGIN 14 | 15 | @interface UIRefreshControl (RACCommandSupport) 16 | 17 | /// Manipulate the RACCommand property associated with this refresh control. 18 | /// 19 | /// When this refresh control is activated by the user, the command will be 20 | /// executed. Upon completion or error of the execution signal, -endRefreshing 21 | /// will be invoked. 22 | @property (nonatomic, strong, nullable) RACCommand<__kindof UIRefreshControl *, id> *rac_command; 23 | 24 | @end 25 | 26 | NS_ASSUME_NONNULL_END 27 | -------------------------------------------------------------------------------- /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_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} 9 | PODS_ROOT = ${SRCROOT} 10 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/SDWebImage 11 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 12 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 13 | SKIP_INSTALL = YES 14 | SUPPORTS_MACCATALYST = YES 15 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 16 | -------------------------------------------------------------------------------- /Pods/Typhoon/Source/Factory/Internal/TyphoonMemoryManagementUtils.h: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // TYPHOON FRAMEWORK 4 | // Copyright 2016, Typhoon Framework Contributors 5 | // All Rights Reserved. 6 | // 7 | // NOTICE: The authors permit you to use, modify, and distribute this file 8 | // in accordance with the terms of the license agreement accompanying it. 9 | // 10 | //////////////////////////////////////////////////////////////////////////////// 11 | 12 | 13 | #import 14 | 15 | @class TyphoonComponentFactory; 16 | 17 | @interface TyphoonMemoryManagementUtils : NSObject 18 | 19 | + (void)makeFactory:(TyphoonComponentFactory *)factory retainAssemblies:(NSSet *)assemblies; 20 | 21 | + (void)makeAssemblies:(NSSet *)assemblies retainFactory:(TyphoonComponentFactory *)factory; 22 | 23 | @end 24 | --------------------------------------------------------------------------------