โ”œโ”€โ”€ 1-iOSCocoa๐Ÿ’Ž โ”œโ”€โ”€ SwiftUI โ”‚ โ””โ”€โ”€ ่งฃๆž-SwiftUI็ฌ”่ฎฐ01.md โ”œโ”€โ”€ .DS_Store โ”œโ”€โ”€ ๅ…ถไป– โ”‚ โ”œโ”€โ”€ .DS_Store โ”‚ โ””โ”€โ”€ ่งฃๆž-NSNotification.md โ”œโ”€โ”€ ๅคš็บฟ็จ‹ โ”‚ โ””โ”€โ”€ .DS_Store โ”œโ”€โ”€ ๅบ•ๅฑ‚้‡็‚น็Ÿฅ่ฏ† โ”‚ โ”œโ”€โ”€ .DS_Store โ”‚ โ”œโ”€โ”€ ่งฃๆž-LLVM.md โ”‚ โ””โ”€โ”€ ่งฃๆž-ๅบ•ๅฑ‚ๅŽŸ็†.md โ”œโ”€โ”€ UIKitๆก†ๆžถ โ”‚ โ””โ”€โ”€ ่งฃๆž-UINavigationController.md โ””โ”€โ”€ ๅŠจ็”ป โ”‚ โ””โ”€โ”€ ่งฃๆž-ๆ ธๅฟƒๅŠจ็”ป.md โ”œโ”€โ”€ ไธ‰ๆ–น่ฝฎๅญ่งฃๆž๐Ÿ’ก โ”œโ”€โ”€ ่งฃๆž-QMUIKit.md โ”œโ”€โ”€ .DS_Store โ”œโ”€โ”€ ่งฃๆž-TTTAttributedLabel.md โ”œโ”€โ”€ ่งฃๆž-MagazineLayout.md โ”œโ”€โ”€ ่งฃๆž-JXCategoryView.md โ””โ”€โ”€ ่งฃๆž-YYModel.md โ”œโ”€โ”€ .gitignore โ”œโ”€โ”€ CSๅŸบ็ก€ โ”œโ”€โ”€ .DS_Store โ”œโ”€โ”€ ่งฃๆž-URL็›ธๅ…ณ.md โ””โ”€โ”€ ่งฃๆž-ๆ•ฐๆฎ็ป“ๆž„ โ”‚ โ””โ”€โ”€ ่งฃๆž-ๆ•ฐๆฎ็ป“ๆž„.md โ”œโ”€โ”€ Logs โ”œโ”€โ”€ .DS_Store โ”œโ”€โ”€ DailyLearningLogs2017-05 โ”‚ โ””โ”€โ”€ .DS_Store โ””โ”€โ”€ DailyLearningLogs2017-06 โ”‚ โ””โ”€โ”€ .DS_Store โ”œโ”€โ”€ ๆ€ง่ƒฝไผ˜ๅŒ– โ”œโ”€โ”€ .DS_Store โ””โ”€โ”€ Code-Style.md โ”œโ”€โ”€ ๆ•ฐๆฎๅฎ‰ๅ…จ โ””โ”€โ”€ .DS_Store โ”œโ”€โ”€ ้กน็›ฎ็›ธๅ…ณ โ”œโ”€โ”€ .DS_Store โ””โ”€โ”€ ้กน็›ฎ-App้กน็›ฎ้…็ฝฎ.md โ”œโ”€โ”€ ๆ–‡ๆกฃDocs โ””โ”€โ”€ .DS_Store โ”œโ”€โ”€ ๅญฆไน ๆ—ฅๅฟ—Logs โ”œโ”€โ”€ .DS_Store โ”œโ”€โ”€ DailyLearningLogs2017-06 โ”‚ โ”œโ”€โ”€ DailyLearningLogs2017-06-09.md โ”‚ โ”œโ”€โ”€ DailyLearningLogs2017-06-04.md โ”‚ โ”œโ”€โ”€ DailyLearningLogs2017-06-05.md โ”‚ โ”œโ”€โ”€ DailyLearningLogs2017-06-08.md โ”‚ โ”œโ”€โ”€ DailyLearningLogs2017-06-11.md โ”‚ โ”œโ”€โ”€ DailyLearningLogs2017-06-10.md โ”‚ โ”œโ”€โ”€ DailyLearningLogs2017-06-15.md โ”‚ โ”œโ”€โ”€ DailyLearningLogs2017-06-16.md โ”‚ โ”œโ”€โ”€ DailyLearningLogs2017-06-12.md โ”‚ โ”œโ”€โ”€ DailyLearningLogs2017-06-03.md โ”‚ โ””โ”€โ”€ DailyLearningLogs2017-06-13.md โ”œโ”€โ”€ DailyLearningLogs2017-05 โ”‚ โ”œโ”€โ”€ DailyLearningLogs2017-05-27.md โ”‚ โ”œโ”€โ”€ DailyLearningLogs2017-05-18.md โ”‚ โ”œโ”€โ”€ DailyLearningLogs2017-05-22.md โ”‚ โ”œโ”€โ”€ DailyLearningLogs2017-05-23.md โ”‚ โ”œโ”€โ”€ DailyLearningLogs2017-05-28.md โ”‚ โ”œโ”€โ”€ DailyLearningLogs2017-05-04.md โ”‚ โ”œโ”€โ”€ DailyLearningLogs2017-05-10.md โ”‚ โ”œโ”€โ”€ DailyLearningLogs2017-05-24.md โ”‚ โ”œโ”€โ”€ DailyLearningLogs2017-05-05.md โ”‚ โ”œโ”€โ”€ DailyLearningLogs2017-05-01.md โ”‚ โ”œโ”€โ”€ DailyLearningLogs2017-05-06.md โ”‚ โ”œโ”€โ”€ DailyLearningLogs2017-05-20.md โ”‚ โ”œโ”€โ”€ DailyLearningLogs2017-05-02.md โ”‚ โ”œโ”€โ”€ DailyLearningLogs2017-05-21.md โ”‚ โ””โ”€โ”€ DailyLearningLogs2017-05-19.md โ””โ”€โ”€ DailyLearningLogs2017-04 โ”‚ โ””โ”€โ”€ DailyLearningLogs2017-04-27.md โ”œโ”€โ”€ ็ปƒไน Demos๐Ÿ”จ โ”œโ”€โ”€ .DS_Store โ”œโ”€โ”€ MultiThreadDemo-ๅคš็บฟ็จ‹ โ”‚ โ”œโ”€โ”€ .DS_Store โ”‚ โ”œโ”€โ”€ MultiThreadDemo-ๅคš็บฟ็จ‹ โ”‚ โ”‚ โ”œโ”€โ”€ Assets.xcassets โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ Contents.json โ”‚ โ”‚ โ”œโ”€โ”€ .DS_Store โ”‚ โ”‚ โ”œโ”€โ”€ ViewController.h โ”‚ โ”‚ โ”œโ”€โ”€ AppDelegate.h โ”‚ โ”‚ โ””โ”€โ”€ main.m โ”‚ โ””โ”€โ”€ MultiThreadDemo-ๅคš็บฟ็จ‹.xcodeproj โ”‚ โ”‚ โ”œโ”€โ”€ xcuserdata โ”‚ โ”‚ โ””โ”€โ”€ michaelmao.xcuserdatad โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ xcdebugger โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ Breakpoints_v2.xcbkptlist โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ xcschemes โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ xcschememanagement.plist โ”‚ โ”‚ โ””โ”€โ”€ project.xcworkspace โ”‚ โ”‚ โ”œโ”€โ”€ contents.xcworkspacedata โ”‚ โ”‚ โ””โ”€โ”€ xcshareddata โ”‚ โ”‚ โ””โ”€โ”€ IDEWorkspaceChecks.plist โ”œโ”€โ”€ ๅคš็บฟ็จ‹Demo โ”‚ โ”œโ”€โ”€ ๅคš็บฟ็จ‹Demo โ”‚ โ”‚ โ”œโ”€โ”€ Assets.xcassets โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ Contents.json โ”‚ โ”‚ โ”œโ”€โ”€ ViewController.h โ”‚ โ”‚ โ”œโ”€โ”€ AppDelegate.h โ”‚ โ”‚ โ”œโ”€โ”€ main.m โ”‚ โ”‚ โ””โ”€โ”€ ViewController.m โ”‚ โ””โ”€โ”€ ๅคš็บฟ็จ‹Demo.xcodeproj โ”‚ โ”‚ โ”œโ”€โ”€ project.xcworkspace โ”‚ โ”‚ โ”œโ”€โ”€ contents.xcworkspacedata โ”‚ โ”‚ โ””โ”€โ”€ xcshareddata โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ IDEWorkspaceChecks.plist โ”‚ โ”‚ โ””โ”€โ”€ xcuserdata โ”‚ โ”‚ โ””โ”€โ”€ michaelmao.xcuserdatad โ”‚ โ”‚ โ””โ”€โ”€ xcschemes โ”‚ โ”‚ โ””โ”€โ”€ xcschememanagement.plist โ”œโ”€โ”€ HttpDemo โ”‚ โ”œโ”€โ”€ HttpDemo โ”‚ โ”‚ โ”œโ”€โ”€ Assets.xcassets โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ Contents.json โ”‚ โ”‚ โ”œโ”€โ”€ ViewController.h โ”‚ โ”‚ โ”œโ”€โ”€ AppDelegate.h โ”‚ โ”‚ โ””โ”€โ”€ main.m โ”‚ โ”œโ”€โ”€ HttpDemo.xcodeproj โ”‚ โ”‚ โ””โ”€โ”€ project.xcworkspace โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ contents.xcworkspacedata โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ xcshareddata โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ IDEWorkspaceChecks.plist โ”‚ โ”œโ”€โ”€ HttpDemo.xcworkspace โ”‚ โ”‚ โ”œโ”€โ”€ contents.xcworkspacedata โ”‚ โ”‚ โ””โ”€โ”€ xcshareddata โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ IDEWorkspaceChecks.plist โ”‚ โ””โ”€โ”€ Podfile โ”œโ”€โ”€ RuntimeDemo โ”‚ โ”œโ”€โ”€ RuntimeDemo โ”‚ โ”‚ โ”œโ”€โ”€ Assets.xcassets โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ Contents.json โ”‚ โ”‚ โ”œโ”€โ”€ User.m โ”‚ โ”‚ โ”œโ”€โ”€ ViewController.h โ”‚ โ”‚ โ”œโ”€โ”€ NSObject+Model.h โ”‚ โ”‚ โ”œโ”€โ”€ AppDelegate.h โ”‚ โ”‚ โ”œโ”€โ”€ main.m โ”‚ โ”‚ โ”œโ”€โ”€ Person+appendName.h โ”‚ โ”‚ โ”œโ”€โ”€ User.h โ”‚ โ”‚ โ””โ”€โ”€ Person.h โ”‚ โ””โ”€โ”€ RuntimeDemo.xcodeproj โ”‚ โ”‚ โ”œโ”€โ”€ xcuserdata โ”‚ โ”‚ โ””โ”€โ”€ michaelmao.xcuserdatad โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ xcdebugger โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ Breakpoints_v2.xcbkptlist โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ xcschemes โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ xcschememanagement.plist โ”‚ โ”‚ โ””โ”€โ”€ project.xcworkspace โ”‚ โ”‚ โ”œโ”€โ”€ contents.xcworkspacedata โ”‚ โ”‚ โ””โ”€โ”€ xcshareddata โ”‚ โ”‚ โ””โ”€โ”€ IDEWorkspaceChecks.plist โ”œโ”€โ”€ SwiftLearningDemo โ”‚ โ”œโ”€โ”€ SwiftLearningDemo โ”‚ โ”‚ โ”œโ”€โ”€ Assets.xcassets โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ Contents.json โ”‚ โ”‚ โ””โ”€โ”€ ViewController.swift โ”‚ โ”œโ”€โ”€ Pods โ”‚ โ”‚ โ”œโ”€โ”€ Target Support Files โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ pop โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ pop.modulemap โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ pop-dummy.m โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ pop-prefix.pch โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ pop.xcconfig โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ pop-umbrella.h โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ Info.plist โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ RxCocoa โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ RxCocoa.modulemap โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ RxCocoa-dummy.m โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ RxCocoa-prefix.pch โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ RxCocoa-umbrella.h โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ RxCocoa.xcconfig โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ Info.plist โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ RxSwift โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ RxSwift.modulemap โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ RxSwift-dummy.m โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ RxSwift-prefix.pch โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ RxSwift-umbrella.h โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ RxSwift.xcconfig โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ Info.plist โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ Swinject โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ Swinject.modulemap โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ Swinject-dummy.m โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ Swinject-prefix.pch โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ Swinject-umbrella.h โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ Swinject.xcconfig โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ Info.plist โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ Alamofire โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ Alamofire.modulemap โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ Alamofire-dummy.m โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ Alamofire-prefix.pch โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ Alamofire-umbrella.h โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ Alamofire.xcconfig โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ Info.plist โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ Kingfisher โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ Kingfisher.modulemap โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ Kingfisher-dummy.m โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ Kingfisher-prefix.pch โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ Kingfisher-umbrella.h โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ Kingfisher.xcconfig โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ Info.plist โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ Pods-SwiftLearningDemo โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ Pods-SwiftLearningDemo.modulemap โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ Pods-SwiftLearningDemo-dummy.m โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ Pods-SwiftLearningDemo-umbrella.h โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ Info.plist โ”‚ โ”‚ โ”œโ”€โ”€ RxCocoa โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ RxCocoa โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ Runtime โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ _RX.m โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ include โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ RxCocoaRuntime.h โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ _RXDelegateProxy.h โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ _RXKVOObserver.h โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ iOS โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ Events โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ ItemEvents.swift โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ UIImageView+Rx.swift โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ UIProgressView+Rx.swift โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ UIAlertAction+Rx.swift โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ UINavigationItem+Rx.swift โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ UITabBarItem+Rx.swift โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ UIViewController+Rx.swift โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ UIApplication+Rx.swift โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ UISlider+Rx.swift โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ UIRefreshControl+Rx.swift โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ UIActivityIndicatorView+Rx.swift โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ UILabel+Rx.swift โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ Proxies โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ RxTableViewDelegateProxy.swift โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ RxCollectionViewDelegateProxy.swift โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ RxWebViewDelegateProxy.swift โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ Protocols โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ RxPickerViewDataSourceType.swift โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ RxTableViewDataSourceType.swift โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ RxCollectionViewDataSourceType.swift โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ UIPageControl+Rx.swift โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ UIStepper+Rx.swift โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ UIView+Rx.swift โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ UISwitch+Rx.swift โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ RxCocoa.h โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ Traits โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ Driver โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ BehaviorRelay+Driver.swift โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ ControlEvent+Driver.swift โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ ControlProperty+Driver.swift โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ Signal โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ PublishRelay+Signal.swift โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ ControlEvent+Signal.swift โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ Foundation โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ Logging.swift โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ KVORepresentable.swift โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ Common โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ SectionedViewDataSourceType.swift โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ RxTarget.swift โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ NSLayoutConstraint+Rx.swift โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ Platform โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ DispatchQueue+Extensions.swift โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ DataStructures โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ InfiniteSequence.swift โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ RecursiveLock.swift โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ LICENSE.md โ”‚ โ”‚ โ”œโ”€โ”€ Swinject โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ Sources โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ FunctionType.swift โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ SpinLock.swift โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ Swinject.h โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ GraphIdentifier.swift โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ Container.Logging.swift โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ UnavailableItems.swift โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ Behavior.swift โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ Assembly.swift โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ LICENSE.txt โ”‚ โ”‚ โ”œโ”€โ”€ RxSwift โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ RxSwift โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ Disposable.swift โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ Schedulers โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ Internal โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ ScheduledItemType.swift โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ InvocableType.swift โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ InvocableScheduledItem.swift โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ ScheduledItem.swift โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ HistoricalScheduler.swift โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ Disposables โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ Disposables.swift โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ DisposeBase.swift โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ SubscriptionDisposable.swift โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ NopDisposable.swift โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ BooleanDisposable.swift โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ Cancelable.swift โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ Concurrency โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ SynchronizedUnsubscribeType.swift โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ LockOwnerType.swift โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ SynchronizedDisposeType.swift โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ SynchronizedOnType.swift โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ Lock.swift โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ ObservableConvertibleType.swift โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ Extensions โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ String+Rx.swift โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ RxMutableBox.swift โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ Subjects โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ SubjectType.swift โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ SwiftSupport โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ SwiftSupport.swift โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ ConnectableObservableType.swift โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ Observers โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ AnonymousObserver.swift โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ ObserverBase.swift โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ Observables โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ Never.swift โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ Empty.swift โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ Error.swift โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ Platform โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ DispatchQueue+Extensions.swift โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ DataStructures โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ InfiniteSequence.swift โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ RecursiveLock.swift โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ LICENSE.md โ”‚ โ”‚ โ”œโ”€โ”€ pop โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ pop โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ POPAnimatablePropertyTypes.h โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ POPAnimationPrivate.h โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ POP.h โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ POPDefines.h โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ POPAnimationEventInternal.h โ”‚ โ”‚ โ”œโ”€โ”€ Manifest.lock โ”‚ โ”‚ โ”œโ”€โ”€ Kingfisher โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ LICENSE โ”‚ โ”‚ โ””โ”€โ”€ Alamofire โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ LICENSE โ”‚ โ”œโ”€โ”€ SwiftLearningDemo.xcworkspace โ”‚ โ”‚ โ”œโ”€โ”€ xcuserdata โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ michaelmao.xcuserdatad โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ xcdebugger โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ Breakpoints_v2.xcbkptlist โ”‚ โ”‚ โ”œโ”€โ”€ contents.xcworkspacedata โ”‚ โ”‚ โ””โ”€โ”€ xcshareddata โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ IDEWorkspaceChecks.plist โ”‚ โ”œโ”€โ”€ SwiftLearningDemo.xcodeproj โ”‚ โ”‚ โ”œโ”€โ”€ project.xcworkspace โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ contents.xcworkspacedata โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ xcshareddata โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ IDEWorkspaceChecks.plist โ”‚ โ”‚ โ””โ”€โ”€ xcuserdata โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ michaelmao.xcuserdatad โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ xcschemes โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ xcschememanagement.plist โ”‚ โ””โ”€โ”€ Podfile โ”œโ”€โ”€ Memory-RetainCycleDemo โ”‚ โ”œโ”€โ”€ Memory-RetainCycleDemo โ”‚ โ”‚ โ”œโ”€โ”€ Assets.xcassets โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ Contents.json โ”‚ โ”‚ โ”œโ”€โ”€ ViewController.h โ”‚ โ”‚ โ”œโ”€โ”€ NextVC.h โ”‚ โ”‚ โ”œโ”€โ”€ AppDelegate.h โ”‚ โ”‚ โ”œโ”€โ”€ main.m โ”‚ โ”‚ โ””โ”€โ”€ ViewController.m โ”‚ โ””โ”€โ”€ Memory-RetainCycleDemo.xcodeproj โ”‚ โ”‚ โ”œโ”€โ”€ project.xcworkspace โ”‚ โ”‚ โ”œโ”€โ”€ contents.xcworkspacedata โ”‚ โ”‚ โ””โ”€โ”€ xcshareddata โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ IDEWorkspaceChecks.plist โ”‚ โ”‚ โ””โ”€โ”€ xcuserdata โ”‚ โ”‚ โ””โ”€โ”€ michaelmao.xcuserdatad โ”‚ โ”‚ โ””โ”€โ”€ xcschemes โ”‚ โ”‚ โ””โ”€โ”€ xcschememanagement.plist โ”œโ”€โ”€ Notification โ”‚ โ”œโ”€โ”€ Notification.xcodeproj โ”‚ โ”‚ โ”œโ”€โ”€ xcuserdata โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ michaelmao.xcuserdatad โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ xcdebugger โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ Breakpoints_v2.xcbkptlist โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ xcschemes โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ xcschememanagement.plist โ”‚ โ”‚ โ””โ”€โ”€ project.xcworkspace โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ contents.xcworkspacedata โ”‚ โ””โ”€โ”€ Notification โ”‚ โ”‚ โ”œโ”€โ”€ Notification.entitlements โ”‚ โ”‚ โ”œโ”€โ”€ ViewController.h โ”‚ โ”‚ โ”œโ”€โ”€ AppDelegate.h โ”‚ โ”‚ โ””โ”€โ”€ main.m โ”œโ”€โ”€ MMPageViewController โ”‚ โ”œโ”€โ”€ MMPageViewController.xcodeproj โ”‚ โ”‚ โ”œโ”€โ”€ xcuserdata โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ michaelmao.xcuserdatad โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ xcdebugger โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ Breakpoints_v2.xcbkptlist โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ xcschemes โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ xcschememanagement.plist โ”‚ โ”‚ โ””โ”€โ”€ project.xcworkspace โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ contents.xcworkspacedata โ”‚ โ”œโ”€โ”€ MMPageViewController โ”‚ โ”‚ โ”œโ”€โ”€ Library โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ 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 โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ MJRefreshHeader.h โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ Custom โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ Footer โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ Auto โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ MJRefreshAutoNormalFooter.h โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ MJRefreshAutoGifFooter.h โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ MJRefreshAutoStateFooter.h โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ Back โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ MJRefreshBackNormalFooter.h โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ MJRefreshBackGifFooter.h โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ MJRefreshBackStateFooter.h โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ Header โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ MJRefreshNormalHeader.h โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ MJRefreshGifHeader.h โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ MJRefreshStateHeader.h โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ NSBundle+MJRefresh.h โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ MJRefresh.h โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ UIView+MJExtension.h โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ UIScrollView+MJExtension.h โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ UIScrollView+MJRefresh.h โ”‚ โ”‚ โ”œโ”€โ”€ HomeViewController.h โ”‚ โ”‚ โ”œโ”€โ”€ AppDelegate.h โ”‚ โ”‚ โ”œโ”€โ”€ main.m โ”‚ โ”‚ โ”œโ”€โ”€ ChildViewController.h โ”‚ โ”‚ โ””โ”€โ”€ MMPageViewController_PrefixHeader.pch โ”‚ โ””โ”€โ”€ README.md โ”œโ”€โ”€ ็ฎ—ๆณ•Demo โ”‚ โ””โ”€โ”€ ๆŽ’ๅบ โ”‚ โ”‚ โ””โ”€โ”€ BubbleSortDemo โ”‚ โ”‚ โ””โ”€โ”€ BubbleSortDemo.xcodeproj โ”‚ โ”‚ โ”œโ”€โ”€ xcuserdata โ”‚ โ”‚ โ””โ”€โ”€ michaelmao.xcuserdatad โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ xcdebugger โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ Breakpoints_v2.xcbkptlist โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ xcschemes โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ xcschememanagement.plist โ”‚ โ”‚ โ””โ”€โ”€ project.xcworkspace โ”‚ โ”‚ โ”œโ”€โ”€ contents.xcworkspacedata โ”‚ โ”‚ โ””โ”€โ”€ xcshareddata โ”‚ โ”‚ โ””โ”€โ”€ IDEWorkspaceChecks.plist โ”œโ”€โ”€ BlockDeomo โ”‚ โ”œโ”€โ”€ BlockDeomo.xcodeproj โ”‚ โ”‚ โ”œโ”€โ”€ project.xcworkspace โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ contents.xcworkspacedata โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ xcshareddata โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ IDEWorkspaceChecks.plist โ”‚ โ”‚ โ””โ”€โ”€ xcuserdata โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ michaelmao.xcuserdatad โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ xcschemes โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ xcschememanagement.plist โ”‚ โ””โ”€โ”€ BlockDeomo โ”‚ โ”‚ โ”œโ”€โ”€ Person.h โ”‚ โ”‚ โ”œโ”€โ”€ ViewController.h โ”‚ โ”‚ โ”œโ”€โ”€ AppDelegate.h โ”‚ โ”‚ โ”œโ”€โ”€ main.m โ”‚ โ”‚ โ””โ”€โ”€ Person.m โ”œโ”€โ”€ iOS-Protocol โ”‚ โ”œโ”€โ”€ Protocol-01.xcodeproj โ”‚ โ”‚ โ”œโ”€โ”€ project.xcworkspace โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ contents.xcworkspacedata โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ xcshareddata โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ IDEWorkspaceChecks.plist โ”‚ โ”‚ โ””โ”€โ”€ xcuserdata โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ michaelmao.xcuserdatad โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ xcschemes โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ xcschememanagement.plist โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ mzn.xcuserdatad โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ xcschemes โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ xcschememanagement.plist โ”‚ โ””โ”€โ”€ Protocol-01 โ”‚ โ”‚ โ”œโ”€โ”€ Dog โ”‚ โ”‚ โ”œโ”€โ”€ Hasiqi+MZ.h โ”‚ โ”‚ โ”œโ”€โ”€ Hasiqi+MZ.m โ”‚ โ”‚ โ”œโ”€โ”€ Dog.m โ”‚ โ”‚ โ”œโ”€โ”€ Dog.h โ”‚ โ”‚ โ”œโ”€โ”€ Hasiqi.m โ”‚ โ”‚ โ””โ”€โ”€ Hasiqi.h โ”‚ โ”‚ โ”œโ”€โ”€ Protocol โ”‚ โ”‚ โ”œโ”€โ”€ MyProtocol2.h โ”‚ โ”‚ โ”œโ”€โ”€ MyProtocol3.h โ”‚ โ”‚ โ”œโ”€โ”€ TicketDelegate.h โ”‚ โ”‚ โ””โ”€โ”€ MyProtocol.h โ”‚ โ”‚ โ”œโ”€โ”€ Agent2.m โ”‚ โ”‚ โ”œโ”€โ”€ Agent.m โ”‚ โ”‚ โ”œโ”€โ”€ Agent.h โ”‚ โ”‚ โ”œโ”€โ”€ Agent2.h โ”‚ โ”‚ โ””โ”€โ”€ Person.m โ””โ”€โ”€ Demos โ”‚ โ”œโ”€โ”€ HttpDemo โ”‚ โ””โ”€โ”€ Podfile.lock โ”‚ โ””โ”€โ”€ Multithreading-Semaphore โ”‚ โ””โ”€โ”€ Podfile.lock โ”œโ”€โ”€ ๅผ€ๅ‘ๅทฅๅ…ทTool๐Ÿ”ง โ”œโ”€โ”€ .DS_Store โ”œโ”€โ”€ ๅทฅๅ…ท-AwesomeDevTools.md โ”œโ”€โ”€ ๅทฅๅ…ท-Appๆ€ง่ƒฝๆฃ€ๆต‹ๅทฅๅ…ท.md โ”œโ”€โ”€ ๅทฅๅ…ท-Reveal่ฐƒ่ฏ•ๆ•™็จ‹.md โ”œโ”€โ”€ ๅทฅๅ…ท-UITesting.md โ”œโ”€โ”€ ๅทฅๅ…ท-Mockๅญฆไน .md โ”œโ”€โ”€ ๅทฅๅ…ท-Instrumentsๅญฆไน .md โ”œโ”€โ”€ ๅทฅๅ…ท-Sourcery็”ŸๆˆSwiftไปฃ็ .md โ”œโ”€โ”€ ๅทฅๅ…ท-ๅผ€ๅ‘DebugTool.md โ””โ”€โ”€ ๅทฅๅ…ท-UMLๅ›พ่งฃ.md โ”œโ”€โ”€ ๅคงๅ‰็ซฏโค๏ธ โ”œโ”€โ”€ ่งฃๆž-ๅ‰็ซฏ่ต„ๆบ.md โ”œโ”€โ”€ ่งฃๆž-Redux.md โ””โ”€โ”€ Flutter๐Ÿฆ โ”‚ โ””โ”€โ”€ Awe-Flutter-Tool.md โ”œโ”€โ”€ .MWebMetaData โ””โ”€โ”€ setting.json โ”œโ”€โ”€ ้˜…่ฏป็ฌ”่ฎฐ โ”œโ”€โ”€ ๆ•™็จ‹ๅ…ฌๅผ€่ฏพ.md โ””โ”€โ”€ ๆ•ดไฝ“ๅญฆไน ๆณ•่ฏปไนฆ็ฌ”่ฎฐ.md โ”œโ”€โ”€ .github โ””โ”€โ”€ ISSUE_TEMPLATE โ”‚ โ””โ”€โ”€ feature-request.md โ”œโ”€โ”€ Rustๅญฆไน  โ””โ”€โ”€ ่งฃๆž-Rustๅญฆไน ็›ฎๅฝ•.md โ”œโ”€โ”€ ้ข่ฏ•้ข˜ โ””โ”€โ”€ iOS ๅฅฝ้ข˜.md โ”œโ”€โ”€ .obsidian โ””โ”€โ”€ config โ”œโ”€โ”€ SideProject โ””โ”€โ”€ AweKeep โ”‚ โ””โ”€โ”€ AweKeep-ๅˆ†ๆž.md โ”œโ”€โ”€ UnitTest โ”œโ”€โ”€ ่งฃๆž-UnitTest.md โ””โ”€โ”€ UnitTest.md โ”œโ”€โ”€ ่ฎพ่ฎกๆจกๅผ โ””โ”€โ”€ ่งฃๆž-ๅญๆŽงๅˆถๅ™จChildVC.md โ””โ”€โ”€ LICENSE /1-iOSCocoa๐Ÿ’Ž/SwiftUI/่งฃๆž-SwiftUI็ฌ”่ฎฐ01.md: -------------------------------------------------------------------------------- 1 | # ่งฃๆž-SwiftUI็ฌ”่ฎฐ01 2 | 3 | -------------------------------------------------------------------------------- /ไธ‰ๆ–น่ฝฎๅญ่งฃๆž๐Ÿ’ก/่งฃๆž-QMUIKit.md: -------------------------------------------------------------------------------- 1 | # ่งฃๆž-QMUIKit 2 | 3 | 4 | 5 | ## ๅ‚่€ƒ 6 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | *.xcuserstate 3 | .DS_Store 4 | .DS_Store? 5 | .DS_Store 6 | -------------------------------------------------------------------------------- /CSๅŸบ็ก€/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FrizzleFur/DailyLearning/HEAD/CSๅŸบ็ก€/.DS_Store -------------------------------------------------------------------------------- /Logs/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FrizzleFur/DailyLearning/HEAD/Logs/.DS_Store -------------------------------------------------------------------------------- /ๆ€ง่ƒฝไผ˜ๅŒ–/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FrizzleFur/DailyLearning/HEAD/ๆ€ง่ƒฝไผ˜ๅŒ–/.DS_Store -------------------------------------------------------------------------------- /ๆ•ฐๆฎๅฎ‰ๅ…จ/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FrizzleFur/DailyLearning/HEAD/ๆ•ฐๆฎๅฎ‰ๅ…จ/.DS_Store -------------------------------------------------------------------------------- /้กน็›ฎ็›ธๅ…ณ/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FrizzleFur/DailyLearning/HEAD/้กน็›ฎ็›ธๅ…ณ/.DS_Store -------------------------------------------------------------------------------- /ๆ–‡ๆกฃDocs/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FrizzleFur/DailyLearning/HEAD/ๆ–‡ๆกฃDocs/.DS_Store -------------------------------------------------------------------------------- /ไธ‰ๆ–น่ฝฎๅญ่งฃๆž๐Ÿ’ก/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FrizzleFur/DailyLearning/HEAD/ไธ‰ๆ–น่ฝฎๅญ่งฃๆž๐Ÿ’ก/.DS_Store -------------------------------------------------------------------------------- /ๅญฆไน ๆ—ฅๅฟ—Logs/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FrizzleFur/DailyLearning/HEAD/ๅญฆไน ๆ—ฅๅฟ—Logs/.DS_Store -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FrizzleFur/DailyLearning/HEAD/็ปƒไน Demos๐Ÿ”จ/.DS_Store -------------------------------------------------------------------------------- /ๅผ€ๅ‘ๅทฅๅ…ทTool๐Ÿ”ง/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FrizzleFur/DailyLearning/HEAD/ๅผ€ๅ‘ๅทฅๅ…ทTool๐Ÿ”ง/.DS_Store -------------------------------------------------------------------------------- /1-iOSCocoa๐Ÿ’Ž/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FrizzleFur/DailyLearning/HEAD/1-iOSCocoa๐Ÿ’Ž/.DS_Store -------------------------------------------------------------------------------- /1-iOSCocoa๐Ÿ’Ž/ๅ…ถไป–/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FrizzleFur/DailyLearning/HEAD/1-iOSCocoa๐Ÿ’Ž/ๅ…ถไป–/.DS_Store -------------------------------------------------------------------------------- /1-iOSCocoa๐Ÿ’Ž/ๅคš็บฟ็จ‹/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FrizzleFur/DailyLearning/HEAD/1-iOSCocoa๐Ÿ’Ž/ๅคš็บฟ็จ‹/.DS_Store -------------------------------------------------------------------------------- /1-iOSCocoa๐Ÿ’Ž/ๅบ•ๅฑ‚้‡็‚น็Ÿฅ่ฏ†/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FrizzleFur/DailyLearning/HEAD/1-iOSCocoa๐Ÿ’Ž/ๅบ•ๅฑ‚้‡็‚น็Ÿฅ่ฏ†/.DS_Store -------------------------------------------------------------------------------- /Logs/DailyLearningLogs2017-05/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FrizzleFur/DailyLearning/HEAD/Logs/DailyLearningLogs2017-05/.DS_Store -------------------------------------------------------------------------------- /Logs/DailyLearningLogs2017-06/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FrizzleFur/DailyLearning/HEAD/Logs/DailyLearningLogs2017-06/.DS_Store -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/MultiThreadDemo-ๅคš็บฟ็จ‹/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FrizzleFur/DailyLearning/HEAD/็ปƒไน Demos๐Ÿ”จ/MultiThreadDemo-ๅคš็บฟ็จ‹/.DS_Store -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/ๅคš็บฟ็จ‹Demo/ๅคš็บฟ็จ‹Demo/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/HttpDemo/HttpDemo/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/RuntimeDemo/RuntimeDemo/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/SwiftLearningDemo/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/MultiThreadDemo-ๅคš็บฟ็จ‹/MultiThreadDemo-ๅคš็บฟ็จ‹/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /ๅคงๅ‰็ซฏโค๏ธ/่งฃๆž-ๅ‰็ซฏ่ต„ๆบ.md: -------------------------------------------------------------------------------- 1 | # ่งฃๆž-ๅ‰็ซฏ่ต„ๆบ 2 | 3 | 4 | 5 | 6 | ## ๅ‚่€ƒ 7 | 8 | * [2019ๆ–ฐ็‰ˆๅ‰็ซฏไธŽ็งปๅŠจๅผ€ๅ‘ๅญฆไน ่ทฏ็บฟๅ›พ๏ผˆ่ง†้ข‘+ๅทฅๅ…ท+ไนฆ็ฑ+่ต„ๆบ๏ผ‰-้ป‘้ฉฌ็จ‹ๅบๅ‘˜ๆŠ€ๆœฏไบคๆต็คพๅŒบ](http://bbs.itheima.com/thread-391250-1-1.html) 9 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/Memory-RetainCycleDemo/Memory-RetainCycleDemo/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /ๅญฆไน ๆ—ฅๅฟ—Logs/DailyLearningLogs2017-06/DailyLearningLogs2017-06-09.md: -------------------------------------------------------------------------------- 1 | # DailyLearningLogs 2017-06-09 2 | 3 | ## Todo 4 | 5 | ## Done 6 | - [x] SDWebImage (2017-06-09) 7 | 8 | 9 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/MultiThreadDemo-ๅคš็บฟ็จ‹/MultiThreadDemo-ๅคš็บฟ็จ‹/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FrizzleFur/DailyLearning/HEAD/็ปƒไน Demos๐Ÿ”จ/MultiThreadDemo-ๅคš็บฟ็จ‹/MultiThreadDemo-ๅคš็บฟ็จ‹/.DS_Store -------------------------------------------------------------------------------- /ๅญฆไน ๆ—ฅๅฟ—Logs/DailyLearningLogs2017-05/DailyLearningLogs2017-05-27.md: -------------------------------------------------------------------------------- 1 | # DailyLearningLogs 2017-05-27 2 | 3 | ## Todo 4 | 5 | ## Done 6 | 7 | - [x] ๅ‘็Žฐ็š„ๅดฉๆบƒ 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/Target Support Files/pop/pop.modulemap: -------------------------------------------------------------------------------- 1 | framework module pop { 2 | umbrella header "pop-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /ๅญฆไน ๆ—ฅๅฟ—Logs/DailyLearningLogs2017-06/DailyLearningLogs2017-06-04.md: -------------------------------------------------------------------------------- 1 | # DailyLearningLogs 2017-06-04 2 | 3 | ## Todo 4 | 5 | 6 | 7 | ## Done 8 | 9 | - [x] ็œ‹ๅฎŒReeder (2017-06-05) 10 | 11 | -------------------------------------------------------------------------------- /ๅญฆไน ๆ—ฅๅฟ—Logs/DailyLearningLogs2017-06/DailyLearningLogs2017-06-05.md: -------------------------------------------------------------------------------- 1 | # DailyLearningLogs 2017-06-05 2 | 3 | ## Todo 4 | 5 | 6 | ## Done 7 | - [x] AFNetWorking (2017-06-08) 8 | 9 | 10 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/Target Support Files/pop/pop-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_pop : NSObject 3 | @end 4 | @implementation PodsDummy_pop 5 | @end 6 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/Target Support Files/RxCocoa/RxCocoa.modulemap: -------------------------------------------------------------------------------- 1 | framework module RxCocoa { 2 | umbrella header "RxCocoa-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/Target Support Files/RxSwift/RxSwift.modulemap: -------------------------------------------------------------------------------- 1 | framework module RxSwift { 2 | umbrella header "RxSwift-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/Target Support Files/Swinject/Swinject.modulemap: -------------------------------------------------------------------------------- 1 | framework module Swinject { 2 | umbrella header "Swinject-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/Target Support Files/Alamofire/Alamofire.modulemap: -------------------------------------------------------------------------------- 1 | framework module Alamofire { 2 | umbrella header "Alamofire-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/Target Support Files/RxCocoa/RxCocoa-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_RxCocoa : NSObject 3 | @end 4 | @implementation PodsDummy_RxCocoa 5 | @end 6 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/Target Support Files/RxSwift/RxSwift-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_RxSwift : NSObject 3 | @end 4 | @implementation PodsDummy_RxSwift 5 | @end 6 | -------------------------------------------------------------------------------- /้กน็›ฎ็›ธๅ…ณ/้กน็›ฎ-App้กน็›ฎ้…็ฝฎ.md: -------------------------------------------------------------------------------- 1 | # ้กน็›ฎ-App้กน็›ฎ้…็ฝฎ 2 | 3 | * ๅ…ฌๅ…ฑๅคดๆ–‡ไปถPublicHeader 4 | * ๅฎๅฎšไน‰ๅคดๆ–‡ไปถ 5 | * prefixHeaderๆ–‡ไปถ 6 | * APP้…็ฝฎConfigๆ–‡ไปถ 7 | * ็ฑปๅž‹ๆžšไธพ 8 | * cocoaPodsๅฏผๅ…ฅๅธธ็”จไธ‰ๆ–นๅบ“ 9 | * UIKitๅˆ†็ฑปๅˆ—่กจ 10 | * ็ฝ‘็ปœ่ฏทๆฑ‚ๅฐ่ฃ… 11 | 12 | -------------------------------------------------------------------------------- /ๅผ€ๅ‘ๅทฅๅ…ทTool๐Ÿ”ง/ๅทฅๅ…ท-AwesomeDevTools.md: -------------------------------------------------------------------------------- 1 | 2 | # ๅทฅๅ…ท-AwesomeDevTools 3 | 4 | 1. [bloomberg/xcdiff: A tool which helps you diff xcodeproj files.](https://github.com/bloomberg/xcdiff) A tool which helps you diff xcodeproj files. 5 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/Target Support Files/Alamofire/Alamofire-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Alamofire : NSObject 3 | @end 4 | @implementation PodsDummy_Alamofire 5 | @end 6 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/Target Support Files/Kingfisher/Kingfisher.modulemap: -------------------------------------------------------------------------------- 1 | framework module Kingfisher { 2 | umbrella header "Kingfisher-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/Target Support Files/Swinject/Swinject-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Swinject : NSObject 3 | @end 4 | @implementation PodsDummy_Swinject 5 | @end 6 | -------------------------------------------------------------------------------- /ๅญฆไน ๆ—ฅๅฟ—Logs/DailyLearningLogs2017-06/DailyLearningLogs2017-06-08.md: -------------------------------------------------------------------------------- 1 | # DailyLearningLogs 2017-06-08 2 | 3 | ## Todo 4 | 5 | ## Done 6 | - [x] AFNetWorking (2017-06-08) 7 | - [x] ใ€Šๅ›พ่งฃ HTTPใ€‹่ฏปไนฆ็ฌ”่ฎฐ (2017-06-08) 8 | 9 | 10 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/Notification/Notification.xcodeproj/xcuserdata/michaelmao.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/RuntimeDemo/RuntimeDemo.xcodeproj/xcuserdata/michaelmao.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/Target Support Files/Kingfisher/Kingfisher-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Kingfisher : NSObject 3 | @end 4 | @implementation PodsDummy_Kingfisher 5 | @end 6 | -------------------------------------------------------------------------------- /ไธ‰ๆ–น่ฝฎๅญ่งฃๆž๐Ÿ’ก/่งฃๆž-TTTAttributedLabel.md: -------------------------------------------------------------------------------- 1 | 2 | ## ่งฃๆž-TTTAttributedLabel 3 | 4 | 5 | ## TTTAttributedLabel 6 | 7 | TTTAttributedLabel ็ปงๆ‰ฟไบŽ UILabel,ๆ‰€ไปฅๅ…ทๆœ‰ UILabel ๆ‰€ๆœ‰็š„ๅฑžๆ€งๅ’Œๆ–นๆณ•ใ€‚้€š่ฟ‡CoreText็ป˜ๅˆถๅฏŒๆ–‡ๆœฌใ€‚ 8 | 9 | 10 | ### TTTAttributedLabelๅ’ŒYYtext -------------------------------------------------------------------------------- /.MWebMetaData/setting.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "DailyLearning", 3 | "fileExtension" : ".md", 4 | "autoUploadInsertedImage" : true, 5 | "folderType" : 10, 6 | "mediaFloder" : "media", 7 | "orderBy" : 0, 8 | "newlinesToBR" : 0 9 | } -------------------------------------------------------------------------------- /CSๅŸบ็ก€/่งฃๆž-URL็›ธๅ…ณ.md: -------------------------------------------------------------------------------- 1 | ## ่งฃๆž-URL็›ธๅ…ณ 2 | 3 | 4 | ### URL็ป“ๆž„ 5 | 6 | ![](https://pic-mike.oss-cn-hongkong.aliyuncs.com/Blog/20191204114023.png) 7 | 8 | 9 | ## ๅ‚่€ƒ 10 | 11 | 1. [URI's fragment - ็ฎ€ไนฆ](https://www.jianshu.com/p/2c07fbb52b45) -------------------------------------------------------------------------------- /ๅผ€ๅ‘ๅทฅๅ…ทTool๐Ÿ”ง/ๅทฅๅ…ท-Appๆ€ง่ƒฝๆฃ€ๆต‹ๅทฅๅ…ท.md: -------------------------------------------------------------------------------- 1 | # Appๆ€ง่ƒฝๆฃ€ๆต‹ๅทฅๅ…ท 2 | 3 | ## Bugly 4 | 5 | 6 | ## OneApm 7 | 8 | * [OneApm](https://www.oneapm.com/) 9 | 10 | 11 | 12 | ## ๅ‚่€ƒ 13 | 14 | 1. [OneAPM ไบ‘็›‘ๆŽง้ƒจ็ฝฒไธŽ่ฏ•็”จไฝ“้ชŒ - ็ฎ€ไนฆ](https://www.jianshu.com/p/9c8fd1bb5dc9) -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/MMPageViewController/MMPageViewController.xcodeproj/xcuserdata/michaelmao.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/MultiThreadDemo-ๅคš็บฟ็จ‹/MultiThreadDemo-ๅคš็บฟ็จ‹.xcodeproj/xcuserdata/michaelmao.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/SwiftLearningDemo.xcworkspace/xcuserdata/michaelmao.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/็ฎ—ๆณ•Demo/ๆŽ’ๅบ/BubbleSortDemo/BubbleSortDemo.xcodeproj/xcuserdata/michaelmao.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/MMPageViewController/MMPageViewController/Library/MJRefresh/MJRefresh.bundle/arrow@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FrizzleFur/DailyLearning/HEAD/็ปƒไน Demos๐Ÿ”จ/MMPageViewController/MMPageViewController/Library/MJRefresh/MJRefresh.bundle/arrow@2x.png -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/HttpDemo/HttpDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/Target Support Files/Pods-SwiftLearningDemo/Pods-SwiftLearningDemo.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_SwiftLearningDemo { 2 | umbrella header "Pods-SwiftLearningDemo-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /ๅญฆไน ๆ—ฅๅฟ—Logs/DailyLearningLogs2017-05/DailyLearningLogs2017-05-18.md: -------------------------------------------------------------------------------- 1 | # DailyLearningLogs 2017-05-18 2 | 3 | 4 | ## Todo 5 | 6 | - [x] ๅˆ—ๅ‡บ้‡็‚นๆจกๅ—็ฑปๅ›พ (2017-05-18) 7 | - [ ] ๆŸฅๆ‰พ้‡็‚นใ€็–‘็‚น 8 | - [ ] ๆ€ป็ป“็–‘็‚น๏ผŒๅนถ่ฎฐๅฝ• 9 | 10 | ## Done 11 | 12 | - [x] ๆ•ด็†้กน็›ฎ็ป“ๆž„ๆจกๅ— (2017-05-18) 13 | 14 | -------------------------------------------------------------------------------- /ๅญฆไน ๆ—ฅๅฟ—Logs/DailyLearningLogs2017-05/DailyLearningLogs2017-05-22.md: -------------------------------------------------------------------------------- 1 | # DailyLearningLogs 2017-05-22 2 | 3 | ## Todo 4 | 5 | ## Done 6 | - [x] ็†Ÿๆ‚‰V2.3๏ผŒ็”ปๅ›พ้œ€ๆฑ‚ๅ›พ๏ผŒๅฝ’็บณ้šพใ€้‡็‚น (2017-05-22) 7 | 8 | - [x] ๅฐ่ฏ•ๅฎŒๆˆ่ฎขๅ•ๅฐ้œ€ๆฑ‚(2017-05-23) 9 | - [x] ๅฐ่ฏ•ๅšๅ‡บๅ•†ๅ“่ฏฆๆƒ…(2017-05-23) 10 | 11 | 12 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/BlockDeomo/BlockDeomo.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/RuntimeDemo/RuntimeDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxCocoa/RxCocoa/Runtime/_RX.m: -------------------------------------------------------------------------------- 1 | // 2 | // _RX.m 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 7/12/15. 6 | // Copyright ยฉ 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #import "include/_RX.h" 10 | 11 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/iOS-Protocol/Protocol-01.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/Notification/Notification.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/Target Support Files/Pods-SwiftLearningDemo/Pods-SwiftLearningDemo-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_SwiftLearningDemo : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_SwiftLearningDemo 5 | @end 6 | -------------------------------------------------------------------------------- /ๅญฆไน ๆ—ฅๅฟ—Logs/DailyLearningLogs2017-05/DailyLearningLogs2017-05-23.md: -------------------------------------------------------------------------------- 1 | # DailyLearningLogs 2017-05-23 2 | 3 | ## Todo 4 | ## Done 5 | - [x] [PART 16: 208: Xcode Tips & Tricks](https://videos.raywenderlich.com/courses/59-rwdevcon-2016-vault/lessons/16)(2017-05-23) 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/RuntimeDemo/RuntimeDemo/User.m: -------------------------------------------------------------------------------- 1 | // 2 | // User.m 3 | // RuntimeDemo 4 | // 5 | // Created by MichaelMao on 2018/9/5. 6 | // Copyright ยฉ 2018ๅนด MichaelMao. All rights reserved. 7 | // 8 | 9 | #import "User.h" 10 | 11 | @implementation User 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/ๅคš็บฟ็จ‹Demo/ๅคš็บฟ็จ‹Demo.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /้˜…่ฏป็ฌ”่ฎฐ/ๆ•™็จ‹ๅ…ฌๅผ€่ฏพ.md: -------------------------------------------------------------------------------- 1 | # ๆ•™็จ‹ๅ…ฌๅผ€่ฏพ 2 | 3 | ## ๆŽ˜้‡‘ 4 | 5 | * [็จ‹ๅบๅ‘˜่Œไธšๅฐ็™ฝไนฆ โ€”โ€” ๅฆ‚ไฝ•่ง„ๅˆ’ๅ’Œ็ป่ฅไฝ ็š„่Œไธš - Easy - ๆŽ˜้‡‘ๅฐๅ†Œ](https://juejin.im/book/59e17a7ff265da430629cc4e) 6 | 7 | * [Git ๅŽŸ็†่ฏฆ่งฃๅŠๅฎž็”จๆŒ‡ๅ— - ๆ‰”็‰ฉ็บฟ - ๆŽ˜้‡‘ๅฐๅ†Œ](https://juejin.im/book/5a124b29f265da431d3c472e/section/5a1e606ef265da431440757e) 8 | 9 | 10 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/iOS-Protocol/Protocol-01/Dog/Hasiqi+MZ.h: -------------------------------------------------------------------------------- 1 | // 2 | // Hasiqi+MZ.h 3 | // Protocol-01 4 | // 5 | // Created by MZN on 15/12/27. 6 | // Copyright ยฉ 2015ๅนด MZN. All rights reserved. 7 | // 8 | 9 | #import "Hasiqi.h" 10 | 11 | @interface Hasiqi (MZ) 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /1-iOSCocoa๐Ÿ’Ž/UIKitๆก†ๆžถ/่งฃๆž-UINavigationController.md: -------------------------------------------------------------------------------- 1 | ## UINavigationControllerๅˆ†ๆž 2 | 3 | 4 | ### topViewController 5 | 6 | ่Žทๅ–ๅฝ“ๅ‰UINavigationControllerๆ ˆ้กถ็š„view controller // The top view controller on the stack. 7 | 8 | 9 | ### viewControllers 10 | // The current view controller stack. -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/MMPageViewController/MMPageViewController/Library/MJRefresh/MJRefresh.bundle/en.lproj/Localizable.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FrizzleFur/DailyLearning/HEAD/็ปƒไน Demos๐Ÿ”จ/MMPageViewController/MMPageViewController/Library/MJRefresh/MJRefresh.bundle/en.lproj/Localizable.strings -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/SwiftLearningDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/็ฎ—ๆณ•Demo/ๆŽ’ๅบ/BubbleSortDemo/BubbleSortDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/iOS-Protocol/Protocol-01/Dog/Hasiqi+MZ.m: -------------------------------------------------------------------------------- 1 | // 2 | // Hasiqi+MZ.m 3 | // Protocol-01 4 | // 5 | // Created by MZN on 15/12/27. 6 | // Copyright ยฉ 2015ๅนด MZN. All rights reserved. 7 | // 8 | 9 | #import "Hasiqi+MZ.h" 10 | 11 | @implementation Hasiqi (MZ) 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/MMPageViewController/MMPageViewController.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/MMPageViewController/MMPageViewController/Library/MJRefresh/MJRefresh.bundle/zh-Hans.lproj/Localizable.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FrizzleFur/DailyLearning/HEAD/็ปƒไน Demos๐Ÿ”จ/MMPageViewController/MMPageViewController/Library/MJRefresh/MJRefresh.bundle/zh-Hans.lproj/Localizable.strings -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/BlockDeomo/BlockDeomo/Person.h: -------------------------------------------------------------------------------- 1 | // 2 | // Person.h 3 | // BlockDeomo 4 | // 5 | // Created by MichaelMao on 17/4/17. 6 | // Copyright ยฉ 2017ๅนด MichaelMao. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface Person : NSObject 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/Memory-RetainCycleDemo/Memory-RetainCycleDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ๅญฆไน ๆ—ฅๅฟ—Logs/DailyLearningLogs2017-06/DailyLearningLogs2017-06-11.md: -------------------------------------------------------------------------------- 1 | # DailyLearningLogs 2017-06-11 2 | 3 | ## Todo 4 | 5 | ## Done 6 | 7 | - [x] Body building~ (2017-06-11) 8 | - [x] ๅฎŒๆˆๅ‘ๅธƒๅ…ฅๅฃ็š„star (2017-06-11) 9 | - [x] ๆŒ็ปญๅ…ณๆณจGirlๅฏน่ฑก (2017-06-11) 10 | - [x] Alfred Workflowๆ•ด็† (2017-06-11) 11 | 12 | 13 | -------------------------------------------------------------------------------- /ๅญฆไน ๆ—ฅๅฟ—Logs/DailyLearningLogs2017-05/DailyLearningLogs2017-05-28.md: -------------------------------------------------------------------------------- 1 | # DailyLearningLogs 2017-05-28 2 | 3 | ## Todo 4 | 5 | - [x] ๆ•ด็†ๆˆฟ้—ด (2017-05-30) 6 | 7 | - [x] ๅค„็†ๅ‰ชๅคดๅ‘๏ผŒๆด—่กฃๆœ๏ผŒๅ…‘ๆขๅˆธ (2017-05-30) 8 | 9 | - [x] ่งฃๅ†ณๅ‘็Žฐ (2017-06-01) 10 | 11 | - [x] ้ฆ–้กต็š„ๅ€’่ฎกๆ—ถ้—ฎ้ข˜ (2017-06-02) 12 | 13 | ## Done 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/MultiThreadDemo-ๅคš็บฟ็จ‹/MultiThreadDemo-ๅคš็บฟ็จ‹.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/iOS-Protocol/Protocol-01/Dog/Dog.m: -------------------------------------------------------------------------------- 1 | // 2 | // Dog.m 3 | // Protocol-01 4 | // 5 | // Created by MZN on 15/12/27. 6 | // Copyright ยฉ 2015ๅนด MZN. All rights reserved. 7 | // 8 | 9 | #import "Dog.h" 10 | 11 | @implementation Dog 12 | 13 | -(void)haha2{ 14 | 15 | 16 | } 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /ๅญฆไน ๆ—ฅๅฟ—Logs/DailyLearningLogs2017-06/DailyLearningLogs2017-06-10.md: -------------------------------------------------------------------------------- 1 | # DailyLearningLogs 2017-06-10 2 | 3 | ## Todo 4 | 5 | ## Done 6 | 7 | - [x] finish the damp request๏ผŒ ็กฎ่ฎคไผ˜ๅ…ˆ็บง๏ผŒ๏ผˆ2017-06-10๏ผ‰ 8 | - [x] ๅฎŒๆˆ่ฏ„่ฎบๆก†ๆžถ๏ผˆ2017-06-10๏ผ‰ 9 | - [x] ๅฎŒๆˆๅ‘ๅธƒๅ…ฅๅฃๆก†ๆžถ๏ผˆ2017-06-10๏ผ‰ 10 | - [x] ๆบœ่พพไธ€ๅœˆ๏ผŒ่ฟ˜้‡ๅˆฐไบ†ไธ€ไธช`Germany`girl.๐Ÿ˜„๏ผˆ2017-06-10๏ผ‰ 11 | 12 | 13 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/MMPageViewController/README.md: -------------------------------------------------------------------------------- 1 | ## MMPageViewController 2 | 3 | `MMPageViewController`ๆ˜ฏไธ€ไฝ็ซฅ้ž‹ๅ’Œๆˆ‘ไบคๆต๏ผŒๅฆ‚ไฝ•ไฝฟ็”จ`UIPageViewController`ๆฅๅฎž็Žฐ๏ผŒๅคš้กต้ขๆปšๅŠจ๏ผŒๅฆ‚ๆžœไฝฟ็”จUIPageViewController็š„set 4 | `setViewControllers:viewControllers direction: animated: completion:`ๆ–นๆณ•ไผš้‡ๆ–ฐๅฑ•็คบๆฏไธช่‡ชๆŽงๅˆถๅ™จ๏ผŒๅ…ทไฝ“็š„ๅŽŸๅ› ่ฟ˜้œ€่ฆ็ป†็ป†็ ”็ฉถ๏ผŒๆฎ่ฏด๏ผŒ`UIPageViewController`ๅŒๆ—ถๅชๅฑ•็คบไธ€ไธชchild viewController. 5 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/Target Support Files/pop/pop-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 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/ๅคš็บฟ็จ‹Demo/ๅคš็บฟ็จ‹Demo/ViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.h 3 | // ๅคš็บฟ็จ‹Demo 4 | // 5 | // Created by MichaelMao on 2018/9/2. 6 | // Copyright ยฉ 2018ๅนด MichaelMao. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ViewController : UIViewController 12 | 13 | 14 | @end 15 | 16 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature-request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature Request 3 | about: ๅ…ณไบŽ่ฟ™ไธช้กน็›ฎ็š„ไปปไฝ•ๆƒณๆณ•ๆˆ–่€…ๅปบ่ฎฎ 4 | title: '' 5 | labels: '' 6 | assignees: FrizzleFur 7 | 8 | --- 9 | 10 | **ๆ‚จ็š„ๅŠŸ่ƒฝ่ฏทๆฑ‚ๆ˜ฏๅฆไธŽๆŸไบ›้—ฎ้ข˜ๆœ‰ๅ…ณ๏ผŸ่ฏทๆ่ฟฐไธ€ไธ‹ใ€‚** 11 | ่ฏท็ฎ€่ฆๅœฐๆ่ฟฐ้œ€่ฆๆไบค็š„้—ฎ้ข˜ 12 | 13 | **ๆ่ฟฐไฝ ๆƒณ่ฆ็š„่งฃๅ†ณๆ–นๆกˆๆˆ–่€…ๆƒณๆณ•** 14 | ่ฏท็ฎ€่ฆๅœฐๆ่ฟฐๆ‚จ็š„ๆƒณๆณ•ๆˆ–่€…ๆ–นๆกˆ 15 | 16 | **้™„ๅŠ ่ƒŒๆ™ฏ** 17 | ๅฆ‚ๆœ‰้œ€่ฆ๏ผŒๅœจๆญคๅค„ๆทปๅŠ ่ฏทๆฑ‚็š„ๅ…ถไป–ๅ‚่€ƒ่ต„ๆ–™้“พๆŽฅๆˆ–ๅ›พ็‰‡ใ€‚ 18 | -------------------------------------------------------------------------------- /Rustๅญฆไน /่งฃๆž-Rustๅญฆไน ็›ฎๅฝ•.md: -------------------------------------------------------------------------------- 1 | # Rustๅญฆไน ็›ฎๅฝ• 2 | 3 | - https://www.rust-lang.org/zh-CN/learn 4 | - https://www.rust-lang.org/learn/get-started 5 | - https://wiki.jikexueyuan.com/project/rust/creates-and-modules.html 6 | - https://www.jianshu.com/nb/38340500 7 | - https://rust-embedded.github.io/book/ 8 | - https://doc.rust-lang.org/rust-by-example/ -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/HttpDemo/HttpDemo/ViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.h 3 | // HttpDemo 4 | // 5 | // Created by MichaelMao on 2018/9/2. 6 | // Copyright ยฉ 2018ๅนด MichaelMao. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ViewController : UIViewController 12 | 13 | 14 | @end 15 | 16 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/Target Support Files/RxCocoa/RxCocoa-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 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/Target Support Files/RxSwift/RxSwift-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 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/Target Support Files/Swinject/Swinject-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 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/iOS-Protocol/Protocol-01/Dog/Dog.h: -------------------------------------------------------------------------------- 1 | // 2 | // Dog.h 3 | // Protocol-01 4 | // 5 | // Created by MZN on 15/12/27. 6 | // Copyright ยฉ 2015ๅนด MZN. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "MyProtocol2.h" 12 | @interface Dog : NSObject 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /้ข่ฏ•้ข˜/iOS ๅฅฝ้ข˜.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 1. ๆŸฅ็œ‹deferๅ…ณ้”ฎ่ฏ 4 | 5 | ```swift 6 | var check = 1 7 | 8 | func doubleCheckTimes() -> Int { 9 | defer { 10 | check += 1 11 | } 12 | check = check*2 13 | defer { 14 | check *= 3 15 | } 16 | return check 17 | } 18 | print((doubleCheckTimes(), check)) 19 | // (2, 7) 20 | ``` 21 | 22 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/BlockDeomo/BlockDeomo/ViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.h 3 | // BlockDeomo 4 | // 5 | // Created by MichaelMao on 17/4/17. 6 | // Copyright ยฉ 2017ๅนด MichaelMao. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ViewController : UIViewController 12 | 13 | 14 | @end 15 | 16 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/HttpDemo/HttpDemo.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/Notification/Notification/Notification.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | aps-environment 6 | development 7 | 8 | 9 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/Target Support Files/Alamofire/Alamofire-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 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/Target Support Files/Kingfisher/Kingfisher-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 | -------------------------------------------------------------------------------- /1-iOSCocoa๐Ÿ’Ž/ๅบ•ๅฑ‚้‡็‚น็Ÿฅ่ฏ†/่งฃๆž-LLVM.md: -------------------------------------------------------------------------------- 1 | # LLVM่ฏญๆณ•่งฃๆž 2 | 3 | 4 | ``` 5 | i๏ผš่กจ็คบ็š„ๆ˜ฏๆ•ดๅฝขInterger๏ผŒๅŽ้ขไผš่ทŸไธ€ไธชๆ•ฐๅญ—๏ผŒ่กจ็คบๆ˜ฏๅคšๅฐ‘ไฝ็š„ๆ•ดๅฝขใ€‚ 6 | align๏ผšๅฏน้ฝๅคงๅฐ 7 | Type*๏ผš่กจ็คบๆ˜ฏType็ฑปๅž‹็š„ๆŒ‡้’ˆ 8 | alloca๏ผšๅผ€่พŸๅ †็ฉบ้—ด 9 | load๏ผšไปŽๆŒ‡้’ˆๆŒ‡ๅ‘็š„ๅœฐๅ€ๅ–ๅ€ผๅ‡บๆฅ 10 | store๏ผš่ต‹ๅ€ผๆ“ไฝœ 11 | getelementptr๏ผšไปŽๆ•ฐ็ป„ๆˆ–่€…็ป“ๆž„ไฝ“ไธญๅ–ๅ…ƒ็ด ๆŒ‡้’ˆๅ‡บๆฅ๏ผŒ็œ‹ไธ‹่ฏญๆณ•๏ผš 12 | ``` 13 | 14 | 15 | ## Ref 16 | 17 | [iOSๅผ€ๅ‘ๅˆ็ชฅLLVM่ฏญๆณ•](https://juejin.c/post/6935341725091102751) -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/HttpDemo/HttpDemo.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/Notification/Notification/ViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.h 3 | // Notification 4 | // 5 | // Created by MichaelMao on 17/3/28. 6 | // Copyright ยฉ 2017ๅนด MichaelMao. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ViewController : UIViewController 12 | 13 | 14 | @end 15 | 16 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/RuntimeDemo/RuntimeDemo/ViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.h 3 | // RuntimeDemo 4 | // 5 | // Created by MichaelMao on 2018/9/4. 6 | // Copyright ยฉ 2018ๅนด MichaelMao. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ViewController : UIViewController 12 | 13 | 14 | @end 15 | 16 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/Swinject/Sources/FunctionType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // FunctionType.swift 3 | // Swinject 4 | // 5 | // Created by Yoichi Tagaya on 11/28/15. 6 | // Copyright ยฉ 2015 Swinject Contributors. All rights reserved. 7 | // 8 | 9 | // Type alias to expect a closure. 10 | internal typealias FunctionType = Any 11 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/HttpDemo/Podfile: -------------------------------------------------------------------------------- 1 | # Uncomment the next line to define a global platform for your project 2 | # platform :ios, '9.0' 3 | 4 | target 'HttpDemo' do 5 | # Uncomment the next line if you're using Swift or would like to use dynamic frameworks 6 | # use_frameworks! 7 | 8 | # Pods for HttpDemo 9 | pod 'AFNetworking', '~> 3.1.0' 10 | end 11 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/ๅคš็บฟ็จ‹Demo/ๅคš็บฟ็จ‹Demo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.obsidian/config: -------------------------------------------------------------------------------- 1 | { 2 | "theme": "moonstone", 3 | "pluginEnabledStatus": { 4 | "file-explorer": true, 5 | "global-search": true, 6 | "switcher": true, 7 | "graph": true, 8 | "backlink": true, 9 | "command-palette": true, 10 | "markdown-importer": true, 11 | "word-count": true, 12 | "custom-css": true 13 | } 14 | } -------------------------------------------------------------------------------- /ๅญฆไน ๆ—ฅๅฟ—Logs/DailyLearningLogs2017-05/DailyLearningLogs2017-05-04.md: -------------------------------------------------------------------------------- 1 | 2 | # DailyLearningLogs 2017-05-04 3 | 4 | 5 | - [x] [Viewไน‹้—ด็š„ๅ…ณ็ณป็ฉถ็ซŸๆ„ๅ‘ณ็€ไป€ไนˆ๏ผŸๆณŠๅญฆ็ฝ‘](https://boxueio.com/series/ios-101/ebook/110) (2017-05-04) 6 | 7 | ## Review Notes 8 | 9 | - [x] Docs่ฎฐๅฝ• - Xcode Help (2015-05-18)ๆ•ด็†ๅˆฐFFurๅšๅฎข 10 | 11 | ## Linux 12 | 13 | - [x] ไบ†่งฃ`OhMyZsh` (2015-05-04) 14 | 15 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/HttpDemo/HttpDemo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/MultiThreadDemo-ๅคš็บฟ็จ‹/MultiThreadDemo-ๅคš็บฟ็จ‹/ViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.h 3 | // MultiThreadDemo-ๅคš็บฟ็จ‹ 4 | // 5 | // Created by MichaelMao on 2019/3/8. 6 | // Copyright ยฉ 2019 MichaelMao. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ViewController : UIViewController 12 | 13 | 14 | @end 15 | 16 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/SwiftLearningDemo.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/SwiftLearningDemo.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /1-iOSCocoa๐Ÿ’Ž/ๅบ•ๅฑ‚้‡็‚น็Ÿฅ่ฏ†/่งฃๆž-ๅบ•ๅฑ‚ๅŽŸ็†.md: -------------------------------------------------------------------------------- 1 | # ่งฃๆž-ๅบ•ๅฑ‚ๅŽŸ็† 2 | 3 | 4 | 5 | ![](https://pic-mike.oss-cn-hongkong.aliyuncs.com/Blog/20190216202635.png) 6 | 7 | 8 | ## NSObject ๅฏน่ฑก 9 | 10 | 11 | 12 | 13 | ![](https://pic-mike.oss-cn-hongkong.aliyuncs.com/Blog/20190216221411.png) 14 | 15 | 16 | 17 | ![](https://pic-mike.oss-cn-hongkong.aliyuncs.com/Blog/20190216221828.png) -------------------------------------------------------------------------------- /ไธ‰ๆ–น่ฝฎๅญ่งฃๆž๐Ÿ’ก/่งฃๆž-MagazineLayout.md: -------------------------------------------------------------------------------- 1 | # MagazineLayout 2 | 3 | 4 | airbnb/MagazineLayout: A collection view layout capable of laying out views in vertically scrolling grids and lists. 5 | 6 | 7 | ## ๅ‚่€ƒ 8 | 9 | * [airbnb/MagazineLayout: A collection view layout capable of laying out views in vertically scrolling grids and lists.](https://github.com/airbnb/MagazineLayout) -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/BlockDeomo/BlockDeomo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/RuntimeDemo/RuntimeDemo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/iOS-Protocol/Protocol-01.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/MMPageViewController/MMPageViewController/HomeViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.h 3 | // MMPageViewController 4 | // 5 | // Created by MichaelMao on 17/3/4. 6 | // Copyright ยฉ 2017ๅนด MichaelMao. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface HomeViewController : UIViewController 12 | 13 | 14 | @end 15 | 16 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/Memory-RetainCycleDemo/Memory-RetainCycleDemo/ViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.h 3 | // Memory-RetainCycleDemo 4 | // 5 | // Created by MichaelMao on 2019/3/27. 6 | // Copyright ยฉ 2019 MichaelMao. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ViewController : UIViewController 12 | 13 | 14 | @end 15 | 16 | -------------------------------------------------------------------------------- /้˜…่ฏป็ฌ”่ฎฐ/ๆ•ดไฝ“ๅญฆไน ๆณ•่ฏปไนฆ็ฌ”่ฎฐ.md: -------------------------------------------------------------------------------- 1 | ## ๆ•ดไฝ“ๅญฆไน ๆณ• 2 | 3 | 7. [ๆ•ดไฝ“ๅญฆไน ๆณ•ๅฏผๅ›พ](https://zhuanlan.zhihu.com/p/22693867) 4 | 8. [ๆ•ดไฝ“ๅญฆไน ๆณ•](http://www.jianshu.com/p/9a5f27173424) 5 | 9. [ๅฆ‚ไฝ•่ฏ„ไปทๆ–ฏ็ง‘็‰นยทๆ‰ฌ็š„ใ€Šๅฆ‚ไฝ•้ซ˜ๆ•ˆๅญฆไน ใ€‹๏ผˆLearn More, Study Less!๏ผ‰๏ผŸ](https://www.zhihu.com/question/23043048) 6 | 10. [ๅฆ‚ไฝ•่€ƒๅฏŸๆฑ‚่Œ่€…็š„ใ€Œๅญฆไน ่ƒฝๅŠ›ใ€๏ผŸๆฑ‚่Œ่€…ๅฆ‚ไฝ•ๅŸนๅ…ปๅญฆไน ่ƒฝๅŠ›๏ผŸ](https://www.zhihu.com/question/20107788/answer/14002070) 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /ๅญฆไน ๆ—ฅๅฟ—Logs/DailyLearningLogs2017-04/DailyLearningLogs2017-04-27.md: -------------------------------------------------------------------------------- 1 | 2 | # DailyLearningLogs 2017-04-27 3 | 4 | ## Git 5 | 6 | - [x] [Learn Git](https://www.codecademy.com/learn/learn-git) (2017-05-02) 7 | 8 | ## Hexo 9 | 10 | - [x] add comments.(2017-05-02) 11 | - [x] add backup to cloud.[Bitbucketๅค‡ไปฝ](https://bitbucket.org/MichaelMaoMao/myblog)๏ผˆ2017-05-02๏ผ‰ 12 | 13 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/SwiftLearningDemo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /SideProject/AweKeep/AweKeep-ๅˆ†ๆž.md: -------------------------------------------------------------------------------- 1 | # AweKeep-ๅˆ†ๆž 2 | 3 | ## UI็ป“ๆž„ 4 | 5 | * ไธป่ฆๆ˜ฏๅคšTab็ป“ๆž„ 6 | * ้ฆ–้กต 7 | * Feedๆต 8 | * ่ฏ„่ฎบใ€็‚น่ตž 9 | * ๆดปๅŠจ้กต 10 | * ๆœ็ดข 11 | * ๅฅฝๅ‹ 12 | * ่ฏพ็จ‹ๅˆ—่กจ 13 | * ่ฟๅŠจ LBS 14 | * ๅ•†ๅŸŽ 15 | * ไธชไบบ้กต้ข 16 | * ไธชไบบไฟกๆฏ 17 | * ่ฟๅŠจ่ฎฐๅฝ• 18 | * ้ฅฎ้ฃŸๅทฅๅ…ท 19 | 20 | 21 | ## ๆŠ€ๆœฏ็‚น 22 | * ้กต้ขไธป่ฆๆถ‰ๅŠๅˆฐๅ›พๆ–‡ๆŽ’ๅˆ—๏ผŒ่ง†ๅฑ็š„ๆ’ญๆ”พ๏ผŒ 23 | * ๆ€ง่ƒฝ๏ผŒๅธƒๅฑ€ 24 | * ๆป‘ๅŠจๅตŒๅฅ—๏ผŒๅคštab้กต้ข 25 | 26 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/MMPageViewController/MMPageViewController/Library/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 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/MultiThreadDemo-ๅคš็บฟ็จ‹/MultiThreadDemo-ๅคš็บฟ็จ‹.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/็ฎ—ๆณ•Demo/ๆŽ’ๅบ/BubbleSortDemo/BubbleSortDemo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/Memory-RetainCycleDemo/Memory-RetainCycleDemo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/RuntimeDemo/RuntimeDemo/NSObject+Model.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSObject+Model.h 3 | // RuntimeDemo 4 | // 5 | // Created by MichaelMao on 2018/9/5. 6 | // Copyright ยฉ 2018ๅนด MichaelMao. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSObject (Model) 12 | 13 | + (instancetype)modelWithDict:(NSDictionary *)dict; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxSwift/RxSwift/Disposable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Disposable.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 2/8/15. 6 | // Copyright ยฉ 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /// Represents a disposable resource. 10 | public protocol Disposable { 11 | /// Dispose resource. 12 | func dispose() 13 | } 14 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxSwift/RxSwift/Schedulers/Internal/ScheduledItemType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ScheduledItemType.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 11/7/15. 6 | // Copyright ยฉ 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | protocol ScheduledItemType 10 | : Cancelable 11 | , InvocableType { 12 | func invoke() 13 | } 14 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/ๅคš็บฟ็จ‹Demo/ๅคš็บฟ็จ‹Demo/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // ๅคš็บฟ็จ‹Demo 4 | // 5 | // Created by MichaelMao on 2018/9/2. 6 | // Copyright ยฉ 2018ๅนด MichaelMao. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | 16 | @end 17 | 18 | -------------------------------------------------------------------------------- /ๅญฆไน ๆ—ฅๅฟ—Logs/DailyLearningLogs2017-06/DailyLearningLogs2017-06-15.md: -------------------------------------------------------------------------------- 1 | # DailyLearningLogs 2017-06-15 2 | 3 | ## Todo 4 | 5 | ## Done 6 | 7 | - [x] finish [Publishing to the App Store](https://videos.raywenderlich.com/courses/71-publishing-to-the-app-store/lessons/1) (2017-06-15) 8 | 9 | - [x] Do some work on the version 2.4 (2017-06-15) 10 | 11 | - [x] start ReactNative (2017-06-15) 12 | 13 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/HttpDemo/HttpDemo/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // HttpDemo 4 | // 5 | // Created by MichaelMao on 2018/9/2. 6 | // Copyright ยฉ 2018ๅนด MichaelMao. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | 16 | @end 17 | 18 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/BlockDeomo/BlockDeomo/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // BlockDeomo 4 | // 5 | // Created by MichaelMao on 17/4/17. 6 | // Copyright ยฉ 2017ๅนด MichaelMao. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | 16 | @end 17 | 18 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/Memory-RetainCycleDemo/Memory-RetainCycleDemo/NextVC.h: -------------------------------------------------------------------------------- 1 | // 2 | // NextVC.h 3 | // Memory-RetainCycleDemo 4 | // 5 | // Created by MichaelMao on 2019/3/27. 6 | // Copyright ยฉ 2019 MichaelMao. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface NextVC : UIViewController 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/iOS-Protocol/Protocol-01/Dog/Hasiqi.m: -------------------------------------------------------------------------------- 1 | // 2 | // Hasiqi.m 3 | // Protocol-01 4 | // 5 | // Created by MZN on 15/12/27. 6 | // Copyright ยฉ 2015ๅนด MZN. All rights reserved. 7 | // 8 | 9 | #import "Hasiqi.h" 10 | 11 | @implementation Hasiqi 12 | 13 | @end 14 | 15 | @implementation Hasiqi (AddCategory) 16 | 17 | -(void)addTest{ 18 | 19 | NSLog(@"addTest"); 20 | } 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/Notification/Notification/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // Notification 4 | // 5 | // Created by MichaelMao on 17/3/28. 6 | // Copyright ยฉ 2017ๅนด MichaelMao. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | 16 | @end 17 | 18 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/RuntimeDemo/RuntimeDemo/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // RuntimeDemo 4 | // 5 | // Created by MichaelMao on 2018/9/4. 6 | // Copyright ยฉ 2018ๅนด MichaelMao. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | 16 | @end 17 | 18 | -------------------------------------------------------------------------------- /ๅญฆไน ๆ—ฅๅฟ—Logs/DailyLearningLogs2017-05/DailyLearningLogs2017-05-10.md: -------------------------------------------------------------------------------- 1 | # DailyLearningLogs 2017-05-06 2 | 3 | ## ๆ•ด็†`Linuxๅ‘ฝไปค` 4 | 5 | - [x] ๆ•ด็†`Linuxๅ‘ฝไปค` ๏ผˆ2017-05-10๏ผ‰ 6 | 7 | ## ไปฃ็ ่ฟ็งป 8 | 9 | - [x] ไปฃ็ ่ฟ็งปๅˆฐ`Bitbucket` ๏ผˆ2017-05-09๏ผ‰ 10 | - [x] ไปฃ็ ่ฟ็งปๅˆฐ`GitLab` ๏ผˆ2017-05-10๏ผ‰ 11 | 12 | ## `Continue Intergration` 13 | 14 | - [x] ไฝฟ็”จ`Jenkins`ๆ‰“ๅŒ…๏ผˆ2017-05-16๏ผ‰ 15 | 16 | ## Blog 17 | 18 | - [x] ไผ˜ๅŒ–Blog๏ผˆ2017-05-16๏ผ‰ 19 | 20 | 21 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxSwift/RxSwift/Disposables/Disposables.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Disposables.swift 3 | // RxSwift 4 | // 5 | // Created by Mohsen Ramezanpoor on 01/08/2016. 6 | // Copyright ยฉ 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /// A collection of utility methods for common disposable operations. 10 | public struct Disposables { 11 | private init() {} 12 | } 13 | 14 | -------------------------------------------------------------------------------- /ๅญฆไน ๆ—ฅๅฟ—Logs/DailyLearningLogs2017-05/DailyLearningLogs2017-05-24.md: -------------------------------------------------------------------------------- 1 | # DailyLearningLogs 2017-05-24 2 | 3 | ## Todo 4 | 5 | 6 | ## Done 7 | - [x] [PART 15: 207: Xcode UI Testing 8 | ](https://videos.raywenderlich.com/courses/59-rwdevcon-2016-vault/lessons/15)(2017-05-24) Need Review 9 | 10 | - [x] [PART 10: Fastlane](https://videos.raywenderlich.com/courses/81-rwdevcon-2017-vault-tutorials/lessons/10) 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /ๅญฆไน ๆ—ฅๅฟ—Logs/DailyLearningLogs2017-06/DailyLearningLogs2017-06-16.md: -------------------------------------------------------------------------------- 1 | # DailyLearningLogs 2017-06-16 2 | 3 | ## Todo 4 | 5 | ## Done 6 | 7 | - [x] Charlesๅญฆไน ๆ€ป็ป“ๆ–‡ๆกฃ๏ผŒๅ‚่€ƒ[OSX/iOS ๆŠ“ๅŒ…ๅทฅๅ…ท Charles ๅ…ฅ้—จ - ็ฎ€ไนฆ](http://www.jianshu.com/p/dbcf1ef87a63) 8 | 9 | - [x] [Charles Proxy: Getting Started](https://videos.raywenderlich.com/screencasts/836-charles-proxy-getting-started) (2017-06-16) 10 | 11 | - [x] React Native (2017-06-18) 12 | 13 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/MultiThreadDemo-ๅคš็บฟ็จ‹/MultiThreadDemo-ๅคš็บฟ็จ‹/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // MultiThreadDemo-ๅคš็บฟ็จ‹ 4 | // 5 | // Created by MichaelMao on 2019/3/8. 6 | // Copyright ยฉ 2019 MichaelMao. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | 16 | @end 17 | 18 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/MMPageViewController/MMPageViewController/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // MMPageViewController 4 | // 5 | // Created by MichaelMao on 17/3/4. 6 | // Copyright ยฉ 2017ๅนด MichaelMao. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | 16 | @end 17 | 18 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxSwift/RxSwift/Cancelable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Cancelable.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 3/12/15. 6 | // Copyright ยฉ 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /// Represents disposable resource with state tracking. 10 | public protocol Cancelable : Disposable { 11 | /// Was resource disposed. 12 | var isDisposed: Bool { get } 13 | } 14 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/Memory-RetainCycleDemo/Memory-RetainCycleDemo/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // Memory-RetainCycleDemo 4 | // 5 | // Created by MichaelMao on 2019/3/27. 6 | // Copyright ยฉ 2019 MichaelMao. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | 16 | @end 17 | 18 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/ๅคš็บฟ็จ‹Demo/ๅคš็บฟ็จ‹Demo/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // ๅคš็บฟ็จ‹Demo 4 | // 5 | // Created by MichaelMao on 2018/9/2. 6 | // Copyright ยฉ 2018ๅนด MichaelMao. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "AppDelegate.h" 11 | 12 | int main(int argc, char * argv[]) { 13 | @autoreleasepool { 14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/HttpDemo/HttpDemo/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // HttpDemo 4 | // 5 | // Created by MichaelMao on 2018/9/2. 6 | // Copyright ยฉ 2018ๅนด MichaelMao. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "AppDelegate.h" 11 | 12 | int main(int argc, char * argv[]) { 13 | @autoreleasepool { 14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/iOS-Protocol/Protocol-01/Protocol/MyProtocol2.h: -------------------------------------------------------------------------------- 1 | // 2 | // MyProtocol2.h 3 | // Protocol-01 4 | // 5 | // Created by MZN on 15/12/27. 6 | // Copyright ยฉ 2015ๅนด MZN. All rights reserved. 7 | // 8 | 9 | #ifndef MyProtocol2_h 10 | #define MyProtocol2_h 11 | 12 | @protocol MyProtocol2 13 | 14 | @required 15 | -(void)haha2; 16 | 17 | @optional 18 | -(void)haha3; 19 | 20 | @end 21 | 22 | 23 | #endif /* MyProtocol2_h */ 24 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/BlockDeomo/BlockDeomo/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // BlockDeomo 4 | // 5 | // Created by MichaelMao on 17/4/17. 6 | // Copyright ยฉ 2017ๅนด MichaelMao. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "AppDelegate.h" 11 | 12 | int main(int argc, char * argv[]) { 13 | @autoreleasepool { 14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/Notification/Notification/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // Notification 4 | // 5 | // Created by MichaelMao on 17/3/28. 6 | // Copyright ยฉ 2017ๅนด MichaelMao. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "AppDelegate.h" 11 | 12 | int main(int argc, char * argv[]) { 13 | @autoreleasepool { 14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/RuntimeDemo/RuntimeDemo/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // RuntimeDemo 4 | // 5 | // Created by MichaelMao on 2018/9/4. 6 | // Copyright ยฉ 2018ๅนด MichaelMao. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "AppDelegate.h" 11 | 12 | int main(int argc, char * argv[]) { 13 | @autoreleasepool { 14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxSwift/RxSwift/Concurrency/SynchronizedUnsubscribeType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SynchronizedUnsubscribeType.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright ยฉ 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | protocol SynchronizedUnsubscribeType : class { 10 | associatedtype DisposeKey 11 | 12 | func synchronizedUnsubscribe(_ disposeKey: DisposeKey) 13 | } 14 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxSwift/RxSwift/Schedulers/Internal/InvocableType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // InvocableType.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 11/7/15. 6 | // Copyright ยฉ 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | protocol InvocableType { 10 | func invoke() 11 | } 12 | 13 | protocol InvocableWithValueType { 14 | associatedtype Value 15 | 16 | func invoke(_ value: Value) 17 | } 18 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/RuntimeDemo/RuntimeDemo/Person+appendName.h: -------------------------------------------------------------------------------- 1 | // 2 | // Person+rename.h 3 | // RuntimeDemo 4 | // 5 | // Created by MichaelMao on 2018/9/4. 6 | // Copyright ยฉ 2018ๅนด MichaelMao. All rights reserved. 7 | // 8 | 9 | #import "Person.h" 10 | 11 | @interface Person (appendName) 12 | 13 | // @propertyๅˆ†็ฑป:ๅชไผš็”Ÿๆˆget, setๆ–นๆณ•ๅฃฐๆ˜Ž,ไธไผš็”Ÿๆˆๅฎž็Žฐ,ไนŸไธไผš็”Ÿๆˆไธ‹ๅˆ’็บฟๆˆๅ‘˜ๅฑžๆ€ง 14 | @property (nonatomic, copy) NSString *firstName; 15 | @property NSString *lastName; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/Target Support Files/RxSwift/RxSwift-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 RxSwiftVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char RxSwiftVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/iOS-Protocol/Protocol-01/Agent2.m: -------------------------------------------------------------------------------- 1 | // 2 | // Agent2.m 3 | // Protocol-01 4 | // 5 | // Created by MZN on 15/12/27. 6 | // Copyright ยฉ 2015ๅนด MZN. All rights reserved. 7 | // 8 | 9 | #import "Agent2.h" 10 | 11 | @implementation Agent2 12 | 13 | -(double)ticketsPrice{ 14 | 15 | //... ไบฒ่‡ช่ท‘็”ตๅฝฑ้™ข/ๆ‰“็”ต่ฏ 16 | return 200; 17 | } 18 | 19 | -(int)letfTicketsNum{ 20 | 21 | //... ไบฒ่‡ช่ท‘็”ตๅฝฑ้™ข/ๆ‰“็”ต่ฏ 22 | return 2; 23 | } 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/Target Support Files/Alamofire/Alamofire-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 AlamofireVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char AlamofireVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /ๅผ€ๅ‘ๅทฅๅ…ทTool๐Ÿ”ง/ๅทฅๅ…ท-Reveal่ฐƒ่ฏ•ๆ•™็จ‹.md: -------------------------------------------------------------------------------- 1 | ## Reveal่ฐƒ่ฏ•ๆ•™็จ‹ 2 | 3 | 4 | ## ่ฟ›้˜ถ 5 | 6 | 7 | [่ฟ›้˜ถไฝฟ็”จRevealๅˆ†ๆžๅˆซไบบApp็š„UIๅธƒๅฑ€](http://chaosky.me/2016/07/27/iOS-Security-Defense-Reveal/) 8 | 9 | 10 | ## MacOSไธŠ็š„Reveal 11 | 12 | [Interface Inspector](https://www.interface-inspector.com/index.html) 13 | 14 | ## ๅ‚่€ƒ 15 | 16 | 1. [Reveal iOS้กน็›ฎUI่ฐƒ่ฏ•ๅทฅๅ…ทไฝฟ็”จๆ•™็จ‹ - ๆŽ˜้‡‘](https://juejin.im/post/5a31cdabf265da43133d276b) 17 | 2. [่ฟ›้˜ถไฝฟ็”จRevealๅˆ†ๆžๅˆซไบบApp็š„UIๅธƒๅฑ€](http://chaosky.me/2016/07/27/iOS-Security-Defense-Reveal/) -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/MultiThreadDemo-ๅคš็บฟ็จ‹/MultiThreadDemo-ๅคš็บฟ็จ‹/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // MultiThreadDemo-ๅคš็บฟ็จ‹ 4 | // 5 | // Created by MichaelMao on 2019/3/8. 6 | // Copyright ยฉ 2019 MichaelMao. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "AppDelegate.h" 11 | 12 | int main(int argc, char * argv[]) { 13 | @autoreleasepool { 14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/iOS-Protocol/Protocol-01/Agent.m: -------------------------------------------------------------------------------- 1 | // 2 | // Agent.m 3 | // Protocol-01 4 | // 5 | // Created by MZN on 15/12/27. 6 | // Copyright ยฉ 2015ๅนด MZN. All rights reserved. 7 | // 8 | 9 | #import "Agent.h" 10 | 11 | @implementation Agent 12 | 13 | 14 | -(double)ticketsPrice{ 15 | 16 | //... ไบฒ่‡ช่ท‘็”ตๅฝฑ้™ข/ๆ‰“็”ต่ฏ 17 | return 100; 18 | } 19 | 20 | -(int)letfTicketsNum{ 21 | 22 | //... ไบฒ่‡ช่ท‘็”ตๅฝฑ้™ข/ๆ‰“็”ต่ฏ 23 | return 1; 24 | } 25 | 26 | 27 | @end 28 | 29 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/MMPageViewController/MMPageViewController/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // MMPageViewController 4 | // 5 | // Created by MichaelMao on 17/3/4. 6 | // Copyright ยฉ 2017ๅนด MichaelMao. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "AppDelegate.h" 11 | 12 | int main(int argc, char * argv[]) { 13 | @autoreleasepool { 14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/RuntimeDemo/RuntimeDemo/User.h: -------------------------------------------------------------------------------- 1 | // 2 | // User.h 3 | // RuntimeDemo 4 | // 5 | // Created by MichaelMao on 2018/9/5. 6 | // Copyright ยฉ 2018ๅนด MichaelMao. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface User : NSObject 12 | 13 | @property (nonatomic, strong) NSString *user_school; 14 | @property (nonatomic, strong) NSString *user_phone; 15 | @property (nonatomic, strong) NSString *user_address; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/iOS-Protocol/Protocol-01/Protocol/MyProtocol3.h: -------------------------------------------------------------------------------- 1 | // 2 | // MyProtocol3.h 3 | // Protocol-01 4 | // 5 | // Created by MZN on 15/12/27. 6 | // Copyright ยฉ 2015ๅนด MZN. All rights reserved. 7 | // 8 | 9 | #ifndef MyProtocol3_h 10 | #define MyProtocol3_h 11 | 12 | 13 | //ไธ€ไธชๅ่ฎฎ้ตๅฎˆไบ†ๅฆๅค–ไธ€ไธชๅ่ฎฎ๏ผŒๅฐฑๅฏไปฅๆ‹ฅๆœ‰่ฟ™ไปฝๅ่ฎฎไธญ็š„ๆ‰€ๆœ‰ๆ–นๆณ•ๅฃฐๆ˜Ž 14 | #import "MyProtocol.h" 15 | 16 | @protocol MyProtocol3 17 | 18 | -(void)hehe; 19 | 20 | @end 21 | 22 | 23 | #endif /* MyProtocol3_h */ 24 | -------------------------------------------------------------------------------- /ๆ€ง่ƒฝไผ˜ๅŒ–/Code-Style.md: -------------------------------------------------------------------------------- 1 | ## Code Style 2 | 3 | 4 | ### Swift-Code Style 5 | 6 | 1. [raywenderlich/swift-style-guide: The official Swift style guide for raywenderlich.com.](https://github.com/raywenderlich/swift-style-guide) 7 | 8 | 9 | ### Objective-C-Code Style 10 | 11 | 1. [raywenderlich/objective-c-style-guide: A style guide that outlines the coding conventions for raywenderlich.com](https://github.com/raywenderlich/objective-c-style-guide#private-properties) 12 | 13 | 14 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/Memory-RetainCycleDemo/Memory-RetainCycleDemo/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // Memory-RetainCycleDemo 4 | // 5 | // Created by MichaelMao on 2019/3/27. 6 | // Copyright ยฉ 2019 MichaelMao. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "AppDelegate.h" 11 | 12 | int main(int argc, char * argv[]) { 13 | @autoreleasepool { 14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/MMPageViewController/MMPageViewController/ChildViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ChildViewController.h 3 | // MMPageViewController 4 | // 5 | // Created by MichaelMao on 17/3/4. 6 | // Copyright ยฉ 2017ๅนด MichaelMao. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ChildViewController : UIViewController 12 | @property (nonatomic, copy) NSString *pageTitle; 13 | @property (nonatomic, readonly, strong) UITableView *tableView; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/Target Support Files/Swinject/Swinject-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 "Swinject.h" 14 | 15 | FOUNDATION_EXPORT double SwinjectVersionNumber; 16 | FOUNDATION_EXPORT const unsigned char SwinjectVersionString[]; 17 | 18 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Podfile: -------------------------------------------------------------------------------- 1 | # Uncomment the next line to define a global platform for your project 2 | # platform :ios, '9.0' 3 | 4 | target 'SwiftLearningDemo' do 5 | # Comment the next line if you're not using Swift and don't want to use dynamic frameworks 6 | use_frameworks! 7 | 8 | # Pods for SwiftLearningDemo 9 | 10 | pod 'Kingfisher' 11 | pod 'Alamofire' 12 | pod 'pop' 13 | pod 'RxSwift', '4.3.1' 14 | pod 'RxCocoa', '4.3.1' 15 | pod 'Swinject' 16 | 17 | end 18 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/Target Support Files/Kingfisher/Kingfisher-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 "Kingfisher.h" 14 | 15 | FOUNDATION_EXPORT double KingfisherVersionNumber; 16 | FOUNDATION_EXPORT const unsigned char KingfisherVersionString[]; 17 | 18 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/ๅคš็บฟ็จ‹Demo/ๅคš็บฟ็จ‹Demo.xcodeproj/xcuserdata/michaelmao.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | ๅคš็บฟ็จ‹Demo.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /CSๅŸบ็ก€/่งฃๆž-ๆ•ฐๆฎ็ป“ๆž„/่งฃๆž-ๆ•ฐๆฎ็ป“ๆž„.md: -------------------------------------------------------------------------------- 1 | # ่งฃๆž-ๆ•ฐๆฎ็ป“ๆž„ 2 | 3 | 4 | 5 | ## ไบŒๅ‰ๆ ‘ 6 | 7 | 8 | ๆ ‘ๆ˜ฏไป€ไนˆ 9 | 10 | ไธพไธช็Žฐๅฎž็”Ÿๆดปไธญ็š„ไพ‹ๅญ๏ผŒๅ…ฌๅธ็š„็ป„็ป‡ๆžถๆž„ๅฆ‚ไธ‹๏ผš 11 | 12 | 13 | ``` 14 | # |ceo| 15 | # / \ 16 | # |cto| |cfo| 17 | # / \ / \ 18 | # |se| |se| |sm| |sm| 19 | 20 | ``` 21 | 22 | ไบŒๅ‰ๆ ‘ๆ˜ฏไธ€็ง็‰นๆฎŠ็š„ๆ ‘ ๏ผŒๆฏไธช่Š‚็‚นๆœ€ๅคšๅช่ƒฝๆœ‰ไธคไธชๅญ่Š‚็‚น๏ผˆๅทฆๅญ่Š‚็‚นใ€ๅณๅญ่Š‚็‚น๏ผ‰๏ผš 23 | 24 | ![](https://pic-mike.oss-cn-hongkong.aliyuncs.com/Blog/20190216162149.png) 25 | 26 | ## ๅ‚่€ƒ 27 | 28 | 1. [Tree - HuYounger](http://rkhcy.github.io/2018/12/19/Tree/) 29 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/RuntimeDemo/RuntimeDemo.xcodeproj/xcuserdata/michaelmao.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | RuntimeDemo.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/iOS-Protocol/Protocol-01.xcodeproj/xcuserdata/michaelmao.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | Protocol-01.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /ๅญฆไน ๆ—ฅๅฟ—Logs/DailyLearningLogs2017-05/DailyLearningLogs2017-05-05.md: -------------------------------------------------------------------------------- 1 | 2 | # DailyLearningLogs 2017-05-05 3 | 4 | ## Linux 5 | 6 | - [x] ไฝฟ็”จ`OhMyZsh` (2015-05-05) 7 | - [x] ้…็ฝฎ`OhMyZsh`ไธป้ข˜โ€œPureโ€(refined) (2015-05-05) 8 | - [x] ็†Ÿๆ‚‰`Linux`ๅ‘ฝไปค๏ผŒๅนถ่ฎฐๅฝ•(2015-05-05) 9 | 10 | ## Tool 11 | 12 | - [x] ็†Ÿๆ‚‰ [Graphviz](http://www.graphviz.org/)๏ผŒ่ดๅฐ”ๅฎž้ชŒๅฎค็ป™็จ‹ๅบๅ‘˜ๅผ€ๅ‘็š„ๅฏผๅ›พ๏ผŒๅผ€ๆบๅ“ฆ๏ผŒ็œ‹ๆ•ฐๆฎ็ป“ๆž„ไธ่ฆไธ่ฆ็š„โœชฯ‰โœช,Macไธ‹ๅปบ่ฎฎ็”จ`homebrew`ๅฎ‰่ฃ…ใ€‚ 13 | - [x] ๆทปๅŠ [Processon](https://www.processon.com/diagrams) ๆŒบ็ฒพ่‡ด็š„ไธ€ไธชOnlineๆ€็ปดๅฏผๅ›พ็ฝ‘็ซ™๏ผŒๅชๆ˜ฏๅ…่ดน็š„ๆœ€ๅคšไฟๅญ˜10ไธชใ€‚ๆ„Ÿ่ง‰ๅฏไปฅ็”จๅฎŒๅฐฑ่ตฐ๐Ÿ˜„๏ผˆCtrl+B ๆ ผๅผๅˆท๏ผ‰ 14 | 15 | 16 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/Swinject/Sources/SpinLock.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SpinLock.swift 3 | // Swinject 4 | // 5 | // Created by Yoichi Tagaya on 11/26/15. 6 | // Copyright ยฉ 2015 Swinject Contributors. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | internal final class SpinLock { 12 | private let lock = NSRecursiveLock() 13 | 14 | func sync(action: () -> T) -> T { 15 | lock.lock() 16 | defer { lock.unlock() } 17 | return action() 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/Target Support Files/Pods-SwiftLearningDemo/Pods-SwiftLearningDemo-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_SwiftLearningDemoVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char Pods_SwiftLearningDemoVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxSwift/RxSwift/Concurrency/LockOwnerType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // LockOwnerType.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright ยฉ 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | protocol LockOwnerType : class, Lock { 10 | var _lock: RecursiveLock { get } 11 | } 12 | 13 | extension LockOwnerType { 14 | func lock() { 15 | _lock.lock() 16 | } 17 | 18 | func unlock() { 19 | _lock.unlock() 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /ๅญฆไน ๆ—ฅๅฟ—Logs/DailyLearningLogs2017-05/DailyLearningLogs2017-05-01.md: -------------------------------------------------------------------------------- 1 | 2 | # DailyLearningLogs 2017-05-01 3 | 4 | 5 | ## Git 6 | 7 | - [x] [Learn Git](https://www.codecademy.com/learn/learn-git) (2017-05-02) 8 | 9 | ## Linux 10 | - [x] learn Bash Commands(2017-05-02) 11 | 12 | - [x] add LinuxLearning(2017-05-01) 13 | - [x] add Bash Commands(2017-05-01) 14 | - [x] add [oh-my-zsh](https://github.com/robbyrussell/oh-my-zsh) task(2017-05-01) 15 | - [x] add [iTerm2](https://www.iterm2.com/) task(2017-05-01) 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/MMPageViewController/MMPageViewController/Library/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 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/iOS-Protocol/Protocol-01/Agent.h: -------------------------------------------------------------------------------- 1 | // 2 | // Agent.h 3 | // Protocol-01 4 | // 5 | // Created by MZN on 15/12/27. 6 | // Copyright ยฉ 2015ๅนด MZN. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | 12 | //ไปฃ็† 13 | @interface Agent : NSObject 14 | 15 | /** 16 | * ่ฟ”ๅ›ž็ฅจไปท 17 | * 18 | * @return ่ฟ”ๅ›ž็ฅจไปทdouble็ฑปๅž‹ 19 | */ 20 | -(double) ticketsPrice; 21 | 22 | 23 | /** 24 | * ่ฟ”ๅ›žไฝ™็ฅจๅผ ๆ•ฐ 25 | * 26 | * @return ่ฟ”ๅ›žไฝ™็ฅจๅผ ๆ•ฐ 27 | */ 28 | -(int) letfTicketsNum; 29 | 30 | 31 | 32 | 33 | @end 34 | -------------------------------------------------------------------------------- /UnitTest/่งฃๆž-UnitTest.md: -------------------------------------------------------------------------------- 1 | # UnitTest 2 | 3 | 4 | 5 | - Test-Driven Development (TDD) 6 | - Behavior-Driven Development (BDD) 7 | 8 | 9 | 10 | ## ๆต‹่ฏ•ๆก†ๆžถ 11 | 12 | 13 | [Quick](https://github.com/Quick/Quick) 14 | 15 | ### Swift 16 | 17 | * [kiwi-bdd/Kiwi: Simple BDD for iOS](https://github.com/kiwi-bdd/Kiwi) 18 | 19 | 20 | ### Objective-C 21 | 22 | * [kiwi-bdd/Kiwi: Simple BDD for iOS](https://github.com/kiwi-bdd/Kiwi) 23 | 24 | 25 | ## Moke 26 | 27 | * [OCMoke](https://blog.csdn.net/lin1109221208/article/details/93051476) -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/SwiftLearningDemo.xcodeproj/xcuserdata/michaelmao.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | SwiftLearningDemo.xcscheme_^#shared#^_ 8 | 9 | orderHint 10 | 7 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/iOS-Protocol/Protocol-01/Dog/Hasiqi.h: -------------------------------------------------------------------------------- 1 | // 2 | // Hasiqi.h 3 | // Protocol-01 4 | // 5 | // Created by MZN on 15/12/27. 6 | // Copyright ยฉ 2015ๅนด MZN. All rights reserved. 7 | // 8 | 9 | #import "Dog.h" 10 | 11 | 12 | //ๅ่ฎฎๅชๅ’Œ่ฟ™ไธช็ฑปๆœ‰ๅ…ณ็š„ๆ—ถๅ€™๏ผŒ็›ดๆŽฅๅ†™ๅœจ็ฑป็š„ๅคดๆ–‡ไปถ้‡Œๅณๅฏ 13 | @protocol MyDogProtocol 14 | 15 | -(void)MyDogMethod; 16 | 17 | @end 18 | 19 | @interface Hasiqi : Dog 20 | 21 | @end 22 | 23 | //ๅฏไปฅๆŠŠๅˆ†็ฑปๅ†™ๅœจ็ฑป็š„ๅคดๆ–‡ไปถ้‡Œ//ไฝ†ๆ˜ฏๅคง้ƒจๅˆ†้ƒฝๆ˜ฏๅœจๅ•็‹ฌๆ–‡ไปถ้‡Œ๏ผŒๅฐฝ้‡ๆŠŠๅˆ†็ฑปๅ†™ๅœจๅ•็‹ฌ็š„ๆ–‡ไปถไธญ 24 | @interface Hasiqi (AddCategory) 25 | 26 | -(void)addTest; 27 | 28 | @end 29 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/็ฎ—ๆณ•Demo/ๆŽ’ๅบ/BubbleSortDemo/BubbleSortDemo.xcodeproj/xcuserdata/michaelmao.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | BubbleSortDemo.xcscheme_^#shared#^_ 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/MultiThreadDemo-ๅคš็บฟ็จ‹/MultiThreadDemo-ๅคš็บฟ็จ‹.xcodeproj/xcuserdata/michaelmao.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | MultiThreadDemo-ๅคš็บฟ็จ‹.xcscheme_^#shared#^_ 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /ๅผ€ๅ‘ๅทฅๅ…ทTool๐Ÿ”ง/ๅทฅๅ…ท-UITesting.md: -------------------------------------------------------------------------------- 1 | 2 | # XcodeTesting 3 | 4 | 5 | 6 | 7 | ### XCUITest 8 | 9 | ![](http://pic-mike.oss-cn-hongkong.aliyuncs.com/qiniu//2017-05-24-14955849765268.jpg) 10 | 11 | 12 | ![](http://pic-mike.oss-cn-hongkong.aliyuncs.com/qiniu//2017-05-24-14955847860610.jpg) 13 | 14 | 15 | ### Helpful Links 16 | 17 | 1. [Testing in iOS](https://videos.raywenderlich.com/courses/39-testing-in-ios/lessons/2) 18 | 2. [unit-testing-tutorial-mocking-objects](https://www.raywenderlich.com/101306/unit-testing-tutorial-mocking-objects) 19 | 20 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/Memory-RetainCycleDemo/Memory-RetainCycleDemo.xcodeproj/xcuserdata/michaelmao.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | Memory-RetainCycleDemo.xcscheme_^#shared#^_ 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/iOS-Protocol/Protocol-01/Agent2.h: -------------------------------------------------------------------------------- 1 | // 2 | // Agent2.h 3 | // Protocol-01 4 | // 5 | // Created by MZN on 15/12/27. 6 | // Copyright ยฉ 2015ๅนด MZN. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "TicketDelegate.h" 11 | 12 | @interface Agent2 : NSObject 13 | 14 | /** 15 | * ่ฟ”ๅ›ž็ฅจไปท 16 | * 17 | * @return ่ฟ”ๅ›ž็ฅจไปทdouble็ฑปๅž‹ 18 | */ 19 | -(double) ticketsPrice; 20 | 21 | 22 | /** 23 | * ่ฟ”ๅ›žไฝ™็ฅจๅผ ๆ•ฐ 24 | * 25 | * @return ่ฟ”ๅ›žไฝ™็ฅจๅผ ๆ•ฐ 26 | */ 27 | -(int) letfTicketsNum; 28 | 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /ๅญฆไน ๆ—ฅๅฟ—Logs/DailyLearningLogs2017-05/DailyLearningLogs2017-05-06.md: -------------------------------------------------------------------------------- 1 | # DailyLearningLogs 2017-05-06 2 | 3 | ## ๆ•ด็†`EverNote` 4 | 5 | - [x] ๆ•ด็†`EverNote`ๅˆฐInterNational็‰ˆ ๏ผˆ2017-05-06๏ผ‰ๅทฒ็ปๅŸบๆœฌๅฎŒๆˆ๏ผŒๅŽ้ขไผš้š็€ๆ•ด็†่ทŸ่ฟ› 6 | 7 | ## RSS 8 | 9 | - [x] ไฝฟ็”จ`Reeder`้˜…่ฏป`Instapaper`็š„ๆ–‡็ซ ๏ผŒๅนถๆ•ด็†.๏ผˆ2017-05-06๏ผ‰ๅทฒ็ปๅฎŒๆˆๅˆๆญฅๆ•ด็†๏ผŒๅŽ้ขไผš็ป†่ฏป๏ผŒๅš็ฌ”่ฎฐ๏ผŒไธบๆ•ด็†๏ผŒๆŠฝๅ‡บๅšๅฎขๅšๅ‡†ๅค‡ใ€‚ 10 | 11 | ## Git 12 | 13 | - [x] ๅฐ่ฏ•ๆŠŠ้กน็›ฎๆทปๅŠ ๅˆฐGit๏ผˆ2017-05-15๏ผ‰ 14 | 15 | ## Tool 16 | 17 | - [x] ๅฐ่ฏ•ไฝฟ็”จ[Processon](https://www.processon.com/diagrams) ็”ปๅ‡บ้กน็›ฎ็ฑปๅ›พ๏ผŒ็ป“ๆž„๏ผŒๅซ`UML็ฑปๅ›พ`, [UML็ฑปๅ›พๅ‡ ็งๅ…ณ็ณป็š„ๆ€ป็ป“](http://blog.csdn.net/u011991249/article/details/52681587) 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/MMPageViewController/MMPageViewController/Library/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 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxSwift/RxSwift/Disposables/DisposeBase.swift: -------------------------------------------------------------------------------- 1 | // 2 | // DisposeBase.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 4/4/15. 6 | // Copyright ยฉ 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /// Base class for all disposables. 10 | public class DisposeBase { 11 | init() { 12 | #if TRACE_RESOURCES 13 | let _ = Resources.incrementTotal() 14 | #endif 15 | } 16 | 17 | deinit { 18 | #if TRACE_RESOURCES 19 | let _ = Resources.decrementTotal() 20 | #endif 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/pop/pop/POPAnimatablePropertyTypes.h: -------------------------------------------------------------------------------- 1 | /** 2 | Copyright (c) 2014-present, Facebook, Inc. 3 | All rights reserved. 4 | 5 | This source code is licensed under the BSD-style license found in the 6 | LICENSE file in the root directory of this source tree. An additional grant 7 | of patent rights can be found in the PATENTS file in the same directory. 8 | */ 9 | 10 | typedef void (^POPAnimatablePropertyReadBlock)(id obj, CGFloat values[]); 11 | typedef void (^POPAnimatablePropertyWriteBlock)(id obj, const CGFloat values[]); 12 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/MMPageViewController/MMPageViewController/Library/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 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxSwift/RxSwift/Concurrency/SynchronizedDisposeType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SynchronizedDisposeType.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright ยฉ 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | protocol SynchronizedDisposeType : class, Disposable, Lock { 10 | func _synchronized_dispose() 11 | } 12 | 13 | extension SynchronizedDisposeType { 14 | func synchronizedDispose() { 15 | lock(); defer { unlock() } 16 | _synchronized_dispose() 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/Target Support Files/RxSwift/RxSwift.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/RxSwift 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 4 | PODS_BUILD_DIR = ${BUILD_DIR} 5 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 6 | PODS_ROOT = ${SRCROOT} 7 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/RxSwift 8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 9 | SKIP_INSTALL = YES 10 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/Target Support Files/Swinject/Swinject.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Swinject 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 4 | PODS_BUILD_DIR = ${BUILD_DIR} 5 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 6 | PODS_ROOT = ${SRCROOT} 7 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/Swinject 8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 9 | SKIP_INSTALL = YES 10 | -------------------------------------------------------------------------------- /ๅผ€ๅ‘ๅทฅๅ…ทTool๐Ÿ”ง/ๅทฅๅ…ท-Mockๅญฆไน .md: -------------------------------------------------------------------------------- 1 | # ๅทฅๅ…ท-Mockๅญฆไน  2 | 3 | 4 | * mockๆต‹่ฏ•ๅฐฑๆ˜ฏๅœจๆต‹่ฏ•่ฟ‡็จ‹ไธญ๏ผŒๅฏนไบŽๆŸไบ›ไธๅฎนๆ˜“ๆž„้€ ๆˆ–่€…ไธๅฎนๆ˜“่Žทๅ–็š„ๅฏน่ฑก๏ผŒ็”จไธ€ไธช่™šๆ‹Ÿ็š„ๅฏน่ฑกๆฅๅˆ›ๅปบไปฅไพฟๆต‹่ฏ•็š„ๆต‹่ฏ•ๆ–นๆณ•ใ€‚ 5 | 6 | 7 | ### ๅฏน่ฑก 8 | 9 | ่ฟ™ไธช่™šๆ‹Ÿ็š„ๅฏน่ฑกๅฐฑๆ˜ฏmockๅฏน่ฑกใ€‚mockๅฏน่ฑกๅฐฑๆ˜ฏ็œŸๅฎžๅฏน่ฑกๅœจ่ฐƒ่ฏ•ๆœŸ้—ด็š„ไปฃๆ›ฟๅ“ใ€‚ 10 | 11 | ### ๅฏน่ฑกไฝฟ็”จ่Œƒ็•ด 12 | 13 | ็œŸๅฎžๅฏน่ฑกๅ…ทๆœ‰ไธๅฏ็กฎๅฎš็š„่กŒไธบ๏ผŒไบง็”Ÿไธๅฏ้ข„ๆต‹็š„ๆ•ˆๆžœ๏ผŒ๏ผˆๅฆ‚๏ผš่‚ก็ฅจ่กŒๆƒ…๏ผŒๅคฉๆฐ”้ข„ๆŠฅ๏ผ‰็œŸๅฎžๅฏน่ฑกๅพˆ้šพ่ขซๅˆ›ๅปบ็š„ ็œŸๅฎžๅฏน่ฑก็š„ๆŸไบ›่กŒไธบๅพˆ้šพ่ขซ่งฆๅ‘็œŸๅฎžๅฏน่ฑกๅฎž้™…ไธŠ่ฟ˜ไธๅญ˜ๅœจ็š„๏ผˆๅ’Œๅ…ถไป–ๅผ€ๅ‘ๅฐ็ป„ๆˆ–่€…ๅ’Œๆ–ฐ็š„็กฌไปถๆ‰“ไบค้“๏ผ‰็ญ‰็ญ‰ใ€‚ 14 | 15 | ### ๅ…ณ้”ฎๆญฅ้ชค 16 | 17 | ไฝฟ็”จไธ€ไธชๆŽฅๅฃๆฅๆ่ฟฐ่ฟ™ไธชๅฏน่ฑกใ€‚ๅœจไบงๅ“ไปฃ็ ไธญๅฎž็Žฐ่ฟ™ไธชๆŽฅๅฃ๏ผŒๅœจๆต‹่ฏ•ไปฃ็ ไธญๅฎž็Žฐ่ฟ™ไธชๆŽฅๅฃ๏ผŒๅœจ่ขซๆต‹่ฏ•ไปฃ็ ไธญๅชๆ˜ฏ้€š่ฟ‡ๆŽฅๅฃๆฅๅผ•็”จๅฏน่ฑก๏ผŒๆ‰€ไปฅๅฎƒไธ็Ÿฅ้“่ฟ™ไธชๅผ•็”จ็š„ๅฏน่ฑกๆ˜ฏ็œŸๅฎžๅฏน่ฑก๏ผŒ่ฟ˜ๆ˜ฏmockๅฏน่ฑกใ€‚ 18 | 19 | ### ๆต‹่ฏ•ๅทฅๅ…ท 20 | 21 | ไฝฟ็”จMock Object่ฟ›่กŒๆต‹่ฏ•๏ผŒไธป่ฆๆ˜ฏ็”จๆฅๆจกๆ‹Ÿ้‚ฃไบ›ๅœจๅบ”็”จไธญไธๅฎนๆ˜“ๆž„้€ ๏ผˆๅฆ‚HttpServletRequestๅฟ…้กปๅœจServletๅฎนๅ™จไธญๆ‰่ƒฝๆž„้€ ๅ‡บๆฅ๏ผ‰ๆˆ–่€…ๆฏ”่พƒๅคๆ‚็š„ๅฏน่ฑก๏ผˆๅฆ‚JDBCไธญ็š„ResultSetๅฏน่ฑก๏ผ‰ไปŽ่€Œไฝฟๆต‹่ฏ•้กบๅˆฉ่ฟ›่กŒ็š„ๅทฅๅ…ทใ€‚ -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxSwift/RxSwift/Concurrency/SynchronizedOnType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SynchronizedOnType.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright ยฉ 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | protocol SynchronizedOnType : class, ObserverType, Lock { 10 | func _synchronized_on(_ event: Event) 11 | } 12 | 13 | extension SynchronizedOnType { 14 | func synchronizedOn(_ event: Event) { 15 | lock(); defer { unlock() } 16 | _synchronized_on(event) 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/Target Support Files/Alamofire/Alamofire.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Alamofire 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 4 | PODS_BUILD_DIR = ${BUILD_DIR} 5 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 6 | PODS_ROOT = ${SRCROOT} 7 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/Alamofire 8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 9 | SKIP_INSTALL = YES 10 | -------------------------------------------------------------------------------- /่ฎพ่ฎกๆจกๅผ/่งฃๆž-ๅญๆŽงๅˆถๅ™จChildVC.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | # ่งฃๆž-ๅญๆŽงๅˆถๅ™จChildVC 4 | 5 | 6 | Child view controllers is also what makes container view controllers possible. But rather than just adding children to its view, containers take things a step further and also controls the transitioning between them. That means that our content view controllers can stay focused on layout and rendering, while leaving the UI state management to their container. 7 | 8 | 9 | 10 | # ๅ‚่€ƒ 11 | 12 | 1. [Custom container view controllers in Swift](https://www.swiftbysundell.com/articles/custom-container-view-controllers-in-swift/) -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/MMPageViewController/MMPageViewController/Library/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 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxCocoa/RxCocoa/iOS/Events/ItemEvents.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ItemEvents.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 6/20/15. 6 | // Copyright ยฉ 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) 10 | import UIKit 11 | 12 | public typealias ItemMovedEvent = (sourceIndex: IndexPath, destinationIndex: IndexPath) 13 | public typealias WillDisplayCellEvent = (cell: UITableViewCell, indexPath: IndexPath) 14 | public typealias DidEndDisplayingCellEvent = (cell: UITableViewCell, indexPath: IndexPath) 15 | #endif 16 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxCocoa/RxCocoa/RxCocoa.h: -------------------------------------------------------------------------------- 1 | // 2 | // RxCocoa.h 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 2/21/15. 6 | // Copyright ยฉ 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "_RX.h" 11 | #import "_RXDelegateProxy.h" 12 | #import "_RXKVOObserver.h" 13 | #import "_RXObjCRuntime.h" 14 | 15 | //! Project version number for RxCocoa. 16 | FOUNDATION_EXPORT double RxCocoaVersionNumber; 17 | 18 | //! Project version string for RxCocoa. 19 | FOUNDATION_EXPORT const unsigned char RxCocoaVersionString[]; -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/Target Support Files/pop/pop.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_CXX_LANGUAGE_STANDARD = c++11 2 | CLANG_CXX_LIBRARY = libc++ 3 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/pop 4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 5 | OTHER_LDFLAGS = -l"c++" 6 | PODS_BUILD_DIR = ${BUILD_DIR} 7 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_ROOT = ${SRCROOT} 9 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/pop 10 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 11 | SKIP_INSTALL = YES 12 | -------------------------------------------------------------------------------- /ๅญฆไน ๆ—ฅๅฟ—Logs/DailyLearningLogs2017-06/DailyLearningLogs2017-06-12.md: -------------------------------------------------------------------------------- 1 | # DailyLearningLogs 2017-06-12 2 | 3 | ## Todo 4 | 5 | 6 | ## Done 7 | 8 | - [x] ไฝฟ็”จEasy APNs Provider ๏ผˆ2017-06-12๏ผ‰ 9 | 10 | - [x] ๆ•ด็†KVCKVO ๏ผˆ2017-06-12๏ผ‰ 11 | 12 | 13 | - [x] ๆ•ด็†้ข่ฏ•้ข˜ 14 | 15 | [2017ๅนด5ๆœˆiOSๆ‹›ไบบๅฟƒๅพ—๏ผˆ้™„้ข่ฏ•้ข˜๏ผ‰ - ็ฎ€ไนฆ](http://www.jianshu.com/p/56e40ea56813) 16 | [iOSInterviewQuestions/01ใ€Šๆ‹›่˜ไธ€ไธช้ ่ฐฑ็š„iOSใ€‹้ข่ฏ•้ข˜](https://github.com/ChenYilong/iOSInterviewQuestions/tree/master/01%E3%80%8A%E6%8B%9B%E8%81%98%E4%B8%80%E4%B8%AA%E9%9D%A0%E8%B0%B1%E7%9A%84iOS%E3%80%8B%E9%9D%A2%E8%AF%95%E9%A2%98%E5%8F%82%E8%80%83%E7%AD%94%E6%A1%88) 17 | 18 | 19 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/iOS-Protocol/Protocol-01/Protocol/TicketDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // TicketDelegate.h 3 | // Protocol-01 4 | // 5 | // Created by MZN on 15/12/27. 6 | // Copyright ยฉ 2015ๅนด MZN. All rights reserved. 7 | // 8 | 9 | #ifndef TicketDelegate_h 10 | #define TicketDelegate_h 11 | 12 | 13 | @protocol TicketDelegate 14 | 15 | 16 | /** 17 | * ่ฟ”ๅ›ž็ฅจไปท 18 | * 19 | * @return ่ฟ”ๅ›ž็ฅจไปทdouble็ฑปๅž‹ 20 | */ 21 | -(double) ticketsPrice; 22 | 23 | 24 | /** 25 | * ่ฟ”ๅ›žไฝ™็ฅจๅผ ๆ•ฐ 26 | * 27 | * @return ่ฟ”ๅ›žไฝ™็ฅจๅผ ๆ•ฐ 28 | */ 29 | -(int) letfTicketsNum; 30 | 31 | 32 | @end 33 | 34 | 35 | 36 | #endif /* TicketDelegate_h */ 37 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/RuntimeDemo/RuntimeDemo/Person.h: -------------------------------------------------------------------------------- 1 | // 2 | // Person.h 3 | // RuntimeDemo 4 | // 5 | // Created by MichaelMao on 2018/9/4. 6 | // Copyright ยฉ 2018ๅนด MichaelMao. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class User; 12 | 13 | @interface Person : NSObject 14 | 15 | @property (nonatomic, copy) NSString *school; 16 | @property (nonatomic, copy) NSString *phone; 17 | @property (nonatomic, copy) NSString *address; 18 | @property (nonatomic, strong) User *user; 19 | 20 | - (void)printName:(NSString *)name; 21 | 22 | /** ๆœชๅฎž็Žฐ็š„ๆ–นๆณ• */ 23 | - (void)unImpMethod; 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxCocoa/RxCocoa/iOS/UIImageView+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIImageView+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 4/1/15. 6 | // Copyright ยฉ 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) 10 | 11 | import RxSwift 12 | import UIKit 13 | 14 | extension Reactive where Base: UIImageView { 15 | 16 | /// Bindable sink for `image` property. 17 | public var image: Binder { 18 | return Binder(base) { imageView, image in 19 | imageView.image = image 20 | } 21 | } 22 | } 23 | 24 | #endif 25 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/Target Support Files/RxCocoa/RxCocoa-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 "RxCocoa.h" 14 | #import "RxCocoaRuntime.h" 15 | #import "_RX.h" 16 | #import "_RXDelegateProxy.h" 17 | #import "_RXKVOObserver.h" 18 | #import "_RXObjCRuntime.h" 19 | 20 | FOUNDATION_EXPORT double RxCocoaVersionNumber; 21 | FOUNDATION_EXPORT const unsigned char RxCocoaVersionString[]; 22 | 23 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/iOS-Protocol/Protocol-01/Protocol/MyProtocol.h: -------------------------------------------------------------------------------- 1 | // 2 | // MyProtocol.h 3 | // Protocol-01 4 | // 5 | // Created by MZN on 15/12/27. 6 | // Copyright ยฉ 2015ๅนด MZN. All rights reserved. 7 | // 8 | 9 | #ifndef MyProtocol_h 10 | #define MyProtocol_h 11 | 12 | 13 | #import 14 | 15 | //ๅฎšไน‰ไบ†ไธ€ไธชๅๅซprotocol็š„ๅ่ฎฎ 16 | @protocol MyProtocol 17 | 18 | 19 | @required 20 | 21 | - (void)protocolTest1; 22 | 23 | - (void)protocolTest2; 24 | 25 | 26 | @optional 27 | 28 | - (void)protocolTest3; 29 | 30 | 31 | @end 32 | 33 | 34 | #endif /* MyProtocol_h */ 35 | 36 | 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /ๅญฆไน ๆ—ฅๅฟ—Logs/DailyLearningLogs2017-05/DailyLearningLogs2017-05-20.md: -------------------------------------------------------------------------------- 1 | # DailyLearningLogs 2017-05-20 2 | 3 | ## Todo 4 | - [ ] [`Xcode` Dehugging](https://classroom.udacity.com/courses/ud774/lessons/4377638660/concepts/43871786240923)ใ€Xใ€‘ 5 | ## Done 6 | 7 | - [x] [`AFNetworking`่ฏฆ่งฃ](https://github.com/Draveness/Analyze/blob/master/contents/AFNetworking/AFNetworking%20%E6%A6%82%E8%BF%B0%EF%BC%88%E4%B8%80%EF%BC%89.md) (2017-05-20) 8 | 9 | - [x] ๆ•ด็†้กน็›ฎๆžถๆž„ (ๆ•ดไธชๅˆ็•ฅ็š„Reviewไบ†ไธ€ไธ‹ๅ„ไธชๆจกๅ—็ฑป็š„ไธป่ฆๆก†ๆžถ,AFN่ฟ˜้œ€่ฆๅ†็†Ÿๆ‚‰ไธ‹)(2017-05-20) 10 | - [x] ๆŸฅ็œ‹[RecentlyReading](https://github.com/FrizzleFur/DailyLearning/blob/master/RecentlyReading.md) (2017-05-20) 11 | 12 | 13 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxCocoa/RxCocoa/Runtime/include/RxCocoaRuntime.h: -------------------------------------------------------------------------------- 1 | // 2 | // RxCocoaRuntime.h 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 2/21/15. 6 | // Copyright ยฉ 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "_RX.h" 11 | #import "_RXDelegateProxy.h" 12 | #import "_RXKVOObserver.h" 13 | #import "_RXObjCRuntime.h" 14 | 15 | //! Project version number for RxCocoa. 16 | FOUNDATION_EXPORT double RxCocoaVersionNumber; 17 | 18 | //! Project version string for RxCocoa. 19 | FOUNDATION_EXPORT const unsigned char RxCocoaVersionString[]; 20 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxSwift/RxSwift/Schedulers/Internal/InvocableScheduledItem.swift: -------------------------------------------------------------------------------- 1 | // 2 | // InvocableScheduledItem.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 11/7/15. 6 | // Copyright ยฉ 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | struct InvocableScheduledItem : InvocableType { 10 | 11 | let _invocable: I 12 | let _state: I.Value 13 | 14 | init(invocable: I, state: I.Value) { 15 | _invocable = invocable 16 | _state = state 17 | } 18 | 19 | func invoke() { 20 | _invocable.invoke(_state) 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/Swinject/Sources/Swinject.h: -------------------------------------------------------------------------------- 1 | // 2 | // Swinject.h 3 | // Swinject 4 | // 5 | // Created by Yoichi Tagaya on 7/22/15. 6 | // Copyright ยฉ 2015 Swinject Contributors. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | //! Project version number for Swinject. 12 | FOUNDATION_EXPORT double SwinjectVersionNumber; 13 | 14 | //! Project version string for Swinject. 15 | FOUNDATION_EXPORT const unsigned char SwinjectVersionString[]; 16 | 17 | // In this header, you should import all the public headers of your framework using statements like #import 18 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/MMPageViewController/MMPageViewController/Library/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" -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxSwift/RxSwift/Disposables/SubscriptionDisposable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SubscriptionDisposable.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright ยฉ 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | struct SubscriptionDisposable : Disposable { 10 | private let _key: T.DisposeKey 11 | private weak var _owner: T? 12 | 13 | init(owner: T, key: T.DisposeKey) { 14 | _owner = owner 15 | _key = key 16 | } 17 | 18 | func dispose() { 19 | _owner?.synchronizedUnsubscribe(_key) 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/Target Support Files/Kingfisher/Kingfisher.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Kingfisher 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | OTHER_LDFLAGS = -framework "Accelerate" -framework "CFNetwork" 4 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 5 | PODS_BUILD_DIR = ${BUILD_DIR} 6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_ROOT = ${SRCROOT} 8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/Kingfisher 9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 10 | SKIP_INSTALL = YES 11 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/Swinject/Sources/GraphIdentifier.swift: -------------------------------------------------------------------------------- 1 | // 2 | // GraphIdentifier.swift 3 | // Swinject 4 | // 5 | // Created by Jakub Vaลˆo on 08/03/2018. 6 | // Copyright ยฉ 2018 Swinject Contributors. All rights reserved. 7 | // 8 | 9 | /// Unique identifier of an object graph during a resolution process. 10 | public final class GraphIdentifier {} 11 | 12 | extension GraphIdentifier: Equatable, Hashable { 13 | public static func == (lhs: GraphIdentifier, rhs: GraphIdentifier) -> Bool { 14 | return lhs === rhs 15 | } 16 | 17 | public var hashValue: Int { return ObjectIdentifier(self).hashValue } 18 | } 19 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/Target Support Files/RxCocoa/RxCocoa.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/RxCocoa 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 5 | PODS_BUILD_DIR = ${BUILD_DIR} 6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_ROOT = ${SRCROOT} 8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/RxCocoa 9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 10 | SKIP_INSTALL = YES 11 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxCocoa/RxCocoa/Traits/Driver/BehaviorRelay+Driver.swift: -------------------------------------------------------------------------------- 1 | // 2 | // BehaviorRelay+Driver.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 10/7/17. 6 | // Copyright ยฉ 2017 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import RxSwift 10 | 11 | extension BehaviorRelay { 12 | /// Converts `BehaviorRelay` to `Driver`. 13 | /// 14 | /// - returns: Observable sequence. 15 | public func asDriver() -> Driver { 16 | let source = self.asObservable() 17 | .observeOn(DriverSharingStrategy.scheduler) 18 | return SharedSequence(source) 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxCocoa/RxCocoa/Traits/Signal/PublishRelay+Signal.swift: -------------------------------------------------------------------------------- 1 | // 2 | // PublishRelay+Signal.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 12/28/15. 6 | // Copyright ยฉ 2017 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import RxSwift 10 | 11 | extension PublishRelay { 12 | /// Converts `PublishRelay` to `Signal`. 13 | /// 14 | /// - returns: Observable sequence. 15 | public func asSignal() -> Signal { 16 | let source = self.asObservable() 17 | .observeOn(SignalSharingStrategy.scheduler) 18 | return SharedSequence(source) 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxCocoa/RxCocoa/iOS/UIProgressView+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIProgressView+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Samuel Bae on 2/27/16. 6 | // Copyright ยฉ 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) 10 | 11 | import RxSwift 12 | import UIKit 13 | 14 | extension Reactive where Base: UIProgressView { 15 | 16 | /// Bindable sink for `progress` property 17 | public var progress: Binder { 18 | return Binder(self.base) { progressView, progress in 19 | progressView.progress = progress 20 | } 21 | } 22 | 23 | } 24 | 25 | #endif 26 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxSwift/RxSwift/ObservableConvertibleType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ObservableConvertibleType.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 9/17/15. 6 | // Copyright ยฉ 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /// Type that can be converted to observable sequence (`Observable`). 10 | public protocol ObservableConvertibleType { 11 | /// Type of elements in sequence. 12 | associatedtype E 13 | 14 | /// Converts `self` to `Observable` sequence. 15 | /// 16 | /// - returns: Observable sequence that represents `self`. 17 | func asObservable() -> Observable 18 | } 19 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxCocoa/Platform/DispatchQueue+Extensions.swift: -------------------------------------------------------------------------------- 1 | // 2 | // DispatchQueue+Extensions.swift 3 | // Platform 4 | // 5 | // Created by Krunoslav Zaher on 10/22/16. 6 | // Copyright ยฉ 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Dispatch 10 | 11 | extension DispatchQueue { 12 | private static var token: DispatchSpecificKey<()> = { 13 | let key = DispatchSpecificKey<()>() 14 | DispatchQueue.main.setSpecific(key: key, value: ()) 15 | return key 16 | }() 17 | 18 | static var isMain: Bool { 19 | return DispatchQueue.getSpecific(key: token) != nil 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxCocoa/RxCocoa/iOS/UIAlertAction+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIAlertAction+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Andrew Breckenridge on 5/7/16. 6 | // Copyright ยฉ 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) 10 | 11 | import UIKit 12 | import RxSwift 13 | 14 | extension Reactive where Base: UIAlertAction { 15 | 16 | /// Bindable sink for `enabled` property. 17 | public var isEnabled: Binder { 18 | return Binder(self.base) { alertAction, value in 19 | alertAction.isEnabled = value 20 | } 21 | } 22 | 23 | } 24 | 25 | #endif 26 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxSwift/Platform/DispatchQueue+Extensions.swift: -------------------------------------------------------------------------------- 1 | // 2 | // DispatchQueue+Extensions.swift 3 | // Platform 4 | // 5 | // Created by Krunoslav Zaher on 10/22/16. 6 | // Copyright ยฉ 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Dispatch 10 | 11 | extension DispatchQueue { 12 | private static var token: DispatchSpecificKey<()> = { 13 | let key = DispatchSpecificKey<()>() 14 | DispatchQueue.main.setSpecific(key: key, value: ()) 15 | return key 16 | }() 17 | 18 | static var isMain: Bool { 19 | return DispatchQueue.getSpecific(key: token) != nil 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /ๅผ€ๅ‘ๅทฅๅ…ทTool๐Ÿ”ง/ๅทฅๅ…ท-Instrumentsๅญฆไน .md: -------------------------------------------------------------------------------- 1 | 2 | # Instruments 3 | 4 | 5 | 6 | ![](http://pic-mike.oss-cn-hongkong.aliyuncs.com/qiniu/2017-06-13-14973471283623.jpg) 7 | 8 | ![](http://pic-mike.oss-cn-hongkong.aliyuncs.com/qiniu/2017-06-13-14973526726610.jpg) 9 | 10 | 11 | ### Time Profile 12 | 13 | 14 | ### Memory Leaks 15 | 16 | 17 | ### Core Animation 18 | 19 | 20 | #### Alpha Blending 21 | 22 | if the Alpha is less than 1, that`s not opacity, and thus๏ผŒ `GPU` needs to caculate a new color for each pixel~ 23 | 24 | ![](http://pic-mike.oss-cn-hongkong.aliyuncs.com/qiniu/2017-06-14-14974477879260.jpg) 25 | 26 | 27 | #### OffScreen Rendering 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /UnitTest/UnitTest.md: -------------------------------------------------------------------------------- 1 | # ่งฃๆž-UnitTest 2 | 3 | 4 | 5 | - Test-Driven Development (TDD) 6 | - Behavior-Driven Development (BDD) 7 | 8 | 9 | 10 | ## ๆต‹่ฏ•ๆก†ๆžถ 11 | 12 | 13 | [Quick](https://github.com/Quick/Quick) 14 | 15 | ### Swift 16 | 17 | * [kiwi-bdd/Kiwi: Simple BDD for iOS](https://github.com/kiwi-bdd/Kiwi) 18 | 19 | 20 | ### Objective-C 21 | 22 | * [kiwi-bdd/Kiwi: Simple BDD for iOS](https://github.com/kiwi-bdd/Kiwi) 23 | 24 | 25 | ## Moke 26 | 27 | * [OCMoke](https://blog.csdn.net/lin1109221208/article/details/93051476) 28 | 29 | 30 | ## Ref 31 | 32 | * [Swift ่ฟ›้˜ถๅผ€ๅ‘ๆŒ‡ๅ—๏ผšๅฆ‚ไฝ•ไฝฟ็”จ Quickใ€Nimble ๆ‰ง่กŒๆต‹่ฏ•้ฉฑๅŠจๅผ€ๅ‘๏ผˆTDD๏ผ‰ - ๆŽ˜้‡‘](https://juejin.im/post/5a093dc951882531d827e8ff) -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxCocoa/RxCocoa/iOS/UINavigationItem+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UINavigationItem+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by kumapo on 2016/05/09. 6 | // Copyright ยฉ 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) 10 | 11 | import UIKit 12 | import RxSwift 13 | 14 | extension Reactive where Base: UINavigationItem { 15 | 16 | /// Bindable sink for `title` property. 17 | public var title: Binder { 18 | return Binder(self.base) { navigationItem, text in 19 | navigationItem.title = text 20 | } 21 | } 22 | 23 | } 24 | 25 | #endif 26 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/MMPageViewController/MMPageViewController/Library/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 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/BlockDeomo/BlockDeomo.xcodeproj/xcuserdata/michaelmao.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | BlockDeomo.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | SuppressBuildableAutocreation 14 | 15 | EDDF2E951EA472660049D838 16 | 17 | primary 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxCocoa/RxCocoa/iOS/UITabBarItem+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UITabBarItem+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Mateusz Derks on 04/03/16. 6 | // Copyright ยฉ 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) 10 | 11 | import UIKit 12 | import RxSwift 13 | 14 | extension Reactive where Base: UITabBarItem { 15 | 16 | /// Bindable sink for `badgeValue` property. 17 | public var badgeValue: Binder { 18 | return Binder(self.base) { tabBarItem, badgeValue in 19 | tabBarItem.badgeValue = badgeValue 20 | } 21 | } 22 | 23 | } 24 | 25 | #endif 26 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxCocoa/RxCocoa/iOS/UIViewController+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIViewController+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Kyle Fuller on 27/05/2016. 6 | // Copyright ยฉ 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) 10 | 11 | import UIKit 12 | import RxSwift 13 | 14 | extension Reactive where Base: UIViewController { 15 | 16 | /// Bindable sink for `title`. 17 | public var title: Binder { 18 | return Binder(self.base) { viewController, title in 19 | viewController.title = title 20 | } 21 | } 22 | 23 | } 24 | #endif 25 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/iOS-Protocol/Protocol-01.xcodeproj/xcuserdata/mzn.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | Protocol-01.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | SuppressBuildableAutocreation 14 | 15 | 1B3387FE1C2D30E2005DEB04 16 | 17 | primary 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /ๅญฆไน ๆ—ฅๅฟ—Logs/DailyLearningLogs2017-05/DailyLearningLogs2017-05-02.md: -------------------------------------------------------------------------------- 1 | 2 | # DailyLearningLogs 2017-05-02 3 | 4 | ## Git 5 | 6 | - [x] [Learn Git](https://www.codecademy.com/learn/learn-git) (2017-05-02) 7 | 8 | ## Linux 9 | - [x] learn Bash Commands(2017-05-02) 10 | - [x] learn [iTerm2](https://www.iterm2.com/) task(2017-05-02) 11 | - 1. ๅฎŒๆˆ`iTerm2`็š„ๅธธ็”จๅฟซๆท้”ฎๅญฆไน (2017-05-02) 12 | - 2. ๅฎŒๆˆ`iTerm2`็š„ๅ•่ฏๅˆ‡ๆขๅญฆไน (2017-05-02) 13 | ![](http://oc98nass3.bkt.clouddn.com/14936861394836.jpg) 14 | 15 | ## Hexo 16 | - [x] Hexo blog add comments (add [livere](https://livere.com/insight/managereply/period) ๅ’Œ 17 | [hypercomments](http://admin.hypercomments.com/comments/approve/90397)) (2017-05-02) 18 | 19 | 20 | -------------------------------------------------------------------------------- /ๅญฆไน ๆ—ฅๅฟ—Logs/DailyLearningLogs2017-06/DailyLearningLogs2017-06-03.md: -------------------------------------------------------------------------------- 1 | # DailyLearningLogs 2017-06-03 2 | 3 | ## Todo 4 | 5 | ## Done 6 | 7 | - [x] ่ฏ•็”จ[InjectionForXcode](https://github.com/johnno1962/injectionforxcode) (2017-06-03) 8 | - [x] [PART 18: 302: Advanced LLDB and Console Debugging](https://videos.raywenderlich.com/courses/59-rwdevcon-2016-vault/lessons/18) (2017-06-03) 9 | 10 | - [x] [LLDB](https://www.raywenderlich.com/?s=lldb&cof=FORID%3A10) (2017-06-03) 11 | 12 | - [x] Swift, RW, boxue (2017-06-03) 13 | 14 | - [x] [Mastering Git](https://videos.raywenderlich.com/courses/81-rwdevcon-2017-vault-tutorials/lessons/6) (2017-06-03) 15 | 16 | - [x] ไบบ็ฑป็ฎ€ๅฒ (2017-06-03) 17 | 18 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxCocoa/RxCocoa/Foundation/Logging.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Logging.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 4/3/15. 6 | // Copyright ยฉ 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import struct Foundation.URLRequest 10 | 11 | /// Simple logging settings for RxCocoa library. 12 | public struct Logging { 13 | public typealias LogURLRequest = (URLRequest) -> Bool 14 | 15 | /// Log URL requests to standard output in curl format. 16 | public static var URLRequests: LogURLRequest = { _ in 17 | #if DEBUG 18 | return true 19 | #else 20 | return false 21 | #endif 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/Notification/Notification.xcodeproj/xcuserdata/michaelmao.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | Notification.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | SuppressBuildableAutocreation 14 | 15 | EDE10D301E89CFC400FBF507 16 | 17 | primary 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /ไธ‰ๆ–น่ฝฎๅญ่งฃๆž๐Ÿ’ก/่งฃๆž-JXCategoryView.md: -------------------------------------------------------------------------------- 1 | # JXCategoryView 2 | 3 | pujiaxin33/JXCategoryView: A powerful and easy to use category view (segmentedcontrol, segmentview, pagingview, pagerview, pagecontrol) (่…พ่ฎฏๆ–ฐ้—ปใ€ไปŠๆ—ฅๅคดๆกใ€QQ้Ÿณไนใ€็ฝ‘ๆ˜“ไบ‘้Ÿณไนใ€ไบฌไธœใ€็ˆฑๅฅ‡่‰บใ€่…พ่ฎฏ่ง†้ข‘ใ€ๆท˜ๅฎใ€ๅคฉ็Œซใ€็ฎ€ไนฆใ€ๅพฎๅš็ญ‰ๆ‰€ๆœ‰ไธปๆตAPPๅˆ†็ฑปๅˆ‡ๆขๆปšๅŠจ่ง†ๅ›พ) 4 | 5 | ## JXPageListView 6 | 7 | 8 | pujiaxin33/JXPageListView: ้ซ˜ไปฟ้—ฒ้ฑผใ€่ฝฌ่ฝฌใ€ไบฌไธœใ€ไธญๅคฎๅคฉๆฐ”้ข„ๆŠฅ็ญ‰ไธปๆตAPPๅˆ—่กจๅบ•้ƒจๅˆ†้กตๆปšๅŠจ่ง†ๅ›พ 9 | 10 | 11 | ไธŠไธ‹ๅทฆๅณๆปšๅŠจไบคไบ’ๆต็•…๏ผ› 12 | ๆ”ฏๆŒMJRefresh็ญ‰headerๅŠ ่ฝฝ๏ผ› 13 | ๆ”ฏๆŒHUD loadingๅŠ ่ฝฝ๏ผ› 14 | ๆ”ฏๆŒๅบ•้ƒจๅˆ†็ฑปๆปšๅŠจๅˆ—่กจ็Šถๆ€ไฟๅญ˜๏ผ› 15 | ๆ”ฏๆŒๅบ•้ƒจๅˆ†็ฑปๆปšๅŠจๅˆ—่กจ็Šถๆ€ไธไฟๅญ˜๏ผ› 16 | ๆ•ˆๆžœ้ข„่งˆ 17 | 18 | 19 | 20 | ## ๅ‚่€ƒ 21 | 22 | 1. [JXCategoryView](https://github.com/pujiaxin33/JXCategoryView) 23 | 2. [pujiaxin33/JXPageListView: ้ซ˜ไปฟ้—ฒ้ฑผใ€่ฝฌ่ฝฌใ€ไบฌไธœใ€ไธญๅคฎๅคฉๆฐ”้ข„ๆŠฅ็ญ‰ไธปๆตAPPๅˆ—่กจๅบ•้ƒจๅˆ†้กตๆปšๅŠจ่ง†ๅ›พ](https://github.com/pujiaxin33/JXPageListView) -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/MMPageViewController/MMPageViewController/Library/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 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/MMPageViewController/MMPageViewController/Library/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 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/MMPageViewController/MMPageViewController.xcodeproj/xcuserdata/michaelmao.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | MMPageViewController.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | SuppressBuildableAutocreation 14 | 15 | ED1F8B621E6ABD9100617348 16 | 17 | primary 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxSwift/RxSwift/Extensions/String+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // String+Rx.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 12/25/15. 6 | // Copyright ยฉ 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | extension String { 10 | /// This is needed because on Linux Swift doesn't have `rangeOfString(..., options: .BackwardsSearch)` 11 | func lastIndexOf(_ character: Character) -> Index? { 12 | var index = endIndex 13 | while index > startIndex { 14 | index = self.index(before: index) 15 | if self[index] == character { 16 | return index 17 | } 18 | } 19 | 20 | return nil 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/MMPageViewController/MMPageViewController/MMPageViewController_PrefixHeader.pch: -------------------------------------------------------------------------------- 1 | // 2 | // MMPageViewController_PrefixHeader.pch 3 | // MMPageViewController 4 | // 5 | // Created by MichaelMao on 17/3/4. 6 | // Copyright ยฉ 2017ๅนด MichaelMao. All rights reserved. 7 | // 8 | 9 | #ifndef MMPageViewController_PrefixHeader_pch 10 | #define MMPageViewController_PrefixHeader_pch 11 | 12 | // Include any system framework and library headers here that should be included in all compilation units. 13 | // You will also need to set the Prefix Header build setting of one or more of your targets to reference this file. 14 | #import "UIView+Size.h" 15 | #import "MJRefresh.h" 16 | 17 | #endif /* MMPageViewController_PrefixHeader_pch */ 18 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxCocoa/RxCocoa/iOS/UIApplication+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIApplication+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Mads Bรธgeskov on 18/01/16. 6 | // Copyright ยฉ 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) 10 | 11 | import UIKit 12 | import RxSwift 13 | 14 | extension Reactive where Base: UIApplication { 15 | 16 | /// Bindable sink for `networkActivityIndicatorVisible`. 17 | public var isNetworkActivityIndicatorVisible: Binder { 18 | return Binder(self.base) { application, active in 19 | application.isNetworkActivityIndicatorVisible = active 20 | } 21 | } 22 | } 23 | #endif 24 | 25 | -------------------------------------------------------------------------------- /ๅผ€ๅ‘ๅทฅๅ…ทTool๐Ÿ”ง/ๅทฅๅ…ท-Sourcery็”ŸๆˆSwiftไปฃ็ .md: -------------------------------------------------------------------------------- 1 | # ๅทฅๅ…ท-Sourcery็”ŸๆˆSwiftไปฃ็  2 | 3 | ๅฆ‚ๆžœไฝ ๅƒๅคงๅคšๆ•ฐๅผ€ๅ‘ไบบๅ‘˜ไธ€ๆ ท๏ผŒไธ€้ๅˆไธ€้ๅœฐๅ†™ๅŒๆ ท็š„ไธœ่ฅฟไผšๅ˜ๅพ—ๅพˆๆ— ่Šใ€‚ๆ‚จๅฏ่ƒฝไผšๅ‘็Žฐ่‡ชๅทฑๅœจไบ”็งไธๅŒ็š„ๆ–นๅผไธญๅšๅŒๆ ท็š„ไบ‹ๆƒ…็บฏ็ฒนๆ˜ฏๅ‡บไบŽๅฏนๅคšๆ ทๆ€ง็š„้œ€ๆฑ‚ใ€‚ 4 | 5 | ่™ฝ็„ถๆ‰พๅˆฐ่งฃๅ†ณๅŒไธ€้—ฎ้ข˜็š„ๆ›ดๅฅฝ่งฃๅ†ณๆ–นๆกˆๅนถไธๆ˜ฏไธ€ไธชๅไธปๆ„๏ผŒไฝ†ๆ˜ฏ่ฎฉ่ฟ™ไบ›่งฃๅ†ณๆ–นๆกˆ้ๅธƒๆ‚จ็š„้กน็›ฎๆ˜ฏไธ€ไธชๅไธปๆ„ใ€‚ไฝ ๅฏไปฅๅฏนไฝ ็š„้กน็›ฎๅš็š„ๆœ€็ณŸ็ณ•็š„ไบ‹ๆƒ…ๆ˜ฏ็”จๅ„็งๆƒณๆณ•ๆททๆท†ๅบ•ๅฑ‚ๆžถๆž„ๅŽŸๅˆ™ใ€‚ 6 | 7 | ้‚ฃไนˆไฝ ็ฆปๅผ€ไบ†ๅ“ช้‡Œ๏ผŸๅ†™ๆ— ่Š็š„ๆ ทๆฟไปฃ็ ๏ผŸไนŸ่ฎธไฝ ๅฏไปฅๆƒณๅ‡บไธ€ไบ›่ถ…็บง้€š็”จ็š„็ฅžๅฅ‡ๅŠจๆ€ๆก†ๆžถๆฅไธบไฝ ๅฎŒๆˆๅทฅไฝœใ€‚ไฝ†ๆ˜ฏไปŽ็Žฐๅœจๅผ€ๅง‹็š„ไธ‰ไธชๆœˆ๏ผŒไฝ ๅฐ†ๅฐ่ฏ•่งฃๅผ€ไฝ ๆœช่ฎฐๅฝ•็š„้ญ”ๆณ•ไปฃ็ ๅนถไธ”ไธ็Ÿฅ้“ๅ‘็”Ÿไบ†ไป€ไนˆใ€‚ 8 | 9 | ้‚ฃไนˆ๏ผŒๅฆ‚ๆžœๆœ‰ๅŠžๆณ•่ฎฉๆŸไบบไธบๆ‚จ็ผ–ๅ†™ๅ†—้•ฟ็š„ๆ ทๆฟไปฃ็ ๏ผŒไปฅ100๏ผ…็š„ๅ‡†็กฎๅบฆๅฎŒๆˆ่ง„่Œƒ๏ผŒๅนถๅ…่ดนๅทฅไฝœๆ€ŽไนˆๅŠž๏ผŸ 10 | 11 | Sourceryๆ˜ฏไธ€ไธชๅผ€ๆบๅทฅๅ…ท๏ผŒๅฏไปฅไปŽ้ข„ๅฎšไน‰็š„ๆจกๆฟ็”ŸๆˆSwiftไปฃ็ ใ€‚ไฝ†ๅฎƒไธไป…ไป…ๆ˜ฏไธ€ไธชๆ นๆฎไธ€็ป„่ง„ๅˆ™ๅๅ‡บๆบๆ–‡ไปถ็š„ๆ„š่ ขๅฎใ€‚ๅฎƒๆ˜ฏไธ€ไธชๆ™บ่ƒฝๅทฅๅ…ท๏ผŒๅฏไปฅๆ‰ซๆๆ‚จ็š„ๆบไปฃ็ ๅนถๅœจๆจกๆฟไธญไฝฟ็”จ่ฏฅไฟกๆฏ๏ผŒ่ฟ™ๆ„ๅ‘ณ็€ๆ‚จๅฏไปฅๅˆ›ๅปบ้žๅธธ่ฏฆ็ป†็š„่งฃๅ†ณๆ–นๆกˆใ€‚ 12 | 13 | ่ฟ™็ฏ‡Sourceryๆ•™็จ‹้’ˆๅฏน็š„ๆ˜ฏไธญ้—ดSwiftๅผ€ๅ‘ไบบๅ‘˜ใ€‚็”ฑไบŽๆ‚จๅฐ†็ผ–ๅ†™ๆจกๆฟๆฅ็”ŸๆˆSwiftไปฃ็ ๏ผŒๅ› ๆญคๆ‚จๅบ”่ฏฅๅฏนSwift่ฏญ่จ€๏ผŒXcodeไปฅๅŠ้€š่ฟ‡็ปˆ็ซฏไฝฟ็”จๅ‘ฝไปค่กŒ็š„ไธ€ไบ›็ป้ชŒๆœ‰ๅ……ๅˆ†็š„ไบ†่งฃใ€‚ 14 | 15 | 16 | ## ๅ‚่€ƒ 17 | 18 | * [Sourceryๆ•™็จ‹๏ผšไธบiOS็”ŸๆˆSwiftไปฃ็  raywenderlich.com](https://www.raywenderlich.com/501-sourcery-tutorial-generating-swift-code-for-ios) -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/MMPageViewController/MMPageViewController/Library/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 | -------------------------------------------------------------------------------- /ๅคงๅ‰็ซฏโค๏ธ/่งฃๆž-Redux.md: -------------------------------------------------------------------------------- 1 | ## ่งฃๆž-Redux 2 | 3 | Predictable 4 | Redux helps you write applications that behave consistently, run in different environments (client, server, and native), and are easy to test. 5 | 6 | Centralized 7 | Centralizing your application's state and logic enables powerful capabilities like undo/redo, state persistence, and much more. 8 | 9 | Debuggable 10 | The Redux DevTools make it easy to trace when, where, why, and how your application's state changed. Redux's architecture lets you log changes, use "time-travel debugging", and even send complete error reports to a server. 11 | 12 | Flexible 13 | Redux works with any UI layer, and has a large ecosystem of addons to fit your needs. 14 | 15 | ## Ref 16 | 17 | * [Redux ๅฎ˜็ฝ‘](https://redux.js.org/๏ผ‰ -------------------------------------------------------------------------------- /ๅญฆไน ๆ—ฅๅฟ—Logs/DailyLearningLogs2017-06/DailyLearningLogs2017-06-13.md: -------------------------------------------------------------------------------- 1 | # DailyLearningLogs 2017-06-13 2 | 3 | ## Todo 4 | 5 | - [ ] finish [Publishing to the App Store](https://videos.raywenderlich.com/courses/71-publishing-to-the-app-store/lessons/1) 6 | 7 | - [ ] start ReactNative 8 | 9 | ## Done 10 | 11 | - [x] finish [FrizzleFur/MZStarRatingView: MZStarRatingView is focus on better star rating](https://github.com/FrizzleFur/MZStarRatingView) 12 | (2017-06-13) 13 | 14 | - [x] finish 15 | [UIDebuggingInformationOverlay - Low Level](http://ryanipete.com/blog/ios/swift/objective-c/uidebugginginformationoverlay/) (2017-06-13) 16 | 17 | - [x] finish [Instruments](https://videos.raywenderlich.com/courses/74-practical-instruments/lessons/1) (2017-06-14) 18 | 19 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/MMPageViewController/MMPageViewController/Library/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 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxCocoa/RxCocoa/iOS/UISlider+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UISlider+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Alexander van der Werff on 28/05/15. 6 | // Copyright ยฉ 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) 10 | 11 | import RxSwift 12 | import UIKit 13 | 14 | extension Reactive where Base: UISlider { 15 | 16 | /// Reactive wrapper for `value` property. 17 | public var value: ControlProperty { 18 | return base.rx.controlPropertyWithDefaultEvents( 19 | getter: { slider in 20 | slider.value 21 | }, setter: { slider, value in 22 | slider.value = value 23 | } 24 | ) 25 | } 26 | 27 | } 28 | 29 | #endif 30 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxSwift/RxSwift/RxMutableBox.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxMutableBox.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 5/22/15. 6 | // Copyright ยฉ 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /// Creates mutable reference wrapper for any type. 10 | final class RxMutableBox : CustomDebugStringConvertible { 11 | /// Wrapped value 12 | var value : T 13 | 14 | /// Creates reference wrapper for `value`. 15 | /// 16 | /// - parameter value: Value to wrap. 17 | init (_ value: T) { 18 | self.value = value 19 | } 20 | } 21 | 22 | extension RxMutableBox { 23 | /// - returns: Box description. 24 | var debugDescription: String { 25 | return "MutatingBox(\(self.value))" 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/MMPageViewController/MMPageViewController/Library/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 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxSwift/RxSwift/Subjects/SubjectType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SubjectType.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 3/1/15. 6 | // Copyright ยฉ 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /// Represents an object that is both an observable sequence as well as an observer. 10 | public protocol SubjectType : ObservableType { 11 | /// The type of the observer that represents this subject. 12 | /// 13 | /// Usually this type is type of subject itself, but it doesn't have to be. 14 | associatedtype SubjectObserverType : ObserverType 15 | 16 | /// Returns observer interface for subject. 17 | /// 18 | /// - returns: Observer interface for subject. 19 | func asObserver() -> SubjectObserverType 20 | 21 | } 22 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxCocoa/Platform/DataStructures/InfiniteSequence.swift: -------------------------------------------------------------------------------- 1 | // 2 | // InfiniteSequence.swift 3 | // Platform 4 | // 5 | // Created by Krunoslav Zaher on 6/13/15. 6 | // Copyright ยฉ 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /// Sequence that repeats `repeatedValue` infinite number of times. 10 | struct InfiniteSequence : Sequence { 11 | typealias Element = E 12 | typealias Iterator = AnyIterator 13 | 14 | private let _repeatedValue: E 15 | 16 | init(repeatedValue: E) { 17 | _repeatedValue = repeatedValue 18 | } 19 | 20 | func makeIterator() -> Iterator { 21 | let repeatedValue = _repeatedValue 22 | return AnyIterator { 23 | return repeatedValue 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxCocoa/RxCocoa/iOS/UIRefreshControl+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIRefreshControl+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Yosuke Ishikawa on 1/31/16. 6 | // Copyright ยฉ 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) 10 | 11 | import UIKit 12 | import RxSwift 13 | 14 | extension Reactive where Base: UIRefreshControl { 15 | /// Bindable sink for `beginRefreshing()`, `endRefreshing()` methods. 16 | public var isRefreshing: Binder { 17 | return Binder(self.base) { refreshControl, refresh in 18 | if refresh { 19 | refreshControl.beginRefreshing() 20 | } else { 21 | refreshControl.endRefreshing() 22 | } 23 | } 24 | } 25 | 26 | } 27 | 28 | #endif 29 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxSwift/Platform/DataStructures/InfiniteSequence.swift: -------------------------------------------------------------------------------- 1 | // 2 | // InfiniteSequence.swift 3 | // Platform 4 | // 5 | // Created by Krunoslav Zaher on 6/13/15. 6 | // Copyright ยฉ 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /// Sequence that repeats `repeatedValue` infinite number of times. 10 | struct InfiniteSequence : Sequence { 11 | typealias Element = E 12 | typealias Iterator = AnyIterator 13 | 14 | private let _repeatedValue: E 15 | 16 | init(repeatedValue: E) { 17 | _repeatedValue = repeatedValue 18 | } 19 | 20 | func makeIterator() -> Iterator { 21 | let repeatedValue = _repeatedValue 22 | return AnyIterator { 23 | return repeatedValue 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxSwift/RxSwift/SwiftSupport/SwiftSupport.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SwiftSupport.swift 3 | // RxSwift 4 | // 5 | // Created by Volodymyr Gorbenko on 3/6/17. 6 | // Copyright ยฉ 2017 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | #if swift(>=4.0) 12 | typealias IntMax = Int64 13 | public typealias RxAbstractInteger = FixedWidthInteger 14 | 15 | extension SignedInteger { 16 | func toIntMax() -> IntMax { 17 | return IntMax(self) 18 | } 19 | } 20 | #else 21 | public typealias RxAbstractInteger = SignedInteger 22 | 23 | extension Array { 24 | public mutating func swapAt(_ i: Int, _ j: Int) { 25 | swap(&self[i], &self[j]) 26 | } 27 | } 28 | 29 | #endif 30 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxCocoa/RxCocoa/Common/SectionedViewDataSourceType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SectionedViewDataSourceType.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 1/10/16. 6 | // Copyright ยฉ 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import struct Foundation.IndexPath 10 | 11 | /// Data source with access to underlying sectioned model. 12 | public protocol SectionedViewDataSourceType { 13 | /// Returns model at index path. 14 | /// 15 | /// In case data source doesn't contain any sections when this method is being called, `RxCocoaError.ItemsNotYetBound(object: self)` is thrown. 16 | 17 | /// - parameter indexPath: Model index path 18 | /// - returns: Model at index path. 19 | func model(at indexPath: IndexPath) throws -> Any 20 | } 21 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/MMPageViewController/MMPageViewController/Library/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 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/MMPageViewController/MMPageViewController/Library/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 | -------------------------------------------------------------------------------- /ไธ‰ๆ–น่ฝฎๅญ่งฃๆž๐Ÿ’ก/่งฃๆž-YYModel.md: -------------------------------------------------------------------------------- 1 | # ่งฃๆž-YYModel 2 | 3 | YYModel ๆ˜ฏไธ€ไธชiOS JSONๆจกๅž‹่ฝฌๅŒ–ๅบ“๏ผŒๅ’Œๅ…ถไป–ไธ€ไบ›ๅŒ็ฑปๅž‹ๅบ“็›ธๆฏ”๏ผŒๅ…ทๆœ‰ๆฏ”่พƒๅฅฝ็š„ๆ€ง่ƒฝไผ˜ๅŠฟใ€‚ๆœฌๆ–‡ไผšๅฏนYYModel็š„ๆบ็ ่ฟ›่กŒๅˆ†ๆž๏ผŒๅ…ทไฝ“็”จๆณ•ไฝœ่€…ibiremeๅœจgithubไธญๆœ‰ๆๅŠใ€‚YYModel็š„็›ฎๅฝ•็ป“ๆž„ๅพˆ็ฎ€ๅ•๏ผŒๅชๆœ‰ไธคไธช็ฑป, NSObject+YYModel ๅ’Œ YYClassInfoใ€‚YYClassInfoไธป่ฆๅฏนๆ น็ฑปNSObject ็š„ Ivar , Method, PropertyไปฅๅŠClassๆœฌ่บซ่ฟ›่กŒไบ†ๅฐ่ฃ…๏ผŒNSObject+YYModel ๆ˜ฏ NSObject็š„ๅˆ†็ฑป๏ผŒๆ‰ฉๅฑ•ไบ†ไธ€ไบ›JSONๆจกๅž‹่ฝฌๅŒ–็š„ๆ–นๆณ•ใ€‚ 4 | 5 | * YYClassIvarInfo : ๅฏน Class็š„Ivar่ฟ›่กŒไบ†ๅฐ่ฃ… 6 | * YYClassMethodInfo : ๅฏน Class็š„Method่ฟ›่กŒไบ†ๅฐ่ฃ… 7 | * YYClassPropertyInfo : ๅฏน Class็š„Property่ฟ›่กŒไบ†ๅฐ่ฃ… 8 | * YYClassInfo : ๅฏนClass่ฟ›่กŒไบ†ๅฐ่ฃ…๏ผŒๅŒ…ๅซไบ†YYClassIvarInfo๏ผŒYYClassMethodInfo๏ผŒYYClassPropertyInfo 9 | 10 | 11 | 12 | 13 | ## YYModel ็ปงๆ‰ฟ 14 | 15 | [็ปงๆ‰ฟ็š„็ฑปๆ€Žไนˆ่งฃๆž๏ผŒๆ€ฅ๏ผŒๅœจ็บฟ็ญ‰ ยท Issue #80 ยท ibireme/YYModel](https://github.com/ibireme/YYModel/issues/80) 16 | 17 | ๆˆ‘่ง‰ๅพ—ๆ‰พไธช้—ฎ้ข˜ๅฏไปฅๆŠŠๅŽŸๆฅ็š„็ฑปไฝœไธบ็ŽฐๅœจModel็š„ไธ€ไธชๅฑžๆ€ง~ 18 | 19 | 20 | 21 | ## ๅ‚่€ƒ 22 | 23 | 1. [YYModelๆบ็ ๅˆ†ๆž | ๅคœ็ฉบไธญๆœ€ไบฎ็š„ๆ˜Ÿ](https://chenao0727.github.io/2017/01/03/YYModel/) 24 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxCocoa/RxCocoa/Traits/Driver/ControlEvent+Driver.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ControlEvent+Driver.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 9/19/15. 6 | // Copyright ยฉ 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import RxSwift 10 | 11 | extension ControlEvent { 12 | /// Converts `ControlEvent` to `Driver` trait. 13 | /// 14 | /// `ControlEvent` already can't fail, so no special case needs to be handled. 15 | public func asDriver() -> Driver { 16 | return self.asDriver { (error) -> Driver in 17 | #if DEBUG 18 | rxFatalError("Somehow driver received error from a source that shouldn't fail.") 19 | #else 20 | return Driver.empty() 21 | #endif 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxCocoa/RxCocoa/Traits/Signal/ControlEvent+Signal.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ControlEvent+Signal.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 11/1/17. 6 | // Copyright ยฉ 2017 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import RxSwift 10 | 11 | extension ControlEvent { 12 | /// Converts `ControlEvent` to `Signal` trait. 13 | /// 14 | /// `ControlEvent` already can't fail, so no special case needs to be handled. 15 | public func asSignal() -> Signal { 16 | return self.asSignal { (error) -> Signal in 17 | #if DEBUG 18 | rxFatalError("Somehow signal received error from a source that shouldn't fail.") 19 | #else 20 | return Signal.empty() 21 | #endif 22 | } 23 | } 24 | } 25 | 26 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/Swinject/Sources/Container.Logging.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Container.Logging.swift 3 | // Swinject 4 | // 5 | // Created by Jakub Vaลˆo on 30/09/16. 6 | // Copyright ยฉ 2016 Swinject Contributors. All rights reserved. 7 | // 8 | 9 | public typealias LoggingFunctionType = (String) -> Void 10 | 11 | public extension Container { 12 | /// Function to be used for logging debugging data. 13 | /// Default implementation writes to standard output. 14 | public static var loggingFunction: LoggingFunctionType? { 15 | get { return _loggingFunction } 16 | set { _loggingFunction = newValue } 17 | } 18 | 19 | internal static func log(_ message: String) { 20 | _loggingFunction?(message) 21 | } 22 | } 23 | 24 | private var _loggingFunction: LoggingFunctionType? = { print($0) } 25 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxCocoa/RxCocoa/Foundation/KVORepresentable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // KVORepresentable.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 11/14/15. 6 | // Copyright ยฉ 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /// Type that is KVO representable (KVO mechanism can be used to observe it). 10 | public protocol KVORepresentable { 11 | /// Associated KVO type. 12 | associatedtype KVOType 13 | 14 | /// Constructs `Self` using KVO value. 15 | init?(KVOValue: KVOType) 16 | } 17 | 18 | extension KVORepresentable { 19 | /// Initializes `KVORepresentable` with optional value. 20 | init?(KVOValue: KVOType?) { 21 | guard let KVOValue = KVOValue else { 22 | return nil 23 | } 24 | 25 | self.init(KVOValue: KVOValue) 26 | } 27 | } 28 | 29 | -------------------------------------------------------------------------------- /1-iOSCocoa๐Ÿ’Ž/ๅŠจ็”ป/่งฃๆž-ๆ ธๅฟƒๅŠจ็”ป.md: -------------------------------------------------------------------------------- 1 | # ่งฃๆž-ๆ ธๅฟƒๅŠจ็”ป 2 | 3 | 4 | Q: ๅ›พๅƒไปŽๆ–‡ไปถๆธฒๆŸ“ๅˆฐๅฑๅน•? 5 | 6 | `CPU/GPU`ๅไฝœๅฎŒๆˆ 7 | 8 | 1. ๅฐ†ๅ›พ็‰‡ไปŽ็ฃ็›˜/็ฝ‘็ปœ-> UIImageๆฒกๆœ‰ ่งฃๅŽ‹. 9 | 2. ๅฐ†UIImage- >UIImageView่ฆ่งฃๅŽ‹ 10 | 3. ้šๅผๅŠจ็”ปๆ•ๆ‰ๅ›พ็‰‡ๅ˜ๆขไธ€>ๅ›พๅฑ‚ๆ ‘(ๆ ธๅฟƒๅŠจ็”ป!) 11 | 4. ไธป็บฟ็จ‹Runloopๆ•่Žท.ๆไบค้šๅผๅŠจ็”ป 12 | * ๅˆ†้…ๅ†…ๅญ˜็ผ“ๅญ˜ๅŒบ็”จไบŽ่ฏปๅ–ๆ–‡ไปถ/่งฃๅŽ‹็ผฉ 13 | * ๆ–‡ไปถ็ฃ็›˜่ฏปๅˆฐๅ†…ๅญ˜ .png > ไฝๅ›พ 14 | * CPU:่ฎก็ฎ—Frame,่งฃๅŽ‹ๅ›พ็‰‡๏ผŒ->็บน็†! 15 | * GPU:็กฌไปถๅŠ ้€Ÿๅ™จ.็บน็†ๆททๅˆ!้กถ็‚นๅๆ ‡่ฎก็ฎ—๏ผŒๅƒ็ด ็‚นๅกซๅ……่ฎก็ฎ—(็‰‡ๅ…ƒ็€่‰ฒๅ™จ/็‰‡ๆฎต็€่‰ฒๅ™จ)ไธ€ๆธฒๆŸ“ 16 | 17 | ### GPUๆธฒๆŸ“ๆต็จ‹ 18 | 19 | 20 | * GPU่Žทๅ–ๅ›พ็‰‡็š„้กถ็‚นๅๆ ‡ 21 | * ๅฐ†ๅๆ ‡ไบค็ป™้กถ็‚น็€่‰ฒๅ™จ(็จ‹ๅบGPU)ๆฅๅš่ฎก็ฎ— 22 | * ๅฐ†ๅ…‰ๆ …ๅŒ–(ๅฐ†้กถ็‚นๆ•ฐๆฎ- ->ๅƒ็ด ็‚น) 23 | * ๅ‘ๅƒ็ด ็‚นๅกซๅ……้ขœ่‰ฒ(็‰‡ๅ…ƒ็€่‰ฒๅ™จ็จ‹ๅบGPU) 24 | * ๆณจๆ„:็‰‡ๅ…ƒ็€่‰ฒๅ™จๆ˜ฏๅ›พๅฝขๅ ๆœ‰ๅคšๅฐ‘ๅƒ็ด ็‚น,ๅฐฑๆ‰ง่กŒๅคšๅฐ‘ๅกซๅ…….ๅนถๅ‘ 25 | * ๆŠ€ๆœฏ. 26 | 27 | ๅ›พ็‰‡ๆธฒๆŸ“: ๅ›พๅฝข + ๅ›พ็‰‡ 28 | 29 | ![](https://pic-mike.oss-cn-hongkong.aliyuncs.com/Blog/20190313165457.png) 30 | 31 | ## CALayer 32 | 33 | 34 | ![](https://pic-mike.oss-cn-hongkong.aliyuncs.com/Blog/20190313172504.png) 35 | 36 | 37 | ## ๅŠจ็”ป 38 | 39 | ๅคๆ‚ๅŠจ็”ป < === ็ฎ€ๅ•ๅŠจ็”ป็š„็ป„ๅˆ 40 | 41 | ### ไปฟๅฐ„ๅ˜ๆข 42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /ๅญฆไน ๆ—ฅๅฟ—Logs/DailyLearningLogs2017-05/DailyLearningLogs2017-05-21.md: -------------------------------------------------------------------------------- 1 | # DailyLearningLogs 2017-05-21 2 | 3 | ## Todo 4 | 5 | 6 | ## Done 7 | 8 | - [x] Room Settle(2017-05-21) 9 | - [x] [Advanced_Apple_Debugging_&_Reverse_Engineering_v0] (2017-05-21)่ง„ๅˆ’ไบ†ไธ‹ๅญฆไน ๆ–นๅ‘ 10 | - [x] Six packs (2017-05-21) 11 | - [x] [ๅ›พ่งฃๆœบๅ™จๅญฆไน ]()(2017-05-21) 12 | 13 | - [x] [`Xcode` Debugging](https://classroom.udacity.com/courses/ud774/lessons/4377638660/concepts/43871786240923) (2017-05-21) 14 | 15 | - [x] [`AFNetworking`่ฏฆ่งฃ](https://github.com/Draveness/Analyze/blob/master/contents/AFNetworking/AFNetworking%20%E6%A6%82%E8%BF%B0%EF%BC%88%E4%B8%80%EF%BC%89.md) (2017-05-20) 16 | 17 | - [x] ๆ•ด็†้กน็›ฎๆžถๆž„ (ๆ•ดไธชๅˆ็•ฅ็š„Reviewไบ†ไธ€ไธ‹ๅ„ไธชๆจกๅ—็ฑป็š„ไธป่ฆๆก†ๆžถ,AFN่ฟ˜้œ€่ฆๅ†็†Ÿๆ‚‰ไธ‹)(2017-05-20) 18 | - [x] ๆŸฅ็œ‹[RecentlyReading](https://github.com/FrizzleFur/DailyLearning/blob/master/RecentlyReading.md) (2017-05-20) 19 | 20 | 21 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/Memory-RetainCycleDemo/Memory-RetainCycleDemo/ViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.m 3 | // Memory-RetainCycleDemo 4 | // 5 | // Created by MichaelMao on 2019/3/27. 6 | // Copyright ยฉ 2019 MichaelMao. All rights reserved. 7 | // 8 | 9 | #import "ViewController.h" 10 | #import "NextVC.h" 11 | 12 | @interface ViewController () 13 | 14 | @end 15 | 16 | @implementation ViewController 17 | 18 | - (void)viewDidLoad { 19 | [super viewDidLoad]; 20 | // Do any additional setup after loading the view, typically from a nib. 21 | self.view.backgroundColor = [UIColor redColor]; 22 | } 23 | 24 | 25 | - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ 26 | 27 | NextVC *vc = [NextVC new]; 28 | [self.navigationController pushViewController:vc animated:true]; 29 | } 30 | 31 | 32 | @end 33 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxCocoa/RxCocoa/Traits/Driver/ControlProperty+Driver.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ControlProperty+Driver.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 9/19/15. 6 | // Copyright ยฉ 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import RxSwift 10 | 11 | extension ControlProperty { 12 | /// Converts `ControlProperty` to `Driver` trait. 13 | /// 14 | /// `ControlProperty` already can't fail, so no special case needs to be handled. 15 | public func asDriver() -> Driver { 16 | return self.asDriver { (error) -> Driver in 17 | #if DEBUG 18 | rxFatalError("Somehow driver received error from a source that shouldn't fail.") 19 | #else 20 | return Driver.empty() 21 | #endif 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxCocoa/RxCocoa/iOS/UIActivityIndicatorView+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIActivityIndicatorView+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Ivan Persidskiy on 02/12/15. 6 | // Copyright ยฉ 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) 10 | 11 | import UIKit 12 | import RxSwift 13 | 14 | extension Reactive where Base: UIActivityIndicatorView { 15 | 16 | /// Bindable sink for `startAnimating()`, `stopAnimating()` methods. 17 | public var isAnimating: Binder { 18 | return Binder(self.base) { activityIndicator, active in 19 | if active { 20 | activityIndicator.startAnimating() 21 | } else { 22 | activityIndicator.stopAnimating() 23 | } 24 | } 25 | } 26 | 27 | } 28 | 29 | #endif 30 | -------------------------------------------------------------------------------- /1-iOSCocoa๐Ÿ’Ž/ๅ…ถไป–/่งฃๆž-NSNotification.md: -------------------------------------------------------------------------------- 1 | # NSNotification.md 2 | 3 | >ๅช่ฆๅพ€NSNotificationCenterๆณจๅ†Œไบ†๏ผŒๅฐฑๅฟ…้กปๆœ‰remove็š„ๅญ˜ๅœจ๏ผŒ่ฟ™็‚นๆ˜ฏๅคงๅฎถๅ…ฑ่ฏ†็š„ใ€‚ไฝ†ๆ˜ฏๅคงๅฎถๅœจไฝฟ็”จ็š„ๆ—ถๅ€™ๅ‘็Žฐ๏ผŒๅœจUIViewController ไธญaddObserverๅŽๆฒกๆœ‰็งป้™ค๏ผŒๅฅฝๅƒไนŸๆฒกๆœ‰ๆŒ‚๏ผๆˆ‘ๆƒณๅพˆๅคšไบบๅฏ่ƒฝๅ’Œๆˆ‘ๆœ‰ไธ€ๆ ท็š„็–‘้—ฎ๏ผŒๆ˜ฏไธๆ˜ฏๅ› ไธบไฝฟ็”จไบ†ARC๏ผŸๅœจไฝ ๅฏน่ฑก้”€ๆฏ็š„ๆ—ถๅ€™่‡ชๅŠจ็ฝฎไธบnilไบ†ๅ‘ข๏ผŸๆˆ–่€…่‹นๆžœๅœจๅฎž็Žฐ่ฟ™ไธช็ฑป็š„ๆ—ถๅ€™็”จไบ†ไป€ไนˆ็ฅžๅฅ‡็š„ๆ–นๅผๅ‘ข๏ผŸไธ‹้ขๆˆ‘ไปฌๅฐฑไธ€ๆญฅๆญฅๆฅๆŽข็ฉถไธ‹ใ€‚ 4 | 5 | ๆˆ‘ไปฌๅฏไปฅๅ‘็Žฐ๏ผŒๅ‘้‡ŽๆŒ‡้’ˆๅฏน่ฑกๅ‘้€ไบ†ๆถˆๆฏ๏ผŒๆ‰€ไปฅๆŒ‚ๆމไบ†ใ€‚ไปŽ่ฟ™็‚นๆฅ็œ‹๏ผŒ่‹นๆžœๅฎž็ŽฐไนŸๅŸบๆœฌๅทฎไธๅคšๆ˜ฏ่ฟ™ๆ ท็š„๏ผŒๅชไฟๅญ˜ไบ†ไธชๅฏน่ฑก็š„ๅœฐๅ€๏ผŒๅนถๆฒกๆœ‰ๅœจ้”€ๆฏ็š„ๆ—ถๅ€™็ฝฎไธบnilใ€‚ 6 | 7 | ่ฟ™็‚นๅฐฑๅฏไปฅ่ฏๆ˜Ž๏ผŒaddObserverๅŽ๏ผŒๅฟ…้กป่ฆๆœ‰removeๆ“ไฝœใ€‚ 8 | 9 | ๆ€Žไนˆๆ ท๏ผŸๆ˜ฏไธๆ˜ฏๅฏไปฅ่ฏๆ˜Ž็ณป็ปŸ็š„UIViewControllerๅœจ้”€ๆฏ็š„ๆ—ถๅ€™่ฐƒ็”จไบ†่ฟ™ไธชๆ–นๆณ•ใ€‚๏ผˆไธๅปบ่ฎฎๅคงๅฎถๅœจๅผ€ๅ‘็š„ๆ—ถๅ€™็”จ็ฑปๅˆซ็š„ๆ–นๅผ่ฆ†็›–ๅŽŸๆœ‰็š„ๆ–นๆณ•๏ผŒ็”ฑไบŽ็ฑปๅˆซๆ–นๆณ•ๅ…ทๆœ‰ๆ›ด้ซ˜็š„ไผ˜ๅ…ˆๆƒ๏ผŒๆ‰€ไปฅๆœ‰ๅฏ่ƒฝๅฝฑๅ“ๅˆฐๅ…ถไป–ๅœฐๆ–นใ€‚่ฟ™้‡Œๅชๆ˜ฏ่ฐƒ่ฏ•็”จ๏ผ‰ใ€‚ 10 | 11 | ไปฅไธŠไนŸๆ้†’ๆˆ‘ไปฌ๏ผŒๅœจไฝ ไธๆ˜ฏ้”€ๆฏ็š„ๆ—ถๅ€™๏ผŒๅƒไธ‡ไธ่ฆ็›ดๆŽฅ่ฐƒ็”จ[[NSNotificationCenter defaultCenter] removeObserver:self]; ่ฟ™ไธชๆ–นๆณ•๏ผŒๅ› ไธบไฝ ๆœ‰ๅฏ่ƒฝ็งป้™คไบ†็ณป็ปŸๆณจๅ†Œ็š„้€š็Ÿฅใ€‚ 12 | 13 | 14 | 15 | ### Helpful Links 16 | 17 | 1. [Testing in iOS](https://videos.raywenderlich.com/courses/39-testing-in-ios/lessons/2) 18 | 2. [iOS NSNotificationCenter ไฝฟ็”จๅงฟๅŠฟ่ฏฆ่งฃ](http://www.jianshu.com/p/a4d519e4e0d5) 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /ๅผ€ๅ‘ๅทฅๅ…ทTool๐Ÿ”ง/ๅทฅๅ…ท-ๅผ€ๅ‘DebugTool.md: -------------------------------------------------------------------------------- 1 | ## ๅผ€ๅ‘DebugTool 2 | 3 | 4 | ### Hot ReLoad 5 | 6 | 7 | * [johnno1962/injectionforxcode: Runtime Code Injection for Objective-C & Swift](https://github.com/johnno1962/injectionforxcode) 8 | 9 | * [Flipboard/FLEX: An in-app debugging and exploration tool for iOS](https://github.com/Flipboard/FLEX) 10 | 11 | 12 | 13 | ### Debugging Tool 14 | 15 | 1. [Flipboard/FLEX: An in-app debugging and exploration tool for iOS](https://github.com/Flipboard/FLEX) 16 | 2. [SatanWoo/JSDebugger](https://github.com/SatanWoo/JSDebugger)JavaScript-Based Debugger For Inspecting Running State Of Your Application 17 | 3. [ไธญๆ–‡ไป‹็ป ยท CocoaDebug/CocoaDebug Wiki](https://github.com/CocoaDebug/CocoaDebug/wiki/%E4%B8%AD%E6%96%87%E4%BB%8B%E7%BB%8D) 18 | 4. [shaps80/Peek: All new design. Inspect your iOS application at runtime.](https://github.com/shaps80/Peek) -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxSwift/RxSwift/Disposables/NopDisposable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // NopDisposable.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 2/15/15. 6 | // Copyright ยฉ 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /// Represents a disposable that does nothing on disposal. 10 | /// 11 | /// Nop = No Operation 12 | fileprivate struct NopDisposable : Disposable { 13 | 14 | fileprivate static let noOp: Disposable = NopDisposable() 15 | 16 | fileprivate init() { 17 | 18 | } 19 | 20 | /// Does nothing. 21 | public func dispose() { 22 | } 23 | } 24 | 25 | extension Disposables { 26 | /** 27 | Creates a disposable that does nothing on disposal. 28 | */ 29 | static public func create() -> Disposable { 30 | return NopDisposable.noOp 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxCocoa/RxCocoa/iOS/UILabel+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UILabel+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 4/1/15. 6 | // Copyright ยฉ 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) 10 | 11 | import RxSwift 12 | import UIKit 13 | 14 | extension Reactive where Base: UILabel { 15 | 16 | /// Bindable sink for `text` property. 17 | public var text: Binder { 18 | return Binder(self.base) { label, text in 19 | label.text = text 20 | } 21 | } 22 | 23 | /// Bindable sink for `attributedText` property. 24 | public var attributedText: Binder { 25 | return Binder(self.base) { label, text in 26 | label.attributedText = text 27 | } 28 | } 29 | 30 | } 31 | 32 | #endif 33 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/Swinject/Sources/UnavailableItems.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UnavailableItems.swift 3 | // Swinject 4 | // 5 | // Created by Yoichi Tagaya on 11/30/16. 6 | // Copyright ยฉ 2016 Swinject Contributors. All rights reserved. 7 | // 8 | 9 | // MARK: For auto migration from Swinject v1 to v2. 10 | extension ObjectScope { 11 | @available(*, unavailable, renamed: "transient") 12 | public static let none = transient 13 | 14 | @available(*, unavailable, renamed: "container") 15 | public static let hierarchy = container 16 | } 17 | 18 | @available(*, unavailable, renamed: "Resolver") 19 | public protocol ResolverType { } 20 | 21 | @available(*, unavailable, renamed: "Assembly") 22 | public protocol AssemblyType { } 23 | 24 | @available(*, unavailable, renamed: "ServiceKeyOption") 25 | public protocol ServiceKeyOptionType { } 26 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/Demos/HttpDemo/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - AFNetworking (3.1.0): 3 | - AFNetworking/NSURLSession (= 3.1.0) 4 | - AFNetworking/Reachability (= 3.1.0) 5 | - AFNetworking/Security (= 3.1.0) 6 | - AFNetworking/Serialization (= 3.1.0) 7 | - AFNetworking/UIKit (= 3.1.0) 8 | - AFNetworking/NSURLSession (3.1.0): 9 | - AFNetworking/Reachability 10 | - AFNetworking/Security 11 | - AFNetworking/Serialization 12 | - AFNetworking/Reachability (3.1.0) 13 | - AFNetworking/Security (3.1.0) 14 | - AFNetworking/Serialization (3.1.0) 15 | - AFNetworking/UIKit (3.1.0): 16 | - AFNetworking/NSURLSession 17 | 18 | DEPENDENCIES: 19 | - AFNetworking (~> 3.1.0) 20 | 21 | SPEC CHECKSUMS: 22 | AFNetworking: 5e0e199f73d8626b11e79750991f5d173d1f8b67 23 | 24 | PODFILE CHECKSUM: 9b629ab76aa8d86a5df0bff9b87e95ed7f6a48d7 25 | 26 | COCOAPODS: 1.3.1 27 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxCocoa/RxCocoa/iOS/Proxies/RxTableViewDelegateProxy.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxTableViewDelegateProxy.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 6/15/15. 6 | // Copyright ยฉ 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) 10 | 11 | import UIKit 12 | import RxSwift 13 | 14 | /// For more information take a look at `DelegateProxyType`. 15 | open class RxTableViewDelegateProxy 16 | : RxScrollViewDelegateProxy 17 | , UITableViewDelegate { 18 | 19 | /// Typed parent object. 20 | public weak private(set) var tableView: UITableView? 21 | 22 | /// - parameter tableView: Parent object for delegate proxy. 23 | public init(tableView: UITableView) { 24 | self.tableView = tableView 25 | super.init(scrollView: tableView) 26 | } 27 | 28 | } 29 | 30 | #endif 31 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/Demos/Multithreading-Semaphore/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - AFNetworking (3.1.0): 3 | - AFNetworking/NSURLSession (= 3.1.0) 4 | - AFNetworking/Reachability (= 3.1.0) 5 | - AFNetworking/Security (= 3.1.0) 6 | - AFNetworking/Serialization (= 3.1.0) 7 | - AFNetworking/UIKit (= 3.1.0) 8 | - AFNetworking/NSURLSession (3.1.0): 9 | - AFNetworking/Reachability 10 | - AFNetworking/Security 11 | - AFNetworking/Serialization 12 | - AFNetworking/Reachability (3.1.0) 13 | - AFNetworking/Security (3.1.0) 14 | - AFNetworking/Serialization (3.1.0) 15 | - AFNetworking/UIKit (3.1.0): 16 | - AFNetworking/NSURLSession 17 | 18 | DEPENDENCIES: 19 | - AFNetworking (~> 3.1.0) 20 | 21 | SPEC CHECKSUMS: 22 | AFNetworking: 5e0e199f73d8626b11e79750991f5d173d1f8b67 23 | 24 | PODFILE CHECKSUM: 1a2de9ae6fb70222d6bccb68952acbe62dcc04f8 25 | 26 | COCOAPODS: 1.3.1 27 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxSwift/RxSwift/Schedulers/HistoricalScheduler.swift: -------------------------------------------------------------------------------- 1 | // 2 | // HistoricalScheduler.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 12/27/15. 6 | // Copyright ยฉ 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import struct Foundation.Date 10 | 11 | /// Provides a virtual time scheduler that uses `Date` for absolute time and `NSTimeInterval` for relative time. 12 | public class HistoricalScheduler : VirtualTimeScheduler { 13 | 14 | /** 15 | Creates a new historical scheduler with initial clock value. 16 | 17 | - parameter initialClock: Initial value for virtual clock. 18 | */ 19 | public init(initialClock: RxTime = Date(timeIntervalSince1970: 0)) { 20 | super.init(initialClock: initialClock, converter: HistoricalSchedulerTimeConverter()) 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/pop/pop/POPAnimationPrivate.h: -------------------------------------------------------------------------------- 1 | /** 2 | Copyright (c) 2014-present, Facebook, Inc. 3 | All rights reserved. 4 | 5 | This source code is licensed under the BSD-style license found in the 6 | LICENSE file in the root directory of this source tree. An additional grant 7 | of patent rights can be found in the PATENTS file in the same directory. 8 | */ 9 | 10 | #import 11 | 12 | #define POP_ANIMATION_FRICTION_FOR_QC_FRICTION(qcFriction) (25.0 + (((qcFriction - 8.0) / 2.0) * (25.0 - 19.0))) 13 | #define POP_ANIMATION_TENSION_FOR_QC_TENSION(qcTension) (194.0 + (((qcTension - 30.0) / 50.0) * (375.0 - 194.0))) 14 | 15 | #define QC_FRICTION_FOR_POP_ANIMATION_FRICTION(fbFriction) (8.0 + 2.0 * ((fbFriction - 25.0)/(25.0 - 19.0))) 16 | #define QC_TENSION_FOR_POP_ANIMATION_TENSION(fbTension) (30.0 + 50.0 * ((fbTension - 194.0)/(375.0 - 194.0))) 17 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxCocoa/RxCocoa/iOS/Protocols/RxPickerViewDataSourceType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxPickerViewDataSourceType.swift 3 | // RxCocoa 4 | // 5 | // Created by Sergey Shulga on 05/07/2017. 6 | // Copyright ยฉ 2017 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) 10 | 11 | import UIKit 12 | import RxSwift 13 | 14 | /// Marks data source as `UIPickerView` reactive data source enabling it to be used with one of the `bindTo` methods. 15 | public protocol RxPickerViewDataSourceType { 16 | /// Type of elements that can be bound to picker view. 17 | associatedtype Element 18 | 19 | /// New observable sequence event observed. 20 | /// 21 | /// - parameter pickerView: Bound picker view. 22 | /// - parameter observedEvent: Event 23 | func pickerView(_ pickerView: UIPickerView, observedEvent: Event) 24 | } 25 | 26 | #endif 27 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxSwift/RxSwift/ConnectableObservableType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ConnectableObservableType.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 3/1/15. 6 | // Copyright ยฉ 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /** 10 | Represents an observable sequence wrapper that can be connected and disconnected from its underlying observable sequence. 11 | */ 12 | public protocol ConnectableObservableType : ObservableType { 13 | /** 14 | Connects the observable wrapper to its source. All subscribed observers will receive values from the underlying observable sequence as long as the connection is established. 15 | 16 | - returns: Disposable used to disconnect the observable wrapper from its source, causing subscribed observer to stop receiving values from the underlying observable sequence. 17 | */ 18 | func connect() -> Disposable 19 | } 20 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxCocoa/RxCocoa/iOS/UIPageControl+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIPageControl+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Francesco Puntillo on 14/04/2016. 6 | // Copyright ยฉ 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) 10 | 11 | import RxSwift 12 | import UIKit 13 | 14 | extension Reactive where Base: UIPageControl { 15 | 16 | /// Bindable sink for `currentPage` property. 17 | public var currentPage: Binder { 18 | return Binder(self.base) { controller, page in 19 | controller.currentPage = page 20 | } 21 | } 22 | 23 | /// Bindable sink for `numberOfPages` property. 24 | public var numberOfPages: Binder { 25 | return Binder(self.base) { controller, page in 26 | controller.numberOfPages = page 27 | } 28 | } 29 | 30 | } 31 | 32 | #endif 33 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/MMPageViewController/MMPageViewController/Library/MJRefresh/Custom/Header/MJRefreshStateHeader.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshStateHeader.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/4/24. 6 | // Copyright (c) 2015ๅนด ๅฐ็ ๅ“ฅ. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshHeader.h" 10 | 11 | @interface MJRefreshStateHeader : MJRefreshHeader 12 | #pragma mark - ๅˆทๆ–ฐๆ—ถ้—ด็›ธๅ…ณ 13 | /** ๅˆฉ็”จ่ฟ™ไธชblockๆฅๅ†ณๅฎšๆ˜พ็คบ็š„ๆ›ดๆ–ฐๆ—ถ้—ดๆ–‡ๅญ— */ 14 | @property (copy, nonatomic) NSString *(^lastUpdatedTimeText)(NSDate *lastUpdatedTime); 15 | /** ๆ˜พ็คบไธŠไธ€ๆฌกๅˆทๆ–ฐๆ—ถ้—ด็š„label */ 16 | @property (weak, nonatomic, readonly) UILabel *lastUpdatedTimeLabel; 17 | 18 | #pragma mark - ็Šถๆ€็›ธๅ…ณ 19 | /** ๆ–‡ๅญ—่ท็ฆปๅœˆๅœˆใ€็ฎญๅคด็š„่ท็ฆป */ 20 | @property (assign, nonatomic) CGFloat labelLeftInset; 21 | /** ๆ˜พ็คบๅˆทๆ–ฐ็Šถๆ€็š„label */ 22 | @property (weak, nonatomic, readonly) UILabel *stateLabel; 23 | /** ่ฎพ็ฝฎstate็Šถๆ€ไธ‹็š„ๆ–‡ๅญ— */ 24 | - (void)setTitle:(NSString *)title forState:(MJRefreshState)state; 25 | @end 26 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxCocoa/Platform/RecursiveLock.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RecursiveLock.swift 3 | // Platform 4 | // 5 | // Created by Krunoslav Zaher on 12/18/16. 6 | // Copyright ยฉ 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import class Foundation.NSRecursiveLock 10 | 11 | #if TRACE_RESOURCES 12 | class RecursiveLock: NSRecursiveLock { 13 | override init() { 14 | _ = Resources.incrementTotal() 15 | super.init() 16 | } 17 | 18 | override func lock() { 19 | super.lock() 20 | _ = Resources.incrementTotal() 21 | } 22 | 23 | override func unlock() { 24 | super.unlock() 25 | _ = Resources.decrementTotal() 26 | } 27 | 28 | deinit { 29 | _ = Resources.decrementTotal() 30 | } 31 | } 32 | #else 33 | typealias RecursiveLock = NSRecursiveLock 34 | #endif 35 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxSwift/Platform/RecursiveLock.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RecursiveLock.swift 3 | // Platform 4 | // 5 | // Created by Krunoslav Zaher on 12/18/16. 6 | // Copyright ยฉ 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import class Foundation.NSRecursiveLock 10 | 11 | #if TRACE_RESOURCES 12 | class RecursiveLock: NSRecursiveLock { 13 | override init() { 14 | _ = Resources.incrementTotal() 15 | super.init() 16 | } 17 | 18 | override func lock() { 19 | super.lock() 20 | _ = Resources.incrementTotal() 21 | } 22 | 23 | override func unlock() { 24 | super.unlock() 25 | _ = Resources.decrementTotal() 26 | } 27 | 28 | deinit { 29 | _ = Resources.decrementTotal() 30 | } 31 | } 32 | #else 33 | typealias RecursiveLock = NSRecursiveLock 34 | #endif 35 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxCocoa/RxCocoa/Runtime/include/_RXDelegateProxy.h: -------------------------------------------------------------------------------- 1 | // 2 | // _RXDelegateProxy.h 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 7/4/15. 6 | // Copyright ยฉ 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface _RXDelegateProxy : NSObject 14 | 15 | @property (nonatomic, weak, readonly) id _forwardToDelegate; 16 | 17 | -(void)_setForwardToDelegate:(id __nullable)forwardToDelegate retainDelegate:(BOOL)retainDelegate NS_SWIFT_NAME(_setForwardToDelegate(_:retainDelegate:)) ; 18 | 19 | -(BOOL)hasWiredImplementationForSelector:(SEL)selector; 20 | -(BOOL)voidDelegateMethodsContain:(SEL)selector; 21 | 22 | -(void)_sentMessage:(SEL)selector withArguments:(NSArray*)arguments; 23 | -(void)_methodInvoked:(SEL)selector withArguments:(NSArray*)arguments; 24 | 25 | @end 26 | 27 | NS_ASSUME_NONNULL_END 28 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxCocoa/RxCocoa/iOS/Protocols/RxTableViewDataSourceType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxTableViewDataSourceType.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 6/26/15. 6 | // Copyright ยฉ 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) 10 | 11 | import UIKit 12 | import RxSwift 13 | 14 | /// Marks data source as `UITableView` reactive data source enabling it to be used with one of the `bindTo` methods. 15 | public protocol RxTableViewDataSourceType /*: UITableViewDataSource*/ { 16 | 17 | /// Type of elements that can be bound to table view. 18 | associatedtype Element 19 | 20 | /// New observable sequence event observed. 21 | /// 22 | /// - parameter tableView: Bound table view. 23 | /// - parameter observedEvent: Event 24 | func tableView(_ tableView: UITableView, observedEvent: Event) -> Void 25 | } 26 | 27 | #endif 28 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxSwift/RxSwift/Observers/AnonymousObserver.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AnonymousObserver.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 2/8/15. 6 | // Copyright ยฉ 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | final class AnonymousObserver : ObserverBase { 10 | typealias Element = ElementType 11 | 12 | typealias EventHandler = (Event) -> Void 13 | 14 | private let _eventHandler : EventHandler 15 | 16 | init(_ eventHandler: @escaping EventHandler) { 17 | #if TRACE_RESOURCES 18 | let _ = Resources.incrementTotal() 19 | #endif 20 | _eventHandler = eventHandler 21 | } 22 | 23 | override func onCore(_ event: Event) { 24 | return _eventHandler(event) 25 | } 26 | 27 | #if TRACE_RESOURCES 28 | deinit { 29 | let _ = Resources.decrementTotal() 30 | } 31 | #endif 32 | } 33 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxSwift/RxSwift/Schedulers/Internal/ScheduledItem.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ScheduledItem.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 9/2/15. 6 | // Copyright ยฉ 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | struct ScheduledItem 10 | : ScheduledItemType 11 | , InvocableType { 12 | typealias Action = (T) -> Disposable 13 | 14 | private let _action: Action 15 | private let _state: T 16 | 17 | private let _disposable = SingleAssignmentDisposable() 18 | 19 | var isDisposed: Bool { 20 | return _disposable.isDisposed 21 | } 22 | 23 | init(action: @escaping Action, state: T) { 24 | _action = action 25 | _state = state 26 | } 27 | 28 | func invoke() { 29 | _disposable.setDisposable(_action(_state)) 30 | } 31 | 32 | func dispose() { 33 | _disposable.dispose() 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/SwiftLearningDemo/ViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.swift 3 | // SwiftLearningDemo 4 | // 5 | // Created by MichaelMao on 2019/3/21. 6 | // Copyright ยฉ 2019 MichaelMao. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | 12 | class ViewController: UIViewController { 13 | 14 | override func viewDidLoad() { 15 | super.viewDidLoad() 16 | // Do any additional setup after loading the view, typically from a nib. 17 | 18 | self.view.backgroundColor = UIColor.green 19 | } 20 | 21 | 22 | override func touchesBegan(_ touches: Set, with event: UIEvent?) { 23 | self.pushToRxPracticeVC() 24 | } 25 | 26 | } 27 | 28 | extension ViewController { 29 | 30 | func pushToRxPracticeVC() { 31 | let practice = RxPractice() 32 | self.navigationController?.pushViewController(practice, animated: true) 33 | } 34 | } 35 | 36 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/BlockDeomo/BlockDeomo/Person.m: -------------------------------------------------------------------------------- 1 | // 2 | // Person.m 3 | // BlockDeomo 4 | // 5 | // Created by MichaelMao on 17/4/17. 6 | // Copyright ยฉ 2017ๅนด MichaelMao. All rights reserved. 7 | // 8 | 9 | #import "Person.h" 10 | typedef void(^blk_t)(void); 11 | 12 | @interface Person (){ 13 | blk_t blk_; 14 | // id obj_; 15 | } 16 | @property (nonatomic, weak) id objc_; 17 | 18 | @end 19 | 20 | @implementation Person 21 | 22 | - (instancetype)init{ 23 | 24 | self = [super init]; 25 | blk_ = ^{ 26 | 27 | NSLog(@"obj_ = %@", _objc_); 28 | }; 29 | return self; 30 | } 31 | 32 | - (void)test { 33 | 34 | blk_ = ^{ 35 | NSLog(@"obj_ = %@", _objc_); 36 | }; 37 | } 38 | 39 | /*** 40 | ่ฟ˜ๆ˜ฏไผšๆœ‰ๅพช็Žฏๅผ•็”จ็š„่ญฆๅ‘Šๆ็คบ๏ผŒๅ› ไธบๅพช็Žฏๅผ•็”จ็š„ๆ˜ฏselfๅ’Œblockไน‹้—ด็š„ไบ‹ๆƒ…๏ผŒ 41 | ่ฟ™ไธช่ขซBlockๆŒๆœ‰็š„ๆˆๅ‘˜ๅ˜้‡ๆ˜ฏstrong่ฟ˜ๆ˜ฏweak้ƒฝๆฒกๆœ‰ๅ…ณ็ณป,่€Œไธ”ๅณไฝฟๆ˜ฏๅŸบๆœฌ็ฑปๅž‹ 42 | ๏ผˆassign๏ผ‰ไนŸๆ˜ฏไธ€ๆ ทใ€‚ 43 | ***/ 44 | //ๅ‚่€ƒ[ใ€ŠObjective-C ้ซ˜็บง็ผ–็จ‹ใ€‹ๅนฒ่ดงไธ‰้ƒจๆ›ฒ๏ผˆไบŒ๏ผ‰๏ผšBlocks็ฏ‡](http://www.jianshu.com/p/f3ee592e57f5) 45 | @end 46 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxSwift/RxSwift/Observers/ObserverBase.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ObserverBase.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 2/15/15. 6 | // Copyright ยฉ 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | class ObserverBase : Disposable, ObserverType { 10 | typealias E = ElementType 11 | 12 | private var _isStopped: AtomicInt = 0 13 | 14 | func on(_ event: Event) { 15 | switch event { 16 | case .next: 17 | if _isStopped == 0 { 18 | onCore(event) 19 | } 20 | case .error, .completed: 21 | if AtomicCompareAndSwap(0, 1, &_isStopped) { 22 | onCore(event) 23 | } 24 | } 25 | } 26 | 27 | func onCore(_ event: Event) { 28 | rxAbstractMethod() 29 | } 30 | 31 | func dispose() { 32 | _ = AtomicCompareAndSwap(0, 1, &_isStopped) 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxSwift/RxSwift/Observables/Never.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Never.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 8/30/15. 6 | // Copyright ยฉ 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | extension ObservableType { 10 | 11 | /** 12 | Returns a non-terminating observable sequence, which can be used to denote an infinite duration. 13 | 14 | - seealso: [never operator on reactivex.io](http://reactivex.io/documentation/operators/empty-never-throw.html) 15 | 16 | - returns: An observable sequence whose observers will never get called. 17 | */ 18 | public static func never() -> Observable { 19 | return NeverProducer() 20 | } 21 | } 22 | 23 | final fileprivate class NeverProducer : Producer { 24 | override func subscribe(_ observer: O) -> Disposable where O.E == Element { 25 | return Disposables.create() 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/iOS-Protocol/Protocol-01/Person.m: -------------------------------------------------------------------------------- 1 | // 2 | // Person.m 3 | // Protocol-01 4 | // 5 | // Created by MZN on 15/12/27. 6 | // Copyright ยฉ 2015ๅนด MZN. All rights reserved. 7 | // 8 | 9 | #import "Person.h" 10 | 11 | 12 | //้œ€่ฆ็”จๅˆฐ็š„ๆ—ถๅ€™ๅฏผๅ…ฅๅคดๆ–‡ไปถ 13 | #import "MyProtocol2.h" 14 | #import "MyProtocol3.h" 15 | 16 | 17 | 18 | @implementation Person 19 | 20 | //ๆฒก็ฉบๅŽปไนฐ็ฅจ 21 | -(void)buyTicket{ 22 | 23 | NSLog(@"buyTicket"); 24 | 25 | //ๅซไปฃ็†ๅŽปๅธฎ่‡ชๅทฑไนฐ็ฅจ๏ผˆ่ฏข้—ฎไธ€ไธ‹็ฅจไปท๏ผŒ่ฏข้—ฎไธ€ไธ‹ไฝ™็ฅจๅผ ๆ•ฐ๏ผ‰ 26 | double price = [_agentDelegate ticketsPrice]; 27 | int num = [_agentDelegate letfTicketsNum]; 28 | 29 | NSLog(@"้€š่ฟ‡ไปฃ็†็š„ๅธฎๅฟ™๏ผŒ็ฅจไปท = %lf, ไฝ™็ฅจๅผ ๆ•ฐ%d", price, num); 30 | } 31 | 32 | 33 | -(void)protocolTest1{ 34 | 35 | NSLog(@"protocolTest1"); 36 | } 37 | 38 | -(void)protocolTest2{ 39 | 40 | NSLog(@"protocolTest2"); 41 | } 42 | 43 | -(void)haha2{ 44 | NSLog(@"haha2"); 45 | 46 | } 47 | 48 | 49 | -(void)hehe{ 50 | 51 | NSLog(@"hehe"); 52 | 53 | } 54 | 55 | @end 56 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxCocoa/RxCocoa/Common/RxTarget.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxTarget.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 7/12/15. 6 | // Copyright ยฉ 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import class Foundation.NSObject 10 | 11 | import RxSwift 12 | 13 | class RxTarget : NSObject 14 | , Disposable { 15 | 16 | private var retainSelf: RxTarget? 17 | 18 | override init() { 19 | super.init() 20 | self.retainSelf = self 21 | 22 | #if TRACE_RESOURCES 23 | _ = Resources.incrementTotal() 24 | #endif 25 | 26 | #if DEBUG 27 | MainScheduler.ensureExecutingOnScheduler() 28 | #endif 29 | } 30 | 31 | func dispose() { 32 | #if DEBUG 33 | MainScheduler.ensureExecutingOnScheduler() 34 | #endif 35 | self.retainSelf = nil 36 | } 37 | 38 | #if TRACE_RESOURCES 39 | deinit { 40 | _ = Resources.decrementTotal() 41 | } 42 | #endif 43 | } 44 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/Target Support Files/pop/pop-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 "POP.h" 14 | #import "POPAnimatableProperty.h" 15 | #import "POPAnimatablePropertyTypes.h" 16 | #import "POPAnimation.h" 17 | #import "POPAnimationEvent.h" 18 | #import "POPAnimationExtras.h" 19 | #import "POPAnimationTracer.h" 20 | #import "POPAnimator.h" 21 | #import "POPBasicAnimation.h" 22 | #import "POPCustomAnimation.h" 23 | #import "POPDecayAnimation.h" 24 | #import "POPDefines.h" 25 | #import "POPGeometry.h" 26 | #import "POPLayerExtras.h" 27 | #import "POPPropertyAnimation.h" 28 | #import "POPSpringAnimation.h" 29 | #import "POPVector.h" 30 | 31 | FOUNDATION_EXPORT double popVersionNumber; 32 | FOUNDATION_EXPORT const unsigned char popVersionString[]; 33 | 34 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/MMPageViewController/MMPageViewController/Library/MJRefresh/UIScrollView+MJExtension.h: -------------------------------------------------------------------------------- 1 | // ไปฃ็ ๅœฐๅ€: https://github.com/CoderMJLee/MJRefresh 2 | // ไปฃ็ ๅœฐๅ€: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000 3 | // UIScrollView+Extension.h 4 | // MJRefreshExample 5 | // 6 | // Created by MJ Lee on 14-5-28. 7 | // Copyright (c) 2014ๅนด ๅฐ็ ๅ“ฅ. All rights reserved. 8 | // 9 | 10 | #import 11 | 12 | @interface UIScrollView (MJExtension) 13 | @property (assign, nonatomic) CGFloat mj_insetT; 14 | @property (assign, nonatomic) CGFloat mj_insetB; 15 | @property (assign, nonatomic) CGFloat mj_insetL; 16 | @property (assign, nonatomic) CGFloat mj_insetR; 17 | 18 | @property (assign, nonatomic) CGFloat mj_offsetX; 19 | @property (assign, nonatomic) CGFloat mj_offsetY; 20 | 21 | @property (assign, nonatomic) CGFloat mj_contentW; 22 | @property (assign, nonatomic) CGFloat mj_contentH; 23 | @end 24 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxCocoa/RxCocoa/Runtime/include/_RXKVOObserver.h: -------------------------------------------------------------------------------- 1 | // 2 | // _RXKVOObserver.h 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 7/11/15. 6 | // Copyright ยฉ 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | /** 12 | ################################################################################ 13 | This file is part of RX private API 14 | ################################################################################ 15 | */ 16 | 17 | // Exists because if written in Swift, reading unowned is disabled during dealloc process 18 | @interface _RXKVOObserver : NSObject 19 | 20 | -(instancetype)initWithTarget:(id)target 21 | retainTarget:(BOOL)retainTarget 22 | keyPath:(NSString*)keyPath 23 | options:(NSKeyValueObservingOptions)options 24 | callback:(void (^)(id))callback; 25 | 26 | -(void)dispose; 27 | 28 | @end 29 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxCocoa/RxCocoa/iOS/Protocols/RxCollectionViewDataSourceType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxCollectionViewDataSourceType.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 6/29/15. 6 | // Copyright ยฉ 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) 10 | 11 | import UIKit 12 | import RxSwift 13 | 14 | /// Marks data source as `UICollectionView` reactive data source enabling it to be used with one of the `bindTo` methods. 15 | public protocol RxCollectionViewDataSourceType /*: UICollectionViewDataSource*/ { 16 | 17 | /// Type of elements that can be bound to collection view. 18 | associatedtype Element 19 | 20 | /// New observable sequence event observed. 21 | /// 22 | /// - parameter collectionView: Bound collection view. 23 | /// - parameter observedEvent: Event 24 | func collectionView(_ collectionView: UICollectionView, observedEvent: Event) -> Void 25 | } 26 | 27 | #endif 28 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxSwift/RxSwift/Observables/Empty.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Empty.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 8/30/15. 6 | // Copyright ยฉ 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | extension ObservableType { 10 | /** 11 | Returns an empty observable sequence, using the specified scheduler to send out the single `Completed` message. 12 | 13 | - seealso: [empty operator on reactivex.io](http://reactivex.io/documentation/operators/empty-never-throw.html) 14 | 15 | - returns: An observable sequence with no elements. 16 | */ 17 | public static func empty() -> Observable { 18 | return EmptyProducer() 19 | } 20 | } 21 | 22 | final fileprivate class EmptyProducer : Producer { 23 | override func subscribe(_ observer: O) -> Disposable where O.E == Element { 24 | observer.on(.completed) 25 | return Disposables.create() 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/Target Support Files/pop/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0.12 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxCocoa/RxCocoa/iOS/UIStepper+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIStepper+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Yuta ToKoRo on 9/1/15. 6 | // Copyright ยฉ 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) 10 | 11 | import UIKit 12 | import RxSwift 13 | 14 | extension Reactive where Base: UIStepper { 15 | 16 | /// Reactive wrapper for `value` property. 17 | public var value: ControlProperty { 18 | return base.rx.controlPropertyWithDefaultEvents( 19 | getter: { stepper in 20 | stepper.value 21 | }, setter: { stepper, value in 22 | stepper.value = value 23 | } 24 | ) 25 | } 26 | 27 | /// Reactive wrapper for `stepValue` property. 28 | public var stepValue: Binder { 29 | return Binder(self.base) { stepper, value in 30 | stepper.stepValue = value 31 | } 32 | } 33 | 34 | } 35 | 36 | #endif 37 | 38 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/Target Support Files/Alamofire/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 4.8.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/Target Support Files/RxCocoa/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 4.3.1 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/Target Support Files/RxSwift/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 4.3.1 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/Target Support Files/Swinject/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 2.5.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/Target Support Files/Kingfisher/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 5.0.1 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/Manifest.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - Alamofire (4.8.0) 3 | - Kingfisher (5.0.1) 4 | - pop (1.0.12) 5 | - RxCocoa (4.3.1): 6 | - RxSwift (~> 4.0) 7 | - RxSwift (4.3.1) 8 | - Swinject (2.5.0) 9 | 10 | DEPENDENCIES: 11 | - Alamofire 12 | - Kingfisher 13 | - pop 14 | - RxCocoa (= 4.3.1) 15 | - RxSwift (= 4.3.1) 16 | - Swinject 17 | 18 | SPEC REPOS: 19 | https://github.com/cocoapods/specs.git: 20 | - Alamofire 21 | - Kingfisher 22 | - pop 23 | - RxCocoa 24 | - RxSwift 25 | - Swinject 26 | 27 | SPEC CHECKSUMS: 28 | Alamofire: 3ec537f71edc9804815215393ae2b1a8ea33a844 29 | Kingfisher: 4f771421b9208185217550528a06fd48756cb7c2 30 | pop: d582054913807fd11fd50bfe6a539d91c7e1a55a 31 | RxCocoa: 78763c7b07d02455598d9fc3c1ad091a28b73635 32 | RxSwift: fe0fd770a43acdb7d0a53da411c9b892e69bb6e4 33 | Swinject: 82cdb851f63f91bba974e3eca1d69780f2f7677e 34 | 35 | PODFILE CHECKSUM: 48882b262081c5daa840b40bc47e221d4d6e525f 36 | 37 | COCOAPODS: 1.5.3 38 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/Target Support Files/Pods-SwiftLearningDemo/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/pop/pop/POP.h: -------------------------------------------------------------------------------- 1 | /** 2 | Copyright (c) 2014-present, Facebook, Inc. 3 | All rights reserved. 4 | 5 | This source code is licensed under the BSD-style license found in the 6 | LICENSE file in the root directory of this source tree. An additional grant 7 | of patent rights can be found in the PATENTS file in the same directory. 8 | */ 9 | 10 | #ifndef POP_POP_H 11 | #define POP_POP_H 12 | 13 | #import 14 | 15 | #import 16 | #import 17 | #import 18 | #import 19 | #import 20 | #import 21 | #import 22 | #import 23 | #import 24 | #import 25 | #import 26 | #import 27 | #import 28 | #import 29 | 30 | #endif /* POP_POP_H */ 31 | -------------------------------------------------------------------------------- /ๅคงๅ‰็ซฏโค๏ธ/Flutter๐Ÿฆ/Awe-Flutter-Tool.md: -------------------------------------------------------------------------------- 1 | # Awe-Flutter-Tool 2 | 3 | ## ็ผ–่ฏ‘็Žฏๅขƒ 4 | 5 | ##### 1. What is the best Flutter IDE? 6 | 7 | | IDE | ๅŠŸ่ƒฝ | ๆ€ง่ƒฝ | 8 | |---|---|---| 9 | | 1. Android Studio | โญ๏ธโญ๏ธโญ๏ธโญ๏ธโญ๏ธ | โญ๏ธโญ๏ธ | 10 | | 2. VSCode | โญ๏ธโญ๏ธโญ๏ธ | โญ๏ธโญ๏ธโญ๏ธโญ๏ธโญ๏ธ | 11 | | 3. IntelliJ | โญ๏ธโญ๏ธโญ๏ธโญ๏ธโญ๏ธ | โญ | 12 | 13 | ไน‹ๅ‰่ง‰ๅพ—Androidๅฏไปฅ๏ผŒIntelliJๅŠŸ่ƒฝๅผบๅคง๏ผŒไฝ†่ท‘ๅคงๅทฅ็จ‹ๆ—ถๅ†…ๅญ˜ๅคช่ฟ‡ๅก้กฟ๏ผŒๆœ€็ปˆ้€‰ๆ‹ฉๆƒณ็”จ่ฝป้‡็š„VSCode. 14 | 15 | ##### VSCode Running Flutter 16 | ไธ‹้ข่ฎฐๅฝ•ๅ‡ ็‚นVSCode็š„ๅฏนFlutter้…็ฝฎ่ฟ‡็จ‹ 17 | 18 | 1. flavor็š„้…็ฝฎ 19 | ๅฆ‚ๆžœ่ท‘iOSๆœช้…็ฝฎๆ—ถflavorๆ—ถๅฎนๆ˜“ๆŠฅ้”™๏ผš 20 | 21 | ```dart 22 | You must specify a --flavor option to select one of the available schemes. 23 | ``` 24 | 25 | ้œ€่ฆๅœจ VSCode ็š„launchConfig้‡ŒๆŒ‡ๅฎšflavor: 26 | ๆทปๅŠ  27 | 28 | ```dart 29 | { 30 | "version": "0.2.0", 31 | "configurations": [ 32 | { 33 | "name": "xxxxx(debug)", 34 | "request": "launch", 35 | "type": "dart", 36 | "flutterMode": "debug", 37 | "args": [ 38 | "--flavor", 39 | "Runner-dev", 40 | ], 41 | }, 42 | ] 43 | } 44 | ``` 45 | ![](https://pic-mike.oss-cn-hongkong.aliyuncs.com/Blog/20220319152938.png) 46 | 47 | 48 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxCocoa/RxCocoa/iOS/Proxies/RxCollectionViewDelegateProxy.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxCollectionViewDelegateProxy.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 6/29/15. 6 | // Copyright ยฉ 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) 10 | 11 | import UIKit 12 | import RxSwift 13 | 14 | /// For more information take a look at `DelegateProxyType`. 15 | open class RxCollectionViewDelegateProxy 16 | : RxScrollViewDelegateProxy 17 | , UICollectionViewDelegate 18 | , UICollectionViewDelegateFlowLayout { 19 | 20 | /// Typed parent object. 21 | public weak private(set) var collectionView: UICollectionView? 22 | 23 | /// Initializes `RxCollectionViewDelegateProxy` 24 | /// 25 | /// - parameter collectionView: Parent object for delegate proxy. 26 | public init(collectionView: UICollectionView) { 27 | self.collectionView = collectionView 28 | super.init(scrollView: collectionView) 29 | } 30 | } 31 | 32 | #endif 33 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxSwift/RxSwift/Concurrency/Lock.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Lock.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 3/31/15. 6 | // Copyright ยฉ 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | protocol Lock { 10 | func lock() 11 | func unlock() 12 | } 13 | 14 | // https://lists.swift.org/pipermail/swift-dev/Week-of-Mon-20151214/000321.html 15 | typealias SpinLock = RecursiveLock 16 | 17 | extension RecursiveLock : Lock { 18 | @inline(__always) 19 | final func performLocked(_ action: () -> Void) { 20 | lock(); defer { unlock() } 21 | action() 22 | } 23 | 24 | @inline(__always) 25 | final func calculateLocked(_ action: () -> T) -> T { 26 | lock(); defer { unlock() } 27 | return action() 28 | } 29 | 30 | @inline(__always) 31 | final func calculateLockedOrFail(_ action: () throws -> T) throws -> T { 32 | lock(); defer { unlock() } 33 | let result = try action() 34 | return result 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxCocoa/RxCocoa/Common/NSLayoutConstraint+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // NSLayoutConstraint+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 12/6/15. 6 | // Copyright ยฉ 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if !os(Linux) 10 | 11 | #if os(macOS) 12 | import Cocoa 13 | #else 14 | import UIKit 15 | #endif 16 | 17 | import RxSwift 18 | 19 | #if os(iOS) || os(macOS) || os(tvOS) 20 | extension Reactive where Base: NSLayoutConstraint { 21 | /// Bindable sink for `constant` property. 22 | public var constant: Binder { 23 | return Binder(self.base) { constraint, constant in 24 | constraint.constant = constant 25 | } 26 | } 27 | 28 | /// Bindable sink for `active` property. 29 | @available(iOS 8, OSX 10.10, *) 30 | public var active: Binder { 31 | return Binder(self.base) { constraint, value in 32 | constraint.isActive = value 33 | } 34 | } 35 | } 36 | 37 | #endif 38 | 39 | #endif 40 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/pop/pop/POPDefines.h: -------------------------------------------------------------------------------- 1 | /** 2 | Copyright (c) 2014-present, Facebook, Inc. 3 | All rights reserved. 4 | 5 | This source code is licensed under the BSD-style license found in the 6 | LICENSE file in the root directory of this source tree. An additional grant 7 | of patent rights can be found in the PATENTS file in the same directory. 8 | */ 9 | 10 | #ifndef POP_POPDefines_h 11 | #define POP_POPDefines_h 12 | 13 | #import 14 | 15 | #ifdef __cplusplus 16 | # define POP_EXTERN_C_BEGIN extern "C" { 17 | # define POP_EXTERN_C_END } 18 | #else 19 | # define POP_EXTERN_C_BEGIN 20 | # define POP_EXTERN_C_END 21 | #endif 22 | 23 | #define POP_ARRAY_COUNT(x) sizeof(x) / sizeof(x[0]) 24 | 25 | #if defined (__cplusplus) && defined (__GNUC__) 26 | # define POP_NOTHROW __attribute__ ((nothrow)) 27 | #else 28 | # define POP_NOTHROW 29 | #endif 30 | 31 | #if defined(POP_USE_SCENEKIT) 32 | # if TARGET_OS_MAC || TARGET_OS_IPHONE 33 | # define SCENEKIT_SDK_AVAILABLE 1 34 | # endif 35 | #endif 36 | 37 | #endif 38 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/MMPageViewController/MMPageViewController/Library/MJRefresh/Base/MJRefreshHeader.h: -------------------------------------------------------------------------------- 1 | // ไปฃ็ ๅœฐๅ€: https://github.com/CoderMJLee/MJRefresh 2 | // ไปฃ็ ๅœฐๅ€: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000 3 | // MJRefreshHeader.h 4 | // MJRefreshExample 5 | // 6 | // Created by MJ Lee on 15/3/4. 7 | // Copyright (c) 2015ๅนด ๅฐ็ ๅ“ฅ. All rights reserved. 8 | // ไธ‹ๆ‹‰ๅˆทๆ–ฐๆŽงไปถ:่ดŸ่ดฃ็›‘ๆŽง็”จๆˆทไธ‹ๆ‹‰็š„็Šถๆ€ 9 | 10 | #import "MJRefreshComponent.h" 11 | 12 | @interface MJRefreshHeader : MJRefreshComponent 13 | /** ๅˆ›ๅปบheader */ 14 | + (instancetype)headerWithRefreshingBlock:(MJRefreshComponentRefreshingBlock)refreshingBlock; 15 | /** ๅˆ›ๅปบheader */ 16 | + (instancetype)headerWithRefreshingTarget:(id)target refreshingAction:(SEL)action; 17 | 18 | /** ่ฟ™ไธชkey็”จๆฅๅญ˜ๅ‚จไธŠไธ€ๆฌกไธ‹ๆ‹‰ๅˆทๆ–ฐๆˆๅŠŸ็š„ๆ—ถ้—ด */ 19 | @property (copy, nonatomic) NSString *lastUpdatedTimeKey; 20 | /** ไธŠไธ€ๆฌกไธ‹ๆ‹‰ๅˆทๆ–ฐๆˆๅŠŸ็š„ๆ—ถ้—ด */ 21 | @property (strong, nonatomic, readonly) NSDate *lastUpdatedTime; 22 | 23 | /** ๅฟฝ็•ฅๅคšๅฐ‘scrollView็š„contentInset็š„top */ 24 | @property (assign, nonatomic) CGFloat ignoredScrollViewContentInsetTop; 25 | @end 26 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxCocoa/RxCocoa/iOS/UIView+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 12/6/15. 6 | // Copyright ยฉ 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) 10 | 11 | import UIKit 12 | import RxSwift 13 | 14 | extension Reactive where Base: UIView { 15 | /// Bindable sink for `hidden` property. 16 | public var isHidden: Binder { 17 | return Binder(self.base) { view, hidden in 18 | view.isHidden = hidden 19 | } 20 | } 21 | 22 | /// Bindable sink for `alpha` property. 23 | public var alpha: Binder { 24 | return Binder(self.base) { view, alpha in 25 | view.alpha = alpha 26 | } 27 | } 28 | 29 | /// Bindable sink for `isUserInteractionEnabled` property. 30 | public var isUserInteractionEnabled: Binder { 31 | return Binder(self.base) { view, userInteractionEnabled in 32 | view.isUserInteractionEnabled = userInteractionEnabled 33 | } 34 | } 35 | 36 | } 37 | 38 | #endif 39 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxSwift/RxSwift/Observables/Error.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Error.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 8/30/15. 6 | // Copyright ยฉ 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | extension ObservableType { 10 | /** 11 | Returns an observable sequence that terminates with an `error`. 12 | 13 | - seealso: [throw operator on reactivex.io](http://reactivex.io/documentation/operators/empty-never-throw.html) 14 | 15 | - returns: The observable sequence that terminates with specified error. 16 | */ 17 | public static func error(_ error: Swift.Error) -> Observable { 18 | return ErrorProducer(error: error) 19 | } 20 | } 21 | 22 | final fileprivate class ErrorProducer : Producer { 23 | private let _error: Swift.Error 24 | 25 | init(error: Swift.Error) { 26 | _error = error 27 | } 28 | 29 | override func subscribe(_ observer: O) -> Disposable where O.E == Element { 30 | observer.on(.error(_error)) 31 | return Disposables.create() 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/ๅคš็บฟ็จ‹Demo/ๅคš็บฟ็จ‹Demo/ViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.m 3 | // ๅคš็บฟ็จ‹Demo 4 | // 5 | // Created by MichaelMao on 2018/9/2. 6 | // Copyright ยฉ 2018ๅนด MichaelMao. All rights reserved. 7 | // 8 | 9 | #import "ViewController.h" 10 | 11 | @interface ViewController () 12 | 13 | @end 14 | 15 | @implementation ViewController 16 | 17 | - (void)viewDidLoad { 18 | [super viewDidLoad]; 19 | // Do any additional setup after loading the view, typically from a nib. 20 | } 21 | 22 | 23 | - (void)gcdLockExample{ 24 | NSLog(@"currentThread = %@", [NSThread currentThread]); 25 | 26 | NSLog(@"1"); // ไปปๅŠก1 27 | dispatch_async(dispatch_get_global_queue(0, 0), ^{ 28 | NSLog(@"2"); // ไปปๅŠก2 29 | NSLog(@"currentThread = %@", [NSThread currentThread]); 30 | dispatch_sync(dispatch_get_main_queue(), ^{ 31 | NSLog(@"3"); // ไปปๅŠก3 32 | NSLog(@"currentThread = %@", [NSThread currentThread]); 33 | }); 34 | NSLog(@"4"); // ไปปๅŠก4 35 | NSLog(@"currentThread = %@", [NSThread currentThread]); 36 | }); 37 | NSLog(@"5"); // ไปปๅŠก5 38 | } 39 | 40 | @end 41 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 ๅทๆฏ› 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /ๅญฆไน ๆ—ฅๅฟ—Logs/DailyLearningLogs2017-05/DailyLearningLogs2017-05-19.md: -------------------------------------------------------------------------------- 1 | # DailyLearningLogs 2017-05-19 2 | 3 | ## Todo 4 | 5 | - [x] Running~ (2017-05-19) 6 | - [x] ใ€Šๅ…ป็œผๅฐฑๆ˜ฏๅ…ป็ฒพ็ฅžใ€‹CornellNote (2017-05-20) 7 | 8 | ## Done 9 | 10 | - [x] ๆ•ด็†้กน็›ฎ็ป“ๆž„ๆจกๅ— (2017-05-18) 11 | - [x] Gitsome ๏ผˆ2017-05-19๏ผ‰ 12 | ่Šฑไบ†ไบ›ๆ—ถ้—ด๏ผŒๆŠŠ`Python`็Žฏๅขƒๆขๆˆ`V3.5`็š„๏ผŒๆžๅฅฝ`Gitsome`ใ€‚ๅ‘็Žฐๅ‡ ไธชๆฏ”่พƒๅฅฝ็”จ็š„ๅ‘ฝไปค๐Ÿ˜ 13 | ### ไธ€ใ€ๆŸฅ็œ‹`Github`ไธŠ็š„ๆต่กŒๅบ“ 14 | `gh trending objective-c -w -p` 15 | `gh trending swift -w -b` 16 | `-b`ๆ˜ฏๅœจๆต่งˆๅ™จไธญๆ‰“ๅผ€๏ผŒ`-p`ๆ˜ฏๅœจ`shell`ไธญๆ‰“ๅผ€,`Github`ๆœ‰ๆ—ถๅ€™ไผšๆŠฝ๏ผŒๅปบ่ฎฎ่ฟ˜ๆ˜ฏ็”จ`-p` 17 | ### ไบŒใ€ ๆŸฅ็œ‹`github`็š„้€š็Ÿฅใ€ๅบ“ใ€ๆ‹‰ๅ–่ฏทๆฑ‚ใ€่ดฆๆˆท็ญ‰ไฟกๆฏ 18 | `gh view` 19 | 20 | >View the given notification/repo/issue/pull_request/user index in the terminal or a browser. 21 | 22 | >This method is meant to be called after one of the following commands which outputs a table of notifications/repos/issues/pull_requests/users: 23 | ``` 24 | gh repos 25 | gh search-repos 26 | gh starred 27 | 28 | gh issues 29 | gh pull-requests 30 | gh search-issues 31 | 32 | gh notifications 33 | gh trending 34 | 35 | gh user 36 | gh me 37 | ``` 38 | 39 | ๆ —ๅญ~ 40 | ``` 41 | $ gh repos 42 | $ gh view 1 43 | 44 | $ gh starred 45 | $ gh view 1 -b 46 | $ gh view 1 --browser 47 | ``` 48 | 49 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxCocoa/RxCocoa/iOS/UISwitch+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UISwitch+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Carlos Garcรญa on 8/7/15. 6 | // Copyright ยฉ 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) 10 | 11 | import UIKit 12 | import RxSwift 13 | 14 | extension Reactive where Base: UISwitch { 15 | 16 | /// Reactive wrapper for `isOn` property. 17 | public var isOn: ControlProperty { 18 | return value 19 | } 20 | 21 | /** 22 | Reactive wrapper for `isOn` property. 23 | 24 | **โš ๏ธ Versions prior to iOS 10.2 were leaking `UISwitch`s, so on those versions 25 | underlying observable sequence won't complete when nothing holds a strong reference 26 | to UISwitch.โš ๏ธ** 27 | */ 28 | public var value: ControlProperty { 29 | return base.rx.controlPropertyWithDefaultEvents( 30 | getter: { uiSwitch in 31 | uiSwitch.isOn 32 | }, setter: { uiSwitch, value in 33 | uiSwitch.isOn = value 34 | } 35 | ) 36 | } 37 | 38 | } 39 | 40 | #endif 41 | 42 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/MMPageViewController/MMPageViewController/Library/MJRefresh/UIScrollView+MJRefresh.h: -------------------------------------------------------------------------------- 1 | // ไปฃ็ ๅœฐๅ€: https://github.com/CoderMJLee/MJRefresh 2 | // ไปฃ็ ๅœฐๅ€: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000 3 | // UIScrollView+MJRefresh.h 4 | // MJRefreshExample 5 | // 6 | // Created by MJ Lee on 15/3/4. 7 | // Copyright (c) 2015ๅนด ๅฐ็ ๅ“ฅ. All rights reserved. 8 | // ็ป™ScrollViewๅขžๅŠ ไธ‹ๆ‹‰ๅˆทๆ–ฐใ€ไธŠๆ‹‰ๅˆทๆ–ฐ็š„ๅŠŸ่ƒฝ 9 | 10 | #import 11 | #import "MJRefreshConst.h" 12 | 13 | @class MJRefreshHeader, MJRefreshFooter; 14 | 15 | @interface UIScrollView (MJRefresh) 16 | /** ไธ‹ๆ‹‰ๅˆทๆ–ฐๆŽงไปถ */ 17 | @property (strong, nonatomic) MJRefreshHeader *mj_header; 18 | @property (strong, nonatomic) MJRefreshHeader *header MJRefreshDeprecated("ไฝฟ็”จmj_header"); 19 | /** ไธŠๆ‹‰ๅˆทๆ–ฐๆŽงไปถ */ 20 | @property (strong, nonatomic) MJRefreshFooter *mj_footer; 21 | @property (strong, nonatomic) MJRefreshFooter *footer MJRefreshDeprecated("ไฝฟ็”จmj_footer"); 22 | 23 | #pragma mark - other 24 | - (NSInteger)mj_totalDataCount; 25 | @property (copy, nonatomic) void (^mj_reloadDataBlock)(NSInteger totalDataCount); 26 | @end 27 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxCocoa/LICENSE.md: -------------------------------------------------------------------------------- 1 | **The MIT License** 2 | **Copyright ยฉ 2015 Krunoslav Zaher** 3 | **All rights reserved.** 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 6 | 7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxSwift/LICENSE.md: -------------------------------------------------------------------------------- 1 | **The MIT License** 2 | **Copyright ยฉ 2015 Krunoslav Zaher** 3 | **All rights reserved.** 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 6 | 7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxCocoa/RxCocoa/iOS/Proxies/RxWebViewDelegateProxy.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxWebViewDelegateProxy.swift 3 | // RxCocoa 4 | // 5 | // Created by Andrew Breckenridge on 9/26/16. 6 | // Copyright ยฉ 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) 10 | 11 | import UIKit 12 | import RxSwift 13 | 14 | extension UIWebView: HasDelegate { 15 | public typealias Delegate = UIWebViewDelegate 16 | } 17 | 18 | open class RxWebViewDelegateProxy 19 | : DelegateProxy 20 | , DelegateProxyType 21 | , UIWebViewDelegate { 22 | 23 | /// Typed parent object. 24 | public weak private(set) var webView: UIWebView? 25 | 26 | /// - parameter webView: Parent object for delegate proxy. 27 | public init(webView: ParentObject) { 28 | self.webView = webView 29 | super.init(parentObject: webView, delegateProxy: RxWebViewDelegateProxy.self) 30 | } 31 | 32 | // Register known implementations 33 | public static func registerKnownImplementations() { 34 | self.register { RxWebViewDelegateProxy(webView: $0) } 35 | } 36 | } 37 | 38 | #endif 39 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/RxSwift/RxSwift/Disposables/BooleanDisposable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // BooleanDisposable.swift 3 | // RxSwift 4 | // 5 | // Created by Junior B. on 10/29/15. 6 | // Copyright ยฉ 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /// Represents a disposable resource that can be checked for disposal status. 10 | public final class BooleanDisposable : Cancelable { 11 | 12 | internal static let BooleanDisposableTrue = BooleanDisposable(isDisposed: true) 13 | private var _isDisposed = false 14 | 15 | /// Initializes a new instance of the `BooleanDisposable` class 16 | public init() { 17 | } 18 | 19 | /// Initializes a new instance of the `BooleanDisposable` class with given value 20 | public init(isDisposed: Bool) { 21 | self._isDisposed = isDisposed 22 | } 23 | 24 | /// - returns: Was resource disposed. 25 | public var isDisposed: Bool { 26 | return _isDisposed 27 | } 28 | 29 | /// Sets the status to disposed, which can be observer through the `isDisposed` property. 30 | public func dispose() { 31 | _isDisposed = true 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /ๅผ€ๅ‘ๅทฅๅ…ทTool๐Ÿ”ง/ๅทฅๅ…ท-UMLๅ›พ่งฃ.md: -------------------------------------------------------------------------------- 1 | 2 | # ๅทฅๅ…ท-UMLๅ›พ่งฃ 3 | 4 | ## ๅทฅๅ…ท-PlantUML 5 | 6 | 7 | * [UML - Architecture](https://www.tutorialspoint.com/uml/uml_architecture.htm) 8 | * [PlantUML | DrawUML](https://ogom.github.io/draw_uml/plantuml/) 9 | * [PlantUML ้ซ˜ๆ•ˆๅœฐ็”ปๅ›พ - JackPengๅšๅฎข](https://yuanfentiank789.github.io/2017/09/15/PlantUML-%E9%AB%98%E6%95%88%E5%9C%B0%E7%94%BB%E5%9B%BE/) 10 | 11 | ## ็ฑปๅ›พ 12 | 13 | ![](https://pic-mike.oss-cn-hongkong.aliyuncs.com/Blog/20190706145452.png) 14 | 15 | 16 | ![](https://pic-mike.oss-cn-hongkong.aliyuncs.com/Blog/20190706145317.png) 17 | 18 | Active Class Notation 19 | 20 | ![](https://pic-mike.oss-cn-hongkong.aliyuncs.com/Blog/20190706145352.png) 21 | 22 | 23 | 24 | ## ๆ—ถๅบๅ›พ 25 | 26 | 27 | * [ใ€UMLๅ›พใ€‘ๆ—ถๅบๅ›พ - ็ฎ€ไนฆ](https://www.jianshu.com/p/ccc0084cfb76) 28 | 29 | ## ๅ‚่€ƒ 30 | 31 | 1. [็œ‹ๆ‡‚UML็ฑปๅ›พๅ’Œๆ—ถๅบๅ›พ โ€” Graphic Design Patterns](https://design-patterns.readthedocs.io/zh_CN/latest/read_uml.html) 32 | 2. [umlๅ›พๅ…ญ็ง็ฎญๅคด็š„ๅซไน‰ - wglla็š„ๅšๅฎข - CSDNๅšๅฎข](https://blog.csdn.net/wglla/article/details/52225571) 33 | 3. [UMLๅ„็งๅ›พๆ€ป็ป“-็ฒพๅŽ - ๆ˜ฅ้ฃŽๅ้‡Œ็š„ๆƒ… - ๅšๅฎขๅ›ญ](http://www.cnblogs.com/jiangds/p/6596595.html) 34 | 35 | 36 | 1. [ไฝฟ็”จEmacsๆ•ฒๅ‡บUML๏ผŒPlantUMLๅฟซ้€ŸๆŒ‡ๅ—]()http://archive.3zso.com/archives/plantuml-quickstart.html -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/Swinject/Sources/Behavior.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Behavior.swift 3 | // Swinject-iOS 4 | // 5 | // Created by Jakub Vaลˆo on 16/02/2018. 6 | // Copyright ยฉ 2018 Swinject Contributors. All rights reserved. 7 | // 8 | 9 | /// Protocol for adding functionality to the container 10 | public protocol Behavior { 11 | /// This will be invoked on each behavior added to the `container` for each `entry` added to the container using 12 | /// one of the `register()` or type forwading methods 13 | /// 14 | /// - Parameters: 15 | /// - container: container into which an `entry` has been registered 16 | /// - type: Type which will be resolved using the `entry` 17 | /// - entry: ServiceEntry registered to the `container` 18 | /// - name: name under which the service has been registered to the `container` 19 | /// 20 | /// - Remark: `Type` and `Service` can be different types in the case of type forwarding 21 | func container( 22 | _ container: Container, 23 | didRegisterType type: Type.Type, 24 | toService entry: ServiceEntry, 25 | withName name: String? 26 | ) 27 | } 28 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/Kingfisher/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2018 Wei Wang 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/Swinject/Sources/Assembly.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Assembly.swift 3 | // Swinject 4 | // 5 | // Created by mike.owens on 12/9/15. 6 | // Copyright ยฉ 2015 Swinject Contributors. All rights reserved. 7 | // 8 | 9 | /// The `Assembly` provides a means to organize your `Service` registration in logic groups which allows 10 | /// the user to swap out different implementations of `Services` by providing different `Assembly` instances 11 | /// to the `Assembler` 12 | public protocol Assembly { 13 | 14 | /// Provide hook for `Assembler` to load Services into the provided container 15 | /// 16 | /// - parameter container: the container provided by the `Assembler` 17 | /// 18 | func assemble(container: Container) 19 | 20 | /// Provides a hook to the `Assembly` that will be called once the `Assembler` has loaded all `Assembly` 21 | /// instances into the container. 22 | /// 23 | /// - parameter resolver: the resolver that can resolve instances from the built container 24 | /// 25 | func loaded(resolver: Resolver) 26 | } 27 | 28 | public extension Assembly { 29 | func loaded(resolver: Resolver) { 30 | // no-op 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/pop/pop/POPAnimationEventInternal.h: -------------------------------------------------------------------------------- 1 | /** 2 | Copyright (c) 2014-present, Facebook, Inc. 3 | All rights reserved. 4 | 5 | This source code is licensed under the BSD-style license found in the 6 | LICENSE file in the root directory of this source tree. An additional grant 7 | of patent rights can be found in the PATENTS file in the same directory. 8 | */ 9 | 10 | #import 11 | 12 | #import "POPAnimationEvent.h" 13 | 14 | @interface POPAnimationEvent () 15 | 16 | /** 17 | @abstract Default initializer. 18 | */ 19 | - (instancetype)initWithType:(POPAnimationEventType)type time:(CFTimeInterval)time; 20 | 21 | /** 22 | @abstract Readwrite redefinition of public property. 23 | */ 24 | @property (readwrite, nonatomic, copy) NSString *animationDescription; 25 | 26 | @end 27 | 28 | @interface POPAnimationValueEvent () 29 | 30 | /** 31 | @abstract Default initializer. 32 | */ 33 | - (instancetype)initWithType:(POPAnimationEventType)type time:(CFTimeInterval)time value:(id)value; 34 | 35 | /** 36 | @abstract Readwrite redefinition of public property. 37 | */ 38 | @property (readwrite, nonatomic, strong) id velocity; 39 | 40 | @end 41 | 42 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/Alamofire/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2014-2018 Alamofire Software Foundation (http://alamofire.org/) 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /็ปƒไน Demos๐Ÿ”จ/SwiftLearningDemo/Pods/Swinject/LICENSE.txt: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 Swinject Contributors 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | --------------------------------------------------------------------------------