├── .gitignore ├── 01-Demo └── BaseOC │ ├── BaseOC.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ ├── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ │ └── xcuserdata │ │ │ └── skyming.xcuserdatad │ │ │ └── UserInterfaceState.xcuserstate │ └── xcuserdata │ │ └── skyming.xcuserdatad │ │ ├── xcdebugger │ │ └── Breakpoints_v2.xcbkptlist │ │ └── xcschemes │ │ └── xcschememanagement.plist │ └── BaseOC │ ├── AppDelegate.h │ ├── AppDelegate.m │ ├── Assets.xcassets │ └── AppIcon.appiconset │ │ └── Contents.json │ ├── Base.lproj │ ├── LaunchScreen.storyboard │ └── Main.storyboard │ ├── CustomObj.h │ ├── CustomObj.m │ ├── Info.plist │ ├── ViewController.h │ ├── ViewController.m │ └── main.m ├── 02-Data ├── iOS-AudiovisualTypes.text └── iPhone6-networkInterface.text ├── 03-Image ├── AudioVisualFramework.png └── 屏幕快照 2017-10-30 下午3.54.14.png ├── 0x01-语言基础.MD ├── 0x02-调试分析.MD ├── 0x03-iOS基础.MD ├── 0x04-架构设计.MD ├── 0x05-AIAgent.MD ├── 0x05-人工智能.md ├── 0xp01-IM研究.MD ├── 0xp02-Push.MD ├── 0xp03-APM.MD ├── 0xp04-音视频技术.MD ├── 0xp05-PASSPORT.MD ├── 0xp06-端智能.MD ├── 0xp07-VR汽车.MD ├── 0xz01-技术大会PPT.MD ├── LICENSE ├── Mac.MD ├── README.md └── 基础知识 ├── Web相关.MD ├── iOS13适配.MD ├── 图片库设计.md ├── 基础算法.MD ├── 富文本.md ├── 性能优化.MD ├── 操作系统.MD ├── 数据结构与算法.MD ├── 正则表达式.MD └── 计算机网络.MD /.gitignore: -------------------------------------------------------------------------------- 1 | 01-Demo/BaseOC/Build 2 | 01-Demo/BaseOC/Index 3 | xcuserdata/ 4 | 5 | -------------------------------------------------------------------------------- /01-Demo/BaseOC/BaseOC.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 48; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 2E2BE0F9208EC04A0049AD4E /* CustomObj.m in Sources */ = {isa = PBXBuildFile; fileRef = 2E2BE0F8208EC04A0049AD4E /* CustomObj.m */; }; 11 | 2E64FCAB206DF49400453F17 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 2E64FCAA206DF49400453F17 /* AppDelegate.m */; }; 12 | 2E64FCAE206DF49400453F17 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2E64FCAD206DF49400453F17 /* ViewController.m */; }; 13 | 2E64FCB1206DF49400453F17 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 2E64FCAF206DF49400453F17 /* Main.storyboard */; }; 14 | 2E64FCB3206DF49400453F17 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 2E64FCB2206DF49400453F17 /* Assets.xcassets */; }; 15 | 2E64FCB6206DF49400453F17 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 2E64FCB4206DF49400453F17 /* LaunchScreen.storyboard */; }; 16 | 2E64FCB9206DF49400453F17 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 2E64FCB8206DF49400453F17 /* main.m */; }; 17 | /* End PBXBuildFile section */ 18 | 19 | /* Begin PBXFileReference section */ 20 | 2E2BE0F7208EC04A0049AD4E /* CustomObj.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CustomObj.h; sourceTree = ""; }; 21 | 2E2BE0F8208EC04A0049AD4E /* CustomObj.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CustomObj.m; sourceTree = ""; }; 22 | 2E64FCA6206DF49400453F17 /* BaseOC.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = BaseOC.app; sourceTree = BUILT_PRODUCTS_DIR; }; 23 | 2E64FCA9206DF49400453F17 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; 24 | 2E64FCAA206DF49400453F17 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; 25 | 2E64FCAC206DF49400453F17 /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = ""; }; 26 | 2E64FCAD206DF49400453F17 /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = ""; }; 27 | 2E64FCB0206DF49400453F17 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 28 | 2E64FCB2206DF49400453F17 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 29 | 2E64FCB5206DF49400453F17 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 30 | 2E64FCB7206DF49400453F17 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 31 | 2E64FCB8206DF49400453F17 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 32 | 977EF6E2FC9DA5804C67E851 /* libPods-BaseOC.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-BaseOC.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 33 | /* End PBXFileReference section */ 34 | 35 | /* Begin PBXFrameworksBuildPhase section */ 36 | 2E64FCA3206DF49400453F17 /* Frameworks */ = { 37 | isa = PBXFrameworksBuildPhase; 38 | buildActionMask = 2147483647; 39 | files = ( 40 | ); 41 | runOnlyForDeploymentPostprocessing = 0; 42 | }; 43 | /* End PBXFrameworksBuildPhase section */ 44 | 45 | /* Begin PBXGroup section */ 46 | 2E64FC9D206DF49400453F17 = { 47 | isa = PBXGroup; 48 | children = ( 49 | 2E64FCA8206DF49400453F17 /* BaseOC */, 50 | 2E64FCA7206DF49400453F17 /* Products */, 51 | E11A0035A3CDF61E7BB68235 /* Frameworks */, 52 | ); 53 | sourceTree = ""; 54 | }; 55 | 2E64FCA7206DF49400453F17 /* Products */ = { 56 | isa = PBXGroup; 57 | children = ( 58 | 2E64FCA6206DF49400453F17 /* BaseOC.app */, 59 | ); 60 | name = Products; 61 | sourceTree = ""; 62 | }; 63 | 2E64FCA8206DF49400453F17 /* BaseOC */ = { 64 | isa = PBXGroup; 65 | children = ( 66 | 2E64FCA9206DF49400453F17 /* AppDelegate.h */, 67 | 2E64FCAA206DF49400453F17 /* AppDelegate.m */, 68 | 2E64FCAC206DF49400453F17 /* ViewController.h */, 69 | 2E64FCAD206DF49400453F17 /* ViewController.m */, 70 | 2E2BE0F7208EC04A0049AD4E /* CustomObj.h */, 71 | 2E2BE0F8208EC04A0049AD4E /* CustomObj.m */, 72 | 2E64FCAF206DF49400453F17 /* Main.storyboard */, 73 | 2E64FCB2206DF49400453F17 /* Assets.xcassets */, 74 | 2E64FCB4206DF49400453F17 /* LaunchScreen.storyboard */, 75 | 2E64FCB7206DF49400453F17 /* Info.plist */, 76 | 2E64FCB8206DF49400453F17 /* main.m */, 77 | ); 78 | path = BaseOC; 79 | sourceTree = ""; 80 | }; 81 | E11A0035A3CDF61E7BB68235 /* Frameworks */ = { 82 | isa = PBXGroup; 83 | children = ( 84 | 977EF6E2FC9DA5804C67E851 /* libPods-BaseOC.a */, 85 | ); 86 | name = Frameworks; 87 | sourceTree = ""; 88 | }; 89 | /* End PBXGroup section */ 90 | 91 | /* Begin PBXNativeTarget section */ 92 | 2E64FCA5206DF49400453F17 /* BaseOC */ = { 93 | isa = PBXNativeTarget; 94 | buildConfigurationList = 2E64FCBC206DF49400453F17 /* Build configuration list for PBXNativeTarget "BaseOC" */; 95 | buildPhases = ( 96 | 2E64FCA2206DF49400453F17 /* Sources */, 97 | 2E64FCA3206DF49400453F17 /* Frameworks */, 98 | 2E64FCA4206DF49400453F17 /* Resources */, 99 | ); 100 | buildRules = ( 101 | ); 102 | dependencies = ( 103 | ); 104 | name = BaseOC; 105 | productName = BaseOC; 106 | productReference = 2E64FCA6206DF49400453F17 /* BaseOC.app */; 107 | productType = "com.apple.product-type.application"; 108 | }; 109 | /* End PBXNativeTarget section */ 110 | 111 | /* Begin PBXProject section */ 112 | 2E64FC9E206DF49400453F17 /* Project object */ = { 113 | isa = PBXProject; 114 | attributes = { 115 | LastUpgradeCheck = 0920; 116 | ORGANIZATIONNAME = skyming; 117 | TargetAttributes = { 118 | 2E64FCA5206DF49400453F17 = { 119 | CreatedOnToolsVersion = 9.2; 120 | ProvisioningStyle = Manual; 121 | }; 122 | }; 123 | }; 124 | buildConfigurationList = 2E64FCA1206DF49400453F17 /* Build configuration list for PBXProject "BaseOC" */; 125 | compatibilityVersion = "Xcode 8.0"; 126 | developmentRegion = en; 127 | hasScannedForEncodings = 0; 128 | knownRegions = ( 129 | en, 130 | Base, 131 | ); 132 | mainGroup = 2E64FC9D206DF49400453F17; 133 | productRefGroup = 2E64FCA7206DF49400453F17 /* Products */; 134 | projectDirPath = ""; 135 | projectRoot = ""; 136 | targets = ( 137 | 2E64FCA5206DF49400453F17 /* BaseOC */, 138 | ); 139 | }; 140 | /* End PBXProject section */ 141 | 142 | /* Begin PBXResourcesBuildPhase section */ 143 | 2E64FCA4206DF49400453F17 /* Resources */ = { 144 | isa = PBXResourcesBuildPhase; 145 | buildActionMask = 2147483647; 146 | files = ( 147 | 2E64FCB6206DF49400453F17 /* LaunchScreen.storyboard in Resources */, 148 | 2E64FCB3206DF49400453F17 /* Assets.xcassets in Resources */, 149 | 2E64FCB1206DF49400453F17 /* Main.storyboard in Resources */, 150 | ); 151 | runOnlyForDeploymentPostprocessing = 0; 152 | }; 153 | /* End PBXResourcesBuildPhase section */ 154 | 155 | /* Begin PBXSourcesBuildPhase section */ 156 | 2E64FCA2206DF49400453F17 /* Sources */ = { 157 | isa = PBXSourcesBuildPhase; 158 | buildActionMask = 2147483647; 159 | files = ( 160 | 2E2BE0F9208EC04A0049AD4E /* CustomObj.m in Sources */, 161 | 2E64FCAE206DF49400453F17 /* ViewController.m in Sources */, 162 | 2E64FCB9206DF49400453F17 /* main.m in Sources */, 163 | 2E64FCAB206DF49400453F17 /* AppDelegate.m in Sources */, 164 | ); 165 | runOnlyForDeploymentPostprocessing = 0; 166 | }; 167 | /* End PBXSourcesBuildPhase section */ 168 | 169 | /* Begin PBXVariantGroup section */ 170 | 2E64FCAF206DF49400453F17 /* Main.storyboard */ = { 171 | isa = PBXVariantGroup; 172 | children = ( 173 | 2E64FCB0206DF49400453F17 /* Base */, 174 | ); 175 | name = Main.storyboard; 176 | sourceTree = ""; 177 | }; 178 | 2E64FCB4206DF49400453F17 /* LaunchScreen.storyboard */ = { 179 | isa = PBXVariantGroup; 180 | children = ( 181 | 2E64FCB5206DF49400453F17 /* Base */, 182 | ); 183 | name = LaunchScreen.storyboard; 184 | sourceTree = ""; 185 | }; 186 | /* End PBXVariantGroup section */ 187 | 188 | /* Begin XCBuildConfiguration section */ 189 | 2E64FCBA206DF49400453F17 /* Debug */ = { 190 | isa = XCBuildConfiguration; 191 | buildSettings = { 192 | ALWAYS_SEARCH_USER_PATHS = NO; 193 | CLANG_ANALYZER_NONNULL = YES; 194 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 195 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; 196 | CLANG_CXX_LIBRARY = "libc++"; 197 | CLANG_ENABLE_MODULES = YES; 198 | CLANG_ENABLE_OBJC_ARC = YES; 199 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 200 | CLANG_WARN_BOOL_CONVERSION = YES; 201 | CLANG_WARN_COMMA = YES; 202 | CLANG_WARN_CONSTANT_CONVERSION = YES; 203 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 204 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 205 | CLANG_WARN_EMPTY_BODY = YES; 206 | CLANG_WARN_ENUM_CONVERSION = YES; 207 | CLANG_WARN_INFINITE_RECURSION = YES; 208 | CLANG_WARN_INT_CONVERSION = YES; 209 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 210 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 211 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 212 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 213 | CLANG_WARN_STRICT_PROTOTYPES = YES; 214 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 215 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 216 | CLANG_WARN_UNREACHABLE_CODE = YES; 217 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 218 | CODE_SIGN_IDENTITY = "iPhone Developer"; 219 | COPY_PHASE_STRIP = NO; 220 | DEBUG_INFORMATION_FORMAT = dwarf; 221 | ENABLE_STRICT_OBJC_MSGSEND = YES; 222 | ENABLE_TESTABILITY = YES; 223 | GCC_C_LANGUAGE_STANDARD = gnu11; 224 | GCC_DYNAMIC_NO_PIC = NO; 225 | GCC_NO_COMMON_BLOCKS = YES; 226 | GCC_OPTIMIZATION_LEVEL = 0; 227 | GCC_PREPROCESSOR_DEFINITIONS = ( 228 | "DEBUG=1", 229 | "$(inherited)", 230 | ); 231 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 232 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 233 | GCC_WARN_UNDECLARED_SELECTOR = YES; 234 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 235 | GCC_WARN_UNUSED_FUNCTION = YES; 236 | GCC_WARN_UNUSED_VARIABLE = YES; 237 | IPHONEOS_DEPLOYMENT_TARGET = 11.2; 238 | MTL_ENABLE_DEBUG_INFO = YES; 239 | ONLY_ACTIVE_ARCH = YES; 240 | SDKROOT = iphoneos; 241 | }; 242 | name = Debug; 243 | }; 244 | 2E64FCBB206DF49400453F17 /* Release */ = { 245 | isa = XCBuildConfiguration; 246 | buildSettings = { 247 | ALWAYS_SEARCH_USER_PATHS = NO; 248 | CLANG_ANALYZER_NONNULL = YES; 249 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 250 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; 251 | CLANG_CXX_LIBRARY = "libc++"; 252 | CLANG_ENABLE_MODULES = YES; 253 | CLANG_ENABLE_OBJC_ARC = YES; 254 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 255 | CLANG_WARN_BOOL_CONVERSION = YES; 256 | CLANG_WARN_COMMA = YES; 257 | CLANG_WARN_CONSTANT_CONVERSION = YES; 258 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 259 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 260 | CLANG_WARN_EMPTY_BODY = YES; 261 | CLANG_WARN_ENUM_CONVERSION = YES; 262 | CLANG_WARN_INFINITE_RECURSION = YES; 263 | CLANG_WARN_INT_CONVERSION = YES; 264 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 265 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 266 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 267 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 268 | CLANG_WARN_STRICT_PROTOTYPES = YES; 269 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 270 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 271 | CLANG_WARN_UNREACHABLE_CODE = YES; 272 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 273 | CODE_SIGN_IDENTITY = "iPhone Developer"; 274 | COPY_PHASE_STRIP = NO; 275 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 276 | ENABLE_NS_ASSERTIONS = NO; 277 | ENABLE_STRICT_OBJC_MSGSEND = YES; 278 | GCC_C_LANGUAGE_STANDARD = gnu11; 279 | GCC_NO_COMMON_BLOCKS = YES; 280 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 281 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 282 | GCC_WARN_UNDECLARED_SELECTOR = YES; 283 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 284 | GCC_WARN_UNUSED_FUNCTION = YES; 285 | GCC_WARN_UNUSED_VARIABLE = YES; 286 | IPHONEOS_DEPLOYMENT_TARGET = 11.2; 287 | MTL_ENABLE_DEBUG_INFO = NO; 288 | SDKROOT = iphoneos; 289 | VALIDATE_PRODUCT = YES; 290 | }; 291 | name = Release; 292 | }; 293 | 2E64FCBD206DF49400453F17 /* Debug */ = { 294 | isa = XCBuildConfiguration; 295 | buildSettings = { 296 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 297 | CODE_SIGN_STYLE = Manual; 298 | DEVELOPMENT_TEAM = ""; 299 | INFOPLIST_FILE = BaseOC/Info.plist; 300 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 301 | PRODUCT_BUNDLE_IDENTIFIER = com.skyming.BaseOC; 302 | PRODUCT_NAME = "$(TARGET_NAME)"; 303 | PROVISIONING_PROFILE_SPECIFIER = ""; 304 | TARGETED_DEVICE_FAMILY = "1,2"; 305 | }; 306 | name = Debug; 307 | }; 308 | 2E64FCBE206DF49400453F17 /* Release */ = { 309 | isa = XCBuildConfiguration; 310 | buildSettings = { 311 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 312 | CODE_SIGN_STYLE = Manual; 313 | DEVELOPMENT_TEAM = ""; 314 | INFOPLIST_FILE = BaseOC/Info.plist; 315 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 316 | PRODUCT_BUNDLE_IDENTIFIER = com.skyming.BaseOC; 317 | PRODUCT_NAME = "$(TARGET_NAME)"; 318 | PROVISIONING_PROFILE_SPECIFIER = ""; 319 | TARGETED_DEVICE_FAMILY = "1,2"; 320 | }; 321 | name = Release; 322 | }; 323 | /* End XCBuildConfiguration section */ 324 | 325 | /* Begin XCConfigurationList section */ 326 | 2E64FCA1206DF49400453F17 /* Build configuration list for PBXProject "BaseOC" */ = { 327 | isa = XCConfigurationList; 328 | buildConfigurations = ( 329 | 2E64FCBA206DF49400453F17 /* Debug */, 330 | 2E64FCBB206DF49400453F17 /* Release */, 331 | ); 332 | defaultConfigurationIsVisible = 0; 333 | defaultConfigurationName = Release; 334 | }; 335 | 2E64FCBC206DF49400453F17 /* Build configuration list for PBXNativeTarget "BaseOC" */ = { 336 | isa = XCConfigurationList; 337 | buildConfigurations = ( 338 | 2E64FCBD206DF49400453F17 /* Debug */, 339 | 2E64FCBE206DF49400453F17 /* Release */, 340 | ); 341 | defaultConfigurationIsVisible = 0; 342 | defaultConfigurationName = Release; 343 | }; 344 | /* End XCConfigurationList section */ 345 | }; 346 | rootObject = 2E64FC9E206DF49400453F17 /* Project object */; 347 | } 348 | -------------------------------------------------------------------------------- /01-Demo/BaseOC/BaseOC.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /01-Demo/BaseOC/BaseOC.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /01-Demo/BaseOC/BaseOC.xcodeproj/project.xcworkspace/xcuserdata/skyming.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyming/Study/e60ac6016b84f6c35c2241139ba3ac66a15088ab/01-Demo/BaseOC/BaseOC.xcodeproj/project.xcworkspace/xcuserdata/skyming.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /01-Demo/BaseOC/BaseOC.xcodeproj/xcuserdata/skyming.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /01-Demo/BaseOC/BaseOC.xcodeproj/xcuserdata/skyming.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | BaseOC.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /01-Demo/BaseOC/BaseOC/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // BaseOC 4 | // 5 | // Created by skyming on 2018/3/30. 6 | // Copyright © 2018年 skyming. 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 | -------------------------------------------------------------------------------- /01-Demo/BaseOC/BaseOC/AppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.m 3 | // BaseOC 4 | // 5 | // Created by skyming on 2018/3/30. 6 | // Copyright © 2018年 skyming. All rights reserved. 7 | // 8 | 9 | #import "AppDelegate.h" 10 | #import 11 | #import 12 | 13 | @interface Person : NSObject 14 | { 15 | NSString *name; 16 | } 17 | -(void)setName:(NSString*)n; 18 | 19 | @end 20 | 21 | @implementation Person 22 | -(void)setName:(NSString *)n 23 | { 24 | name = n; 25 | } 26 | @end 27 | 28 | @interface Teacher : Person 29 | 30 | -(void)teach; 31 | 32 | @end 33 | @implementation Teacher 34 | -(void)teach 35 | { 36 | NSLog(@"我教数学"); 37 | } 38 | @end 39 | 40 | @interface AppDelegate () 41 | 42 | @end 43 | 44 | @implementation AppDelegate 45 | 46 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 47 | 48 | // 注意,底层实现,类对象调用先取 object_getClass (取类的metaClass),实例调用取 isa 指针。 49 | // 普通对象 50 | // [self nomalObjTest]; 51 | 52 | // 类对象 53 | // [self nomalCalssTest]; 54 | 55 | // 字符串测试 56 | [self stringTest]; 57 | 58 | // 数组测试 59 | 60 | return YES; 61 | } 62 | 63 | - (void)arrayTest { 64 | id obj1 = [NSArray alloc]; 65 | id obj2 = [NSMutableArray alloc]; 66 | id obj3 = [obj1 init]; 67 | id obj4 = [obj2 init]; 68 | NSLog(@"%@",NSStringFromClass([obj1 class])); 69 | NSLog(@"%@",NSStringFromClass([obj2 class])); 70 | NSLog(@"%@",NSStringFromClass([obj3 class])); 71 | NSLog(@"%@",NSStringFromClass([obj4 class])); 72 | /* 73 | 结果: 74 | 2016-01-13 20:58:29.455 1fundation框架[2570:230724] __NSPlaceholderArray 75 | 2016-01-13 20:58:29.456 1fundation框架[2570:230724] __NSPlaceholderArray 76 | 2016-01-13 20:58:29.457 1fundation框架[2570:230724] __NSArray0 77 | 2016-01-13 20:58:29.457 1fundation框架[2570:230724] __NSArrayM 78 | */ 79 | } 80 | 81 | - (void)stringTest { 82 | NSString *string0 = @"hello"; 83 | NSString *string1 = @"helloworld"; 84 | NSString *string2 = [[NSString alloc] initWithFormat:@":%@", @"helloworld"]; 85 | NSString *string3 = [NSHomeDirectory() stringByAppendingPathComponent:string1]; 86 | NSTextStorage *storage = [[NSTextStorage alloc] initWithString:string1]; 87 | NSString *string4 = [storage string]; 88 | 89 | NSLog(@"%@", [[string0 class] description]); 90 | NSLog(@"%@", [[string1 class] description]); 91 | NSLog(@"%@", [[string2 class] description]); 92 | NSLog(@"%@", [[string3 class] description]); 93 | NSLog(@"%@", [[string4 class] description]); 94 | 95 | if ([string0 isMemberOfClass:[NSString class]]) { 96 | NSLog(@"isMemberOfClass yes"); 97 | } 98 | 99 | if ([string0 isKindOfClass:[NSString class]]) { 100 | NSLog(@"isKindOfClass yes"); 101 | } 102 | /* 103 | 2018-04-10 01:12:04.616592+0800 BaseOC[25581:4839165] __NSCFConstantString 104 | 2018-04-10 01:12:04.616744+0800 BaseOC[25581:4839165] __NSCFConstantString 105 | 2018-04-10 01:12:04.616840+0800 BaseOC[25581:4839165] __NSCFString 106 | 2018-04-10 01:12:04.616945+0800 BaseOC[25581:4839165] NSPathStore2 107 | 2018-04-10 01:12:04.617053+0800 BaseOC[25581:4839165] NSBigMutableString 108 | 2018-04-10 01:12:04.617157+0800 BaseOC[25581:4839165] isKindOfClass yes 109 | */ 110 | } 111 | 112 | // 普通对象测试 113 | - (void)nomalObjTest { 114 | 115 | Person *person = [[Person alloc] init]; 116 | Teacher *teacher = [[Teacher alloc] init]; 117 | 118 | //YES 119 | if ([teacher isMemberOfClass:[Teacher class]]) { 120 | NSLog(@"teacher Teacher类的成员"); 121 | } 122 | //NO 123 | if ([teacher isMemberOfClass:[Person class]]) { 124 | NSLog(@"teacher Person类的成员"); 125 | } 126 | //NO 127 | if ([teacher isMemberOfClass:[NSObject class]]) { 128 | NSLog(@"teacher NSObject类的成员"); 129 | } 130 | 131 | 132 | 133 | //YES 134 | if ([teacher isKindOfClass:[Teacher class]]) { 135 | NSLog(@"teacher 是 Teacher类或Teacher的子类"); 136 | } 137 | //YES 138 | if ([teacher isKindOfClass:[Person class]]) { 139 | NSLog(@"teacher 是 Person类或Person的子类"); 140 | } 141 | //YES 142 | if ([teacher isKindOfClass:[NSObject class]]) { 143 | NSLog(@"teacher 是 NSObject类或NSObject的子类"); 144 | } 145 | 146 | 147 | 148 | //NO 149 | if ([person isKindOfClass:[Teacher class]]) { 150 | NSLog(@"person 是 Teacher类或Teacher的子类"); 151 | } 152 | //YES 153 | if ([person isKindOfClass:[Person class]]) { 154 | NSLog(@"person 是 Person类或Person的子类"); 155 | } 156 | //YES 157 | if ([person isKindOfClass:[NSObject class]]) { 158 | NSLog(@"person 是 NSObject类或NSObject的子类"); 159 | } 160 | 161 | } 162 | 163 | // 普通类测试 164 | - (void)nomalCalssTest { 165 | 166 | Class r0 = [object_getClass([Teacher class]) superclass]; 167 | Class r1 = object_getClass([Person class]); 168 | NSLog(@"Teacher metaClass 父类 == Person metaClass %d",r0 == r1); 169 | 170 | Class x0 = object_getClass(object_getClass([Teacher class])); 171 | Class x1 = object_getClass(object_getClass([Person class])); 172 | NSLog(@"Teacher metaClass 父类 == Person metaClass 父类 %d",x0 == x1); 173 | 174 | //NO 175 | if ([[Teacher class] isMemberOfClass:[Teacher class]]) { 176 | NSLog(@"Teacher类 Teacher类的成员"); 177 | } 178 | //NO 179 | if ([[Teacher class] isMemberOfClass:[Person class]]) { 180 | NSLog(@"Teacher类 Person类的成员"); 181 | } 182 | //NO 183 | if ([[Teacher class] isMemberOfClass:[NSObject class]]) { 184 | NSLog(@"Teacher类 NSObject类的成员"); 185 | } 186 | //NO 187 | if ([[NSObject class] isMemberOfClass:[NSObject class]]) { 188 | NSLog(@"NSObject类 NSObject类的成员"); 189 | } 190 | 191 | 192 | //NO 193 | if ([[Teacher class] isKindOfClass:[Teacher class]]) { 194 | NSLog(@"Teacher类 是 Teacher类或Teacher的子类"); 195 | } 196 | //NO 197 | if ([[Teacher class] isKindOfClass:[Person class]]) { 198 | NSLog(@"Teacher类 是 Person类或Person的子类"); 199 | } 200 | //YES 201 | if ([[Teacher class] isKindOfClass:[NSObject class]]) { 202 | NSLog(@"Teacher类 是 NSObject类或NSObject的子类"); 203 | } 204 | //YES 205 | if ([[NSObject class] isKindOfClass:[NSObject class]]) { 206 | NSLog(@"NSObject类 是 NSObject类或NSObject的子类"); 207 | } 208 | } 209 | 210 | //逆向反编译得到的源码 211 | + (BOOL) isKindOfClassITX:(Class)class 212 | { 213 | Class r0 = object_getClass(self); 214 | while (1) { 215 | if (r0 == 0) { 216 | return 0; 217 | }else{ 218 | NSLog(@"class->%@:%p",NSStringFromClass(class), class); 219 | NSLog(@"r0->%@:%p",NSStringFromClass(r0), r0); 220 | if (r0 != class) { 221 | r0 = [r0 superclass]; 222 | }else{ 223 | return 1; 224 | } 225 | } 226 | } 227 | } 228 | 229 | 230 | - (void)applicationWillResignActive:(UIApplication *)application { 231 | // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. 232 | // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game. 233 | } 234 | 235 | 236 | - (void)applicationDidEnterBackground:(UIApplication *)application { 237 | // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 238 | // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. 239 | } 240 | 241 | 242 | - (void)applicationWillEnterForeground:(UIApplication *)application { 243 | // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background. 244 | } 245 | 246 | 247 | - (void)applicationDidBecomeActive:(UIApplication *)application { 248 | // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. 249 | } 250 | 251 | 252 | - (void)applicationWillTerminate:(UIApplication *)application { 253 | // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. 254 | } 255 | 256 | 257 | @end 258 | -------------------------------------------------------------------------------- /01-Demo/BaseOC/BaseOC/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "20x20", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "20x20", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "29x29", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "29x29", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "40x40", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "40x40", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "idiom" : "iphone", 35 | "size" : "60x60", 36 | "scale" : "2x" 37 | }, 38 | { 39 | "idiom" : "iphone", 40 | "size" : "60x60", 41 | "scale" : "3x" 42 | }, 43 | { 44 | "idiom" : "ipad", 45 | "size" : "20x20", 46 | "scale" : "1x" 47 | }, 48 | { 49 | "idiom" : "ipad", 50 | "size" : "20x20", 51 | "scale" : "2x" 52 | }, 53 | { 54 | "idiom" : "ipad", 55 | "size" : "29x29", 56 | "scale" : "1x" 57 | }, 58 | { 59 | "idiom" : "ipad", 60 | "size" : "29x29", 61 | "scale" : "2x" 62 | }, 63 | { 64 | "idiom" : "ipad", 65 | "size" : "40x40", 66 | "scale" : "1x" 67 | }, 68 | { 69 | "idiom" : "ipad", 70 | "size" : "40x40", 71 | "scale" : "2x" 72 | }, 73 | { 74 | "idiom" : "ipad", 75 | "size" : "76x76", 76 | "scale" : "1x" 77 | }, 78 | { 79 | "idiom" : "ipad", 80 | "size" : "76x76", 81 | "scale" : "2x" 82 | }, 83 | { 84 | "idiom" : "ipad", 85 | "size" : "83.5x83.5", 86 | "scale" : "2x" 87 | } 88 | ], 89 | "info" : { 90 | "version" : 1, 91 | "author" : "xcode" 92 | } 93 | } -------------------------------------------------------------------------------- /01-Demo/BaseOC/BaseOC/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /01-Demo/BaseOC/BaseOC/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /01-Demo/BaseOC/BaseOC/CustomObj.h: -------------------------------------------------------------------------------- 1 | // 2 | // CustomObj.h 3 | // BaseOC 4 | // 5 | // Created by skyming on 2018/4/24. 6 | // Copyright © 2018年 skyming. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface CustomObj : NSObject{ 12 | long a[200]; 13 | } 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /01-Demo/BaseOC/BaseOC/CustomObj.m: -------------------------------------------------------------------------------- 1 | // 2 | // CustomObj.m 3 | // BaseOC 4 | // 5 | // Created by skyming on 2018/4/24. 6 | // Copyright © 2018年 skyming. All rights reserved. 7 | // 8 | 9 | #import "CustomObj.h" 10 | 11 | @implementation CustomObj 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /01-Demo/BaseOC/BaseOC/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | Fabric 22 | 23 | APIKey 24 | 77255c00a5deefdfc27c2ab144394a2857067a9a 25 | Kits 26 | 27 | 28 | KitInfo 29 | 30 | KitName 31 | Crashlytics 32 | 33 | 34 | 35 | LSRequiresIPhoneOS 36 | 37 | UILaunchStoryboardName 38 | LaunchScreen 39 | UIMainStoryboardFile 40 | Main 41 | UIRequiredDeviceCapabilities 42 | 43 | armv7 44 | 45 | UISupportedInterfaceOrientations 46 | 47 | UIInterfaceOrientationPortrait 48 | UIInterfaceOrientationLandscapeLeft 49 | UIInterfaceOrientationLandscapeRight 50 | 51 | UISupportedInterfaceOrientations~ipad 52 | 53 | UIInterfaceOrientationPortrait 54 | UIInterfaceOrientationPortraitUpsideDown 55 | UIInterfaceOrientationLandscapeLeft 56 | UIInterfaceOrientationLandscapeRight 57 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /01-Demo/BaseOC/BaseOC/ViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.h 3 | // BaseOC 4 | // 5 | // Created by skyming on 2018/3/30. 6 | // Copyright © 2018年 skyming. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ViewController : UIViewController 12 | 13 | 14 | @end 15 | 16 | -------------------------------------------------------------------------------- /01-Demo/BaseOC/BaseOC/ViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.m 3 | // BaseOC 4 | // 5 | // Created by skyming on 2018/3/30. 6 | // Copyright © 2018年 skyming. 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)didReceiveMemoryWarning { 24 | [super didReceiveMemoryWarning]; 25 | // Dispose of any resources that can be recreated. 26 | } 27 | 28 | 29 | @end 30 | -------------------------------------------------------------------------------- /01-Demo/BaseOC/BaseOC/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // BaseOC 4 | // 5 | // Created by skyming on 2018/3/30. 6 | // Copyright © 2018年 skyming. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "AppDelegate.h" 11 | #import "CustomObj.h" 12 | 13 | void vmTest() { 14 | NSMutableSet *objs = [NSMutableSet new]; 15 | @autoreleasepool { 16 | for (int i = 0; i < 1000; ++i) { 17 | CustomObj *obj = [CustomObj new]; 18 | [objs addObject:obj]; 19 | } 20 | sleep(100000); 21 | } 22 | } 23 | 24 | int main(int argc, char * argv[]) { 25 | // vmTest(); 26 | @autoreleasepool { 27 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 28 | } 29 | } 30 | 31 | 32 | -------------------------------------------------------------------------------- /02-Data/iOS-AudiovisualTypes.text: -------------------------------------------------------------------------------- 1 | AVURLAsset audiovisualTypes: 2 | 3 | <__NSArrayI 0x11be049e0>( 4 | public.pls-playlist, 5 | dyn.ah62d46dzqm0gw23sqf40k4pts3y1g7pbru00g55ssvw067b4gq80c7perf1w85puqzx1n6xq, 6 | public.aifc-audio, 7 | com.apple.mpeg-4-ringtone, 8 | dyn.ah62d46dzqm0gw23ssb0gc8pqrf31ksvxhzu1n3dmr61046dfq63u, 9 | dyn.ah62d46dzqm0gw23sqf40k4pts3y1g7pbru00g55ssvw067b4gq80c7perf1w865dsb0hg, 10 | com.microsoft.waveform-audio, 11 | dyn.ah62d46dzqm0gw23ssb0gc8pqrf31ksvxhzu1n3dmr611upprsbw0s, 12 | public.3gpp, 13 | public.3gpp2, 14 | dyn.ah62d46dzqm0gw23ssb0gc8pqrf31ksvxhzu1n3dmr611g25urv3u, 15 | dyn.ah62d46dzqm0gw23ssb0gc8pqrf31ksvxhzu1n3dmr611upprsbw0sq2, 16 | dyn.ah62d46dzqm0gw23sqf40k4pts3y1g7pbru00g55ssvw067b4gq80c6durvy0g2pyrf106p52fz01a3phsz3g2, 17 | dyn.ah62d46dzqm0gw23sqf40k4pts3y1g7pbru00g55ssvw067b4gq80c7perf1w88brs7u1q, 18 | public.avi, 19 | dyn.ah62d46dzqm0gw23sqf40k4pts3y1g7pbru00g55ssvw067b4ge804qxb, 20 | dyn.ah62d46dzqm0gw23ssb0gc8pqrf31ksvxhzu1n3dmr610c2pd, 21 | com.apple.itunes.audible, 22 | dyn.ah62d46dzqm0gw23sqf40k4pts3y1g7pbru00g55ssvw067b4gq80c6durvy0g2pyrf106p50r3wc62pusb0gnpxrsbw0s7pwru, 23 | public.aac-audio, 24 | dyn.ah62d46dzqm0gw23sqf40k4pts3y1g7pbru00g55ssvw067b4ge8046db, 25 | dyn.ah62d46dzqm0gw23sqf40k4pts3y1g7pbru00g55ssvw067b4gq80c6durvy0g2pyrf106p5rsa4a, 26 | dyn.ah62d46dzqm0gw23ssb0gc8pqrf31ksvxhzu1n3dmr61046dh, 27 | dyn.ah62d46dzqm0gw23ssb0gc8pqrf31ksvxhzu1n3dmr610c2pdsa, 28 | dyn.ah62d46dzqm0gw23ssb0gc8pqrf31ksvxhzu1n3dmr611upprsbxu, 29 | dyn.ah62d46dzqm0gw23sqf40k4pts3y1g7pbru00g55ssvw067b4gq80c7perf1w88brqru0q, 30 | public.m3u-playlist, 31 | com.apple.quicktime-movie, 32 | public.aiff-audio, 33 | dyn.ah62d46dzqm0gw23ssb0gc8pqrf31ksvxhzu1n3dmr611upprsa3u, 34 | com.apple.m4v-video, 35 | dyn.ah62d46dzqm0gw23ssb0gc8pqrf31ksvxhzu1n3dmr61046bx, 36 | dyn.ah62d46dzqm0gw23sqf40k4pts3y1g7pbru00g55ssvw067b4gq80c7perf1w88brrz2gn35zsm0a, 37 | org.3gpp.adaptive-multi-rate-audio, 38 | com.apple.coreaudio-format, 39 | com.apple.m4a-audio, 40 | public.mpeg-4-audio, 41 | dyn.ah62d46dzqm0gw23sqf40k4pts3y1g7pbru00g55ssvw067b4ge8046bv, 42 | dyn.ah62d46dzqm0gw23sqf40k4pts3y1g7pbru00g55ssvw067b4gq80c7perf1w82pbqr2a, 43 | dyn.ah62d46dzqm0gw23sqf40k4pts3y1g7pbru00g55ssvw067b4ge804qpb, 44 | public.mpeg-4, 45 | public.mp2, 46 | public.mp3, 47 | public.au-audio, 48 | public.enhanced-ac3-audio, 49 | dyn.ah62d46dzqm0gw23sqf40k4pts3y1g7pbru00g55ssvw067b4gq80c7perf1w88brsrv1a5dx, 50 | dyn.ah62d46dzqm0gw23ssb0gc8pqrf31ksvxhzu1a6dqrfv0c7dmr71c88brrz2gn35zsm0a, 51 | dyn.ah62d46dzqm0gw23sqf40k4pts3y1g7pbru00g55ssvw067b4ge81s3pcs34hk, 52 | dyn.ah62d46dzqm0gw23sqf40k4pts3y1g7pbru00g55ssvw067b4gq80c7perf1w88brry4ha, 53 | dyn.ah62d46dzqm0gw23ssb0gc8pqrf31ksvxhzu1n3dmr61046dfq6, 54 | dyn.ah62d46dzqm0gw23sqf40k4pts3y1g7pbru00g55ssvw067b4ge81q7dy, 55 | public.ac3-audio, 56 | com.apple.protected-mpeg-4-audio, 57 | dyn.ah62d46dzqm0gw23sqf40k4pts3y1g7pbru00g55ssvw067b4gq80c7perf1w88brry4ge, 58 | dyn.ah62d46dzqm0gw23sqf40k4pts3y1g7pbru00g55ssvw067b4gq81k3p2su11q7dy, 59 | dyn.ah62d46dzqm0gw23sqf40k4pts3y1g7pbru00g55ssvw067b4ge8046p0 60 | ) 61 | 62 | [AVURLAsset audiovisualMIMETypes]: 63 | <__NSArrayI 0x11be0b460>( 64 | audio/aacp, 65 | video/3gpp2, 66 | audio/mpeg3, 67 | audio/mp3, 68 | audio/x-caf, 69 | audio/mpeg, 70 | video/quicktime, 71 | audio/x-mpeg3, 72 | video/mp4, 73 | audio/wav, 74 | video/avi, 75 | audio/scpls, 76 | audio/mp4, 77 | audio/x-mpg, 78 | video/x-m4v, 79 | audio/x-wav, 80 | audio/x-aiff, 81 | application/vnd.apple.mpegurl, 82 | video/3gpp, 83 | text/vtt, 84 | audio/x-mpeg, 85 | audio/wave, 86 | audio/x-m4r, 87 | audio/x-mp3, 88 | audio/AMR, 89 | audio/aiff, 90 | audio/3gpp2, 91 | audio/aac, 92 | audio/mpg, 93 | audio/mpegurl, 94 | audio/x-m4b, 95 | application/mp4, 96 | audio/x-m4p, 97 | audio/x-scpls, 98 | audio/x-mpegurl, 99 | audio/x-aac, 100 | audio/3gpp, 101 | audio/basic, 102 | audio/x-m4a, 103 | application/x-mpegurl 104 | ) 105 | -------------------------------------------------------------------------------- /02-Data/iPhone6-networkInterface.text: -------------------------------------------------------------------------------- 1 | 3G+开启热点 2 | 2017-12-21 13:16:01.166637+0800 MyCall[11539:4254170] ifaName = lo0 3 | 2017-12-21 13:16:01.292643+0800 MyCall[11539:4254170] ifaName=lo0 address=127.0.0.1 mask=255.0.0.0 gateway=127.0.0.1 4 | 2017-12-21 13:16:01.292728+0800 MyCall[11539:4254170] ifaName = lo0 5 | 2017-12-21 13:16:01.292879+0800 MyCall[11539:4254170] ifaName = lo0 6 | 2017-12-21 13:16:01.292922+0800 MyCall[11539:4254170] ifaName = lo0 7 | 2017-12-21 13:16:01.292964+0800 MyCall[11539:4254170] ifaName = EHC4 8 | 2017-12-21 13:16:01.293005+0800 MyCall[11539:4254170] ifaName = pdp_ip0 9 | 2017-12-21 13:16:01.293062+0800 MyCall[11539:4254170] ifaName=pdp_ip0 address=10.18.97.205 mask=255.255.255.255 gateway=10.18.97.205 10 | 2017-12-21 13:16:01.293109+0800 MyCall[11539:4254170] ifaName = pdp_ip0 11 | 2017-12-21 13:16:01.293149+0800 MyCall[11539:4254170] ifaName = pdp_ip1 12 | 2017-12-21 13:16:01.293189+0800 MyCall[11539:4254170] ifaName = pdp_ip2 13 | 2017-12-21 13:16:01.293229+0800 MyCall[11539:4254170] ifaName = pdp_ip3 14 | 2017-12-21 13:16:01.293269+0800 MyCall[11539:4254170] ifaName = pdp_ip4 15 | 2017-12-21 13:16:01.362978+0800 MyCall[11539:4254170] ifaName = ap1 16 | 2017-12-21 13:16:01.363049+0800 MyCall[11539:4254170] ifaName = en0 17 | 2017-12-21 13:16:01.363095+0800 MyCall[11539:4254170] ifaName = awdl0 18 | 2017-12-21 13:16:01.363137+0800 MyCall[11539:4254170] ifaName = awdl0 19 | 2017-12-21 13:16:01.363178+0800 MyCall[11539:4254170] ifaName = en1 20 | 2017-12-21 13:16:01.363220+0800 MyCall[11539:4254170] ifaName = en1 21 | 2017-12-21 13:16:01.363260+0800 MyCall[11539:4254170] ifaName = en2 22 | 2017-12-21 13:16:01.363300+0800 MyCall[11539:4254170] ifaName = ipsec0 23 | 2017-12-21 13:16:01.363340+0800 MyCall[11539:4254170] ifaName = utun0 24 | 2017-12-21 13:16:01.363380+0800 MyCall[11539:4254170] ifaName = utun0 25 | 26 | WiFi 27 | 2017-12-21 13:18:55.910642+0800 MyCall[11546:4255943] ifaName = lo0 28 | 2017-12-21 13:18:55.911590+0800 MyCall[11546:4255943] ifaName=lo0 address=127.0.0.1 mask=255.0.0.0 gateway=127.0.0.1 29 | 2017-12-21 13:18:55.911666+0800 MyCall[11546:4255943] ifaName = lo0 30 | 2017-12-21 13:18:55.911710+0800 MyCall[11546:4255943] ifaName = lo0 31 | 2017-12-21 13:18:55.911753+0800 MyCall[11546:4255943] ifaName = lo0 32 | 2017-12-21 13:18:55.911795+0800 MyCall[11546:4255943] ifaName = EHC4 33 | 2017-12-21 13:18:55.911836+0800 MyCall[11546:4255943] ifaName = pdp_ip0 34 | 2017-12-21 13:18:55.911891+0800 MyCall[11546:4255943] ifaName=pdp_ip0 address=10.51.218.33 mask=255.255.255.255 gateway=10.51.218.33 35 | 2017-12-21 13:18:55.911937+0800 MyCall[11546:4255943] ifaName = pdp_ip0 36 | 2017-12-21 13:18:55.911977+0800 MyCall[11546:4255943] ifaName = pdp_ip1 37 | 2017-12-21 13:18:55.912017+0800 MyCall[11546:4255943] ifaName = pdp_ip2 38 | 2017-12-21 13:18:55.912058+0800 MyCall[11546:4255943] ifaName = pdp_ip3 39 | 2017-12-21 13:18:55.912098+0800 MyCall[11546:4255943] ifaName = pdp_ip4 40 | 2017-12-21 13:18:55.914545+0800 MyCall[11546:4255943] ifaName = ap1 41 | 2017-12-21 13:18:55.914874+0800 MyCall[11546:4255943] ifaName = en0 42 | 2017-12-21 13:18:55.914945+0800 MyCall[11546:4255943] ifaName = en0 43 | 2017-12-21 13:18:55.915215+0800 MyCall[11546:4255943] ifaName=en0 address=10.252.138.248 mask=255.255.255.0 gateway=10.252.138.255 44 | 2017-12-21 13:18:55.915292+0800 MyCall[11546:4255943] ifaName = en0 45 | 2017-12-21 13:18:55.915334+0800 MyCall[11546:4255943] ifaName = awdl0 46 | 2017-12-21 13:18:55.915376+0800 MyCall[11546:4255943] ifaName = awdl0 47 | 2017-12-21 13:18:55.915416+0800 MyCall[11546:4255943] ifaName = en1 48 | 2017-12-21 13:18:55.915455+0800 MyCall[11546:4255943] ifaName = en1 49 | 2017-12-21 13:18:55.915495+0800 MyCall[11546:4255943] ifaName = en2 50 | 2017-12-21 13:18:55.915535+0800 MyCall[11546:4255943] ifaName = en2 51 | 2017-12-21 13:18:55.915643+0800 MyCall[11546:4255943] ifaName = ipsec0 52 | 2017-12-21 13:18:55.915749+0800 MyCall[11546:4255943] ifaName = utun0 53 | 2017-12-21 13:18:55.915792+0800 MyCall[11546:4255943] ifaName = utun0 54 | 55 | WIFI+4G 56 | Printing description of addresses: 57 | { 58 | "awdl0/ipv6" = "0:0:fe80::8c7b:1dff"; 59 | "en0/ipv4" = "10.252.138.249"; 60 | "en0/ipv6" = "0:0:fe80::837:6771"; 61 | "ipsec0/ipv6" = "::2408:8509:3080:8ac2:c63:fc08"; 62 | "ipsec1/ipv6" = "::2408:8509:3080:8ac2:c63:fc08"; 63 | "llw0/ipv6" = "0:0:fe80::8c7b:1dff"; 64 | "pdp_ip0/ipv4" = "10.113.51.145"; 65 | "pdp_ip1/ipv6" = "::2408:8509:3080:8ac2:c4a7:4371"; 66 | "utun0/ipv6" = "0:0:fe80::3006:f69e"; 67 | "utun1/ipv6" = "0:0:fe80::7d76:9dd9"; 68 | "utun2/ipv6" = "0:0:fe80::ce81:b1c"; 69 | "utun3/ipv6" = "0:0:fe80::abc:c821"; 70 | "utun4/ipv6" = "0:0:fe80::aba4:16b"; 71 | "utun5/ipv6" = "0:0:fe80::469c:77b1"; 72 | } 73 | 74 | * [ios下获取所有实体/虚拟网卡的信息,并以此判断设备所处的网络状态](https://my.oschina.net/u/211651/blog/169439) 75 | -------------------------------------------------------------------------------- /03-Image/AudioVisualFramework.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyming/Study/e60ac6016b84f6c35c2241139ba3ac66a15088ab/03-Image/AudioVisualFramework.png -------------------------------------------------------------------------------- /03-Image/屏幕快照 2017-10-30 下午3.54.14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyming/Study/e60ac6016b84f6c35c2241139ba3ac66a15088ab/03-Image/屏幕快照 2017-10-30 下午3.54.14.png -------------------------------------------------------------------------------- /0x01-语言基础.MD: -------------------------------------------------------------------------------- 1 | 2 | #### ObjC 基础 3 | ##### 为什么说OC是动态语言? 4 | * [阿里云 - 为什么说Objective-C 是一门动态的语言 ](https://www.aliyun.com/jiaocheng/354015.html) 5 | > 整体上说明动态性 6 | 7 | * [为什么说 Objective-C 是一种动态语言?](https://blog.csdn.net/huangfei711/article/details/78262860) 8 | > 从三个方面说明 9 | 10 | * [Objective-C是动态语言吗?为什么?](https://www.zhihu.com/question/19970471) 11 | > 从C++底层对动态性做些说明 12 | 13 | ##### 动态类型 14 | * [逆向分析isKindOfClass 内部实](https://blog.csdn.net/ChSaDiN/article/details/51672087) 15 | > 注意,类对象调用先取 object_getClass (取类的metaClass),实例调用取 isa 指针。 16 | 17 | * [ObjC语法之动态类型 - isKindOfClass, isMemberOfClass](https://blog.csdn.net/totogo2010/article/details/7714960) 18 | > 注意,[测试数据项目](https://github.com/skyming/Study/tree/master/01-Demo/BaseOC) 19 | 20 | 21 | * [Design Patterns in iOS — Class Clusters](http://www.cocoachina.com/industry/20140530/8622.html) 22 | > 注意,对字符串的分析 23 | 24 | * [NSOederdSet](http://nshipster.cn/nsorderedset/) 25 | > 思考多继承及类簇关系 26 | 27 | ##### 动态加载 28 | * [iOS 组件化开发:加载资源](https://juejin.im/post/5ac6eb496fb9a028bb193b4a?utm_source=gold_browser_extension) 29 | > 注意动态加载图片、xib 区别、NSBundle 类相关方法 30 | 31 | * [iOS 运行时:动态方法解决方案](http://michael1984w.blog.sohu.com/322918224.html) 32 | > 注意动态加载理解 33 | 34 | * [iOS编程基础-OC(七)-运行时系统(续)](https://blog.csdn.net/baby_hua/article/details/78723482) 35 | > 关注延迟加载、bundle 加载机制 36 | 37 | * [第九章 专家级技巧:使用运行时系统API](https://blog.csdn.net/baby_hua/article/details/78833425) 38 | > 注意,使用可选包扩展正在运行的程序实践 39 | 40 | * [第九章 专家级技巧:使用运行时系统API续](https://blog.csdn.net/baby_hua/article/details/78862262) 41 | > 注意,动态创建类、方法、属性,动态代理、AOP 42 | 43 | 44 | #### 加载过程 45 | * [iOS 中性能优化之 load 与 initialize](https://www.ctolib.com/topics-114981.html) 46 | * [你真的了解 load 方法吗](https://zhuanlan.zhihu.com/p/20816991) 47 | * [load方法全程跟踪](http://www.desgard.com/Load/) 48 | * [懒惰的 initialize 方法](https://segmentfault.com/a/1190000005038568) 49 | * [为什么要用 -all_load & -ObjC](https://yq.aliyun.com/articles/47656) 50 | * [dyld 与 load](https://blog.cnbluebox.com/blog/2017/06/20/dyldyu-objc) 51 | 52 | ### Runtime 53 | * [Objc-C Runtime Programming Guide](https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/ObjCRuntimeGuide) 54 | * [runtime官方文档翻译](https://www.jianshu.com/p/158c5d118937) 55 | 备注: 同时关注 《Objecttice-C 2.0运行时系统编程指南》 56 | 57 | * [运行时详解+Demo](https://www.jianshu.com/p/adf0d566c887) 58 | > objc_class、objc_object、objc_category,isa、super 流程图,对象关联 59 | SEL、IMP、Method,消息转发,Method Swizzling 60 | 61 | * [iOS 运行时详解-掘金](https://juejin.im/post/5ac0a6116fb9a028de44d717) 62 | * [Objc- Runtime](http://yulingtianxia.com/blog/2014/11/05/objective-c-runtime) 63 | 64 | * [iOS Runtime应用](https://juejin.im/post/58f833458d6d81005875f872) 65 | * [深入理解 iOS Rumtime机制](https://juejin.im/post/58f830c3a22b9d0065827442) 66 | * [iOS 面试经常问题到的Runtime](https://juejin.im/post/5aec71aef265da0b7a209165) 67 | 68 | * [iOS Runtime 之 Category](https://www.jianshu.com/p/8e6518b1be76) 69 | * [iOS Rumtime 之 Method Swizzling 应用](https://www.jianshu.com/p/f6dad8e1b848) 70 | 71 | * [Runtime 在实际开发中的应用](https://www.jianshu.com/p/851b21870d91) 72 | * [玩转iOS开发:装逼技能Runtime总结篇](https://juejin.im/post/59ee81615188250385370582) 73 | 74 | * [运行时 -Crash防御(一)](https://juejin.im/entry/58989d162f301e00691b6968) 75 | * [运行时 -Crash防御(二)](https://www.jianshu.com/p/f18876bbe2c4) 76 | 77 | 运行时 - AOP 78 | 1. https://www.jianshu.com/p/addd4eac54ed 79 | 2. https://www.jianshu.com/p/97017f88f584 80 | 3. APM 81 | 82 | 运行时 - 数模转换 83 | 1. https://blog.csdn.net/sifenkesi1/article/details/52621906 84 | 2. https://www.jianshu.com/p/1dc46f5ff8af 85 | 运行时 - 热更新 86 | 1. https://github.com/bang590/JSPatch/wiki/JSPatch-%E5%AE%9E%E7%8E%B0%E5%8E%9F%E7%90%86%E8%AF%A6%E8%A7%A3 87 | 2. https://mp.weixin.qq.com/s/x0hpbESSlVyq4haEzqSkcQ 88 | 3. https://mp.weixin.qq.com/s/qovdmuQzMhtjC6DHWI4K1A 89 | 4. https://blog.csdn.net/guojin08/article/details/54310858 90 | 5. https://www.jianshu.com/p/739c5c5160f1 91 | 6. https://github.com/NativeScript/ios-runtime 92 | 93 | 运行时 - 动态执行器 94 | 1. http://satanwoo.github.io/2018/04/01/jsengine/ 95 | 96 | #### 内存相关 97 | 书籍 98 | * [Objc-C 高级编程 — 内存篇](https://www.jianshu.com/p/70aec1c740e7) 99 | * 现代操作系统 - 内存篇 100 | 101 | * [iOS内存管理详解-掘金](https://juejin.im/post/5abe543bf265da23784064dd) 102 | * [iOS开发中的内存分配(堆栈)](https://www.jianshu.com/p/746c747e7e00) 103 | * [Custom Process Stack Size](https://developer.apple.com/library/content/qa/qa1419/_index.html) 104 | * 栈内存如何被编译器维护的](https://blog.csdn.net/radianceblau/article/details/73800305) 105 | * [“理解”iOS内存管理](https://juejin.im/post/584fe4762f301e00573cafc6) 106 | 107 | * [探索iOS内存分配](https://juejin.im/post/5a5e13c45188257327399e19) 108 | * [iOS 内存深入探索 VM Tracker](https://juejin.im/post/5a66ef39f265da3e498032d4) 109 | * [iOS 内存探秘](http://foggry.com/blog/2017/02/13/iosnei-cun-tan-mi) 110 | 111 | * [什么是内存(一):存储器层次结构](http://www.cnblogs.com/yaoxiaowen/p/7805661.html) 112 | * [什么是内存(二):虚拟内存](http://www.cnblogs.com/yaoxiaowen/p/7805964.html) 113 | 114 | * [Alloc、Init 你弄懂 50% 了吗?](http://ios.jobbole.com/86324/) 115 | 116 | 117 | * [一种避免 iOS 内存碎片的方法](https://cloud.tencent.com/developer/article/1006174) 118 | * [碎片化](https://juejin.im/post/59f05b69f265da43333d9bc8) 119 | 120 | * [循环引用](https://www.zhihu.com/question/36358590) 121 | 122 | * [iOS 内存优化总结](https://blog.csdn.net/YCM1101743158/article/details/77508192) 123 | 124 | * [谈谈内存管理与优化(一)](https://www.jianshu.com/p/deab6550553a) 125 | * [谈谈内存管理与优化(二)](https://www.jianshu.com/p/f95b9bfda4a0) 126 | 127 | * [内存管理及优化-QQ浏览器(一)](https://www.imooc.com/video/11075) 128 | * [内存管理及优化-QQ浏览器(一)](https://www.imooc.com/video/11076) 129 | 130 | * [说说iOS与内存管理(上)](http://www.cocoachina.com/ios/20150625/12234.html) 131 | * [说说iOS与内存管理(中)](http://www.cocoachina.com/ios/20150922/13383.html) 132 | * [说说iOS与内存管理(下)](http://www.molotang.com/articles/2073.html) 133 | 134 | * [Target-Action 内存泄露](https://juejin.im/post/5a31406f6fb9a0450c496906) 135 | 136 | * [iOS内存abort(jetsam)原理探究](http://satanwoo.github.io/2017/10/18/abort/) 137 | 138 | * [iOS微信内存监控](https://juejin.im/post/5aa79eeaf265da2392360487) 139 | * [iOS 爆内存问题解决方案-OOMDetector组件](https://juejin.im/post/5a58f1a76fb9a01cab283392) 140 | * [Facebook 的 iOS 内存泄漏碱动自动化实践](https://yq.aliyun.com/articles/68473) 141 | 142 | * [iOS逆向:开启malloc stack 追踪内存来源](https://juejin.im/post/5ab7e227f265da239706d4c3) 143 | 144 | * [iOS内存管理和malloc源码解读](https://www.cnblogs.com/itsApe/p/5170108.html) 145 | 146 | 147 | #### Block 148 | * [Blocks Programming Topics](https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/Blocks/Articles/00_Introduction.html) 149 | * [A Short Practical Guide to Blocks](https://developer.apple.com/library/archive/featuredarticles/Short_Practical_Guide_Blocks/index.html) 150 | * [Objcetive-C高级编程-Block篇](https://pan.baidu.com/s/1p2abIIo4rGFEiHKow9pATA) 151 | * [iOS Block 详解](http://www.imlifengfeng.com/blog/?p=457) 152 | * [iOS中Block的用法及示例](https://juejin.im/post/5add619f6fb9a07ac90cced6) 153 | * [Objc-C 中的Block](http://www.devtalking.com/articles/you-should-know-block/) 154 | * [谈 Objective-C 中 Block的实现 - 唐巧](http://blog.devtang.com/2013/07/28/a-look-inside-blocks/) 155 | * [Block 循环应用终结者](https://www.jianshu.com/p/5a2cfa4848cf) 156 | * [深入研究Block用 weakSelf、strongSelf 解决循环引用-霜神](https://www.jianshu.com/p/701da54bd78c) 157 | * [关于Block捕获self的分析 - Bugly](https://mp.weixin.qq.com/s/yD-AvTDUJnPGSy1K_-LAnw) 158 | 159 | #### 其它 160 | * [KVO 底层原理](https://www.jianshu.com/p/b75f40380536) 161 | * [C语言指针详解](https://blog.csdn.net/ad_ad_ad/article/details/1522145) 162 | -------------------------------------------------------------------------------- /0x02-调试分析.MD: -------------------------------------------------------------------------------- 1 | ### Debug 2 | #### WWDC 相关 3 | * [WWDC 2018 412: 效率爆表的Xcode和LLDB 调试技巧](https://juejin.im/post/5b1cd870e51d4506dc0ac76c) 4 | 5 | #### 断点调试 6 | * [Xcode 的正确打开方式 — Debugging](http://www.cocoachina.com/ios/20150225/11190.html) 7 | * [Xcode 断点调试技巧-工程崩溃问题的追踪方法](https://blog.csdn.net/damon2989/article/details/44171893) 8 | * [Xcode 高级调试技巧](https://blog.csdn.net/fishmai/article/details/50087645) 9 | * [Xcode 高级调试技巧总结](https://blog.csdn.net/yiral/article/details/53019817) 10 | 11 | #### 工具集 12 | * [FLEX](https://github.com/Flipboard/FLEX) 13 | * [PonyDebugger](https://github.com/square/PonyDebugger) 14 | * [LLDBugTool](https://github.com/HDB-Li/LLDebugTool) 15 | * [NetworkEye](https://github.com/coderyi/NetworkEye) 16 | * [XCGLogger](https://github.com/DaveWoodCom/XCGLogger) 17 | * [DebugView](https://github.com/tapthaker/DebugView) 18 | * [DBDebugToolKit](https://github.com/dbukowski/DBDebugToolkit) 19 | * [ViewIntrospector](https://github.com/cbess/ViewIntrospector) 20 | * [iOS-Debug-Hacks](https://github.com/aozhimin/iOS-Debug-Hacks) 21 | * [HttpServerDebug](https://github.com/rob2468/HttpServerDebug) 22 | 23 | #### LLDB 24 | * [LLDB Quick Start Guide](https://developer.apple.com/library/content/documentation/IDEs/Conceptual/gdb_to_lldb_transition_guide) 25 | * [WWDC-2012-415-Debugging with LLDB](https://developer.apple.com/videos/play/wwdc2012/415/) 26 | * [熟练使用 LLDB,让你调试事半功倍](http://ios.jobbole.com/83393/) 27 | * [与调试器共舞-LLDB的华尔兹](https://objccn.io/issue-19-2/) 28 | * [Tip:LLDB 基础](http://www.cocoachina.com/ios/20160421/15988.html) 29 | * [iOS 开发调试-LLDB使用概览](https://www.jianshu.com/p/67f08a4d8cf2) 30 | * [breakpoint、lldb、chisel 的使用](http://www.cocoachina.com/ios/20150803/12805.html) 31 | * [Chisel 介绍](https://www.jianshu.com/p/9cf699369dea) 32 | * [使用 LLDB 调试程序](https://casatwy.com/shi-yong-lldbdiao-shi-cheng-xu.html) 33 | * [LLDBugTool](https://github.com/HDB-Li/LLDebugTool) 34 | 35 | 36 | #### Clang & LLVM 37 | * [LLVM 与 Clang 的概述及关系](https://blog.csdn.net/talentedlas/article/details/51945569) 38 | * [LLVM 与 Clang的一些事儿](https://juejin.im/post/5a30ea0ff265da43094526f9) 39 | * [深入剖析 iOS 编译 Clang/LLVM](https://blog.csdn.net/fishmai/article/details/72759673) 40 | * [点击 Run 之后发生了什么?](https://www.jianshu.com/p/d5cf01424e92) 41 | * [LLVM 中国](https://www.llvm.org.cn/) 42 | 43 | 44 | #### dSYM 45 | * [iOS dSYM 文件结构剖析(上)](https://www.csdn.net/article/2015-08-04/2825369) 46 | * [iOS dSYM 文件结构剖析(下)](https://blog.csdn.net/maximli/article/details/47300171) 47 | * [iOS开发符号表知识总结](https://juejin.im/entry/59dc90d16fb9a04508089cd6) 48 | * [详解没有dSYM文件,如何解析iOS崩溃日志](https://www.cnblogs.com/ciml/p/7422872.html) 49 | * [iOS 通过 dSYM 文件分析 Crash 函数地址定位问题](http://blog.cocoachina.com/article/17414) 50 | * [iOS符号表恢复&逆向支付宝](https://www.cnblogs.com/ciml/p/7422872.html) 51 | 52 | #### 崩溃分析 53 | * [iOS Crash Log 分析(三)](http://blog.csdn.net/xy_26207005/article/details/51321309) 54 | * [iOS Crash总结](https://blog.csdn.net/youshaoduo/article/details/54018046) 55 | * [iOS异常捕获](http://www.iosxxx.com/blog/2015-08-29-iosyi-chang-bu-huo.html) 56 | * [iOS Crash 大解析](https://www.jianshu.com/p/1b804426d212) 57 | * [分析iOS Crash文件:符号化iOS Crash文件的3种方法](http://wufawei.com/2014/03/symbolicating-ios-crash-logs/) 58 | * [How to symbolicate crash log Xcode?](https://stackoverflow.com/questions/25855389/how-to-symbolicate-crash-log-xcode) 59 | * [WWDC 2018:理解崩溃以及崩溃日志](https://juejin.im/post/5b1e833ce51d450686186557) 60 | * [聊聊苹果的Bug - iOS 10 nano_free Crash](https://blog.csdn.net/tencent_bugly/article/details/53583751) 61 | * [Baymax:网易iOS App运行时Crash自动防护实践](https://juejin.im/entry/58989d162f301e00691b6968) 62 | * [iOS监控-启动Crash](http://www.cocoachina.com/cms/wap.php?action=article&id=23365) 63 | -------------------------------------------------------------------------------- /0x03-iOS基础.MD: -------------------------------------------------------------------------------- 1 | 绘制与动画 2 | 官方文档 3 | 4 | iOS绘制框架CoreGraphics 5 | http://www.cocoachina.com/ios/20170809/20187.html 6 | 7 | UIView 绘制渲染机制 8 | https://blog.csdn.net/yangyangzhang1990/article/details/52452707 9 | 10 | 提高iOS界面的渲染性能 11 | https://zhuanlan.zhihu.com/p/22255533 12 | 13 | iOS 事件处理机制与图像渲染过程 14 | https://blog.csdn.net/hopedark/article/details/50174157 15 | 16 | 深入理解 iOS Rendering Process 17 | https://juejin.im/post/5ad3f1cc6fb9a028d9379c5f 18 | 19 | CATrasaction 20 | https://www.jianshu.com/p/c8ffa7ab50d1 21 | 22 | iOS图形渲染解析 23 | https://www.2cto.com/kf/201610/553735.html 24 | 25 | 理解UIView绘制 26 | https://www.2cto.com/kf/201706/648929.html 27 | 28 | UIView绘制与重绘 29 | https://blog.csdn.net/tangyi2794/article/details/12081131 30 | 31 | UIView底层绘制 32 | https://www.jianshu.com/p/dc5442dce3b9 33 | 34 | UIView 渲染与内容管理 35 | https://blog.csdn.net/lsy2013/article/details/37873047 36 | 37 | iOS离屏渲染优化分析 38 | https://www.cnblogs.com/fishbay/p/7576176.html 39 | 40 | iOS UI绘制原理 41 | https://juejin.im/post/5adf0e7af265da0b814b32da 42 | 43 | iOS 动画篇:核心动画 44 | http://www.cocoachina.com/ios/20160517/16290.html 45 | 46 | iOS 动画篇:CAShaperLayer 与 Coreanimation 结合 47 | http://www.cnblogs.com/pretty-guy/p/8268745.html 48 | 49 | iOS 动画篇:CADisplayLink 与CoreGraphics 实现冻 50 | http://www.cnblogs.com/pretty-guy/p/8303755.html 51 | 52 | iOS 动画总结 53 | http://www.cocoachina.com/ios/20160712/17010.html 54 | 55 | iOS 动画详解 56 | https://www.jianshu.com/p/79a0b3c7086c 57 | 58 | 59 | UI优化 60 | 61 | iOS性能优化UI知识点 62 | https://www.jianshu.com/p/21537dd739f5 63 | 64 | iOSUI控件优化 65 | http://www.cnblogs.com/peteremperor/p/6050317.html 66 | 67 | iOS 保持界面流畅度的技巧 68 | https://blog.ibireme.com/2015/11/12/smooth_user_interfaces_for_ios/ 69 | 70 | Instruments_高效绘图_图像IO_图层性能_专有图层 71 | https://www.jianshu.com/p/45893ac6bec3 72 | 73 | iOS 性能优化:CoreAnimation 74 | https://www.jianshu.com/p/c42301ede4ac 75 | 76 | iOS性能优化探索 77 | http://www.cocoachina.com/ios/20180309/22514.html 78 | 79 | iOS 10 UICollectionView 性能优化 80 | https://blog.csdn.net/mo_xiao_mo/article/details/53140237 81 | 82 | iOS 性能优化:Instruments 调试界面卡顿 83 | https://blog.csdn.net/shaobo8910/article/details/66975785 84 | 85 | iOS UI 卡顿检测 86 | https://blog.csdn.net/u010262501/article/details/79616963 87 | 88 | Runloop 89 | Threading Programming Guide 90 | https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/Multithreading/RunLoopManagement/RunLoopManagement.html 91 | 92 | 深入理解Runloop 93 | https://blog.ibireme.com/2015/05/18/runloop/ 94 | 95 | Sunnyxx 线下视频分享 96 | http://v.youku.com/v_show/id_XODgxODkzODI0.html 97 | 98 | iOS Runloop 详解 99 | http://www.imlifengfeng.com/blog/?p=487 100 | 101 | iOS Runloop 详解 - 掘金 102 | https://juejin.im/post/5aca2b0a6fb9a028d700e1f8 103 | 104 | Runloop 最佳实践 105 | https://juejin.im/post/59df33a4f265da43283fda0d 106 | 107 | Runloop 常驻线程、性能优化 108 | https://www.jianshu.com/p/f3079ea36775 109 | 110 | iOS 底层原理总结 - Runloop 111 | https://juejin.im/post/5add46606fb9a07abf721d1d 112 | 113 | 从源码探索 NSTimer 的实现原理 114 | https://www.jianshu.com/p/179603ffb194 115 | 116 | Runloop - 掘金 117 | https://juejin.im/post/59a04e125188252445326e89 118 | 119 | 深入研究Runloop与线程保活 120 | http://www.cocoachina.com/ios/20160728/17220.html 121 | 122 | 深入研究 Runloop 与线程保活 123 | https://juejin.im/post/579583ba6be3ff006613628c 124 | 125 | Runloop 退出方式 126 | http://www.cocoachina.com/ios/20170724/19979.html 127 | 128 | YYAsyncLayer 源码解析 129 | https://juejin.im/post/5a0a52b5f265da43247ff4ad 130 | 131 | Runloop 与多线程 132 | https://www.jianshu.com/p/d2bec44a2b1d 133 | 134 | Runloop 知识点总结 135 | https://www.jianshu.com/p/108c6255962c 136 | 137 | Runloop 实际应用如何APP流畅度 138 | https://www.jianshu.com/p/2db318d68e7e 139 | 140 | Runloop 优化列表滑动卡顿 141 | https://mp.weixin.qq.com/s?src=11×tamp=1526568673&ver=882&signature=YCCG5fWV14SkPquPK0l1RHUd7LS7vS5eWfN7uHCntBOiiG7UKXdo8bwnfHotTNHx4oJdNAJJbK61UP101IPb8co-StlUpgOAXZOL6M1MG8TExle8zyF000WK5BfONMkZ&new=1 142 | 143 | iOS Runloop - 简书 144 | https://www.jianshu.com/p/613916eea37f 145 | 146 | 主线程卡顿检测 147 | https://juejin.im/post/59edb7596fb9a0450d103f34 148 | 149 | iOS应用UI线程卡顿检测 150 | https://mp.weixin.qq.com/s?__biz=MzI5MjEzNzA1MA==&mid=2650264136&idx=1&sn=052c1db8131d4bed8458b98e1ec0d5b0&chksm=f406837dc3710a6b49e76ce3639f671373b553e8a91b544e82bb8747e9adc7985fea1093a394#rd 151 | 152 | 事件传递及响应链 153 | Touches、Presses、Guestures 154 | https://developer.apple.com/documentation/uikit/touches_presses_and_gestures 155 | 156 | Event Handling Guide for iOS 157 | https://wenku.baidu.com/view/017afeece009581b6bd9eb41.html 158 | 159 | 史上最详细的iOS之事件的传递和响应机制 160 | https://www.jianshu.com/p/2e074db792ba 161 | 162 | 触摸、手势、响应链 163 | https://www.jianshu.com/p/a9ecbd14364c 164 | 165 | 响应者链条与手势识别器 166 | https://www.aliyun.com/jiaocheng/357640.html 167 | 168 | 事件传递与响应链 169 | https://blog.csdn.net/ios_hc/article/details/52038438 170 | 171 | 172 | UIApplication 173 | UIApplication-CSDN 174 | https://blog.csdn.net/instagramer/article/details/52117877 175 | 176 | UIApplication 详细介绍 177 | https://mp.weixin.qq.com/s?src=3×tamp=1526571567&ver=1&signature=TIeIfDgeY89h9mV2xqbByvHIxCVxCMnFlp8AdnQMmO7x2XQmUvyYkb0o9uoTZxs3XmIfvl8oSrimJh7RpSod0y1rlyi*BPrk131oH3-4E4wTzObHux1qT6RJdtDxhee89aquwIsyoWsCALEuIxaO5H2vSGcdPa2TRlJ1qLoHFYY= 178 | 179 | UIApplication 深入研究 180 | http://www.cnblogs.com/pengyingh/articles/2342014.html 181 | 182 | UIApplication 详解 -简书 183 | https://www.jianshu.com/p/f0a2117406d8 184 | 185 | UIApplication 详解 -简书 186 | https://www.jianshu.com/p/724ba1191c08 187 | 188 | UIApplication 简介 - 简书 189 | https://www.jianshu.com/p/4daa99b73a1d 190 | 191 | 192 | 多线程 193 | Threading Programming Guide 194 | https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/Multithreading/RunLoopManagement/RunLoopManagement.html 195 | 196 | atomic 内部实现是怎么样的,安全吗 197 | https://blog.csdn.net/Nathan1987_/article/details/79099185 198 | 199 | Objc-C高级编程-多线程篇 200 | https://www.jianshu.com/p/3d39739e1130 201 | 202 | iOS 多线程全套 203 | http://www.cocoachina.com/ios/20170707/19769.html 204 | 205 | iOS 多线程-概念篇 206 | https://juejin.im/post/5ab4a3b0f265da237f1e3b37 207 | 208 | iOS 多线程-实践篇 209 | https://juejin.im/post/5ab4a4466fb9a028d14107ff 210 | 211 | iOS 多线程:GCD 详解总结 212 | https://www.jianshu.com/p/2d57c72016c6 213 | 214 | iOS 多线程 - GCD 篇 215 | https://juejin.im/post/5a38820cf265da431281082e 216 | 217 | iOS 多线程 - pthread 篇 218 | https://juejin.im/post/5a3887dbf265da432e5c1f2f 219 | 220 | iOS 多线程 - NSOperation 篇 221 | https://juejin.im/post/5a3883896fb9a044ff3193cf 222 | 223 | iOS 多线程之 NSOperationQueue 224 | https://www.jianshu.com/p/52fe1b85c404 225 | 226 | iOS 多线程-GCD、NSOperation 227 | https://www.jianshu.com/p/6e6f4e005a0b 228 | 229 | iOS 多线程-GCD、NSOperation 详尽总结 230 | https://juejin.im/post/5a9e57af6fb9a028df222555 231 | 232 | 关于iOS多线程-CocoaChina 233 | http://www.cocoachina.com/ios/20170829/20404.html 234 | 235 | iOS 开发多线程-CSDN 236 | http://www.cnblogs.com/wendingding/tag/%E5%A4%9A%E7%BA%BF%E7%A8%8B%E7%AF%87/ 237 | 238 | iOS 线程开发其实很简单 239 | https://blog.csdn.net/shenjie12345678/article/details/44152605 240 | 241 | iOS 多线程调研 242 | https://juejin.im/post/5a38813ef265da4315240654 243 | 244 | 谈谈iOS多线程中的锁 245 | https://juejin.im/post/5a0a92996fb9a0451f307479 246 | 247 | 你不知道的iOS多线程 248 | https://juejin.im/post/59c13d5cf265da0669085a52 249 | 250 | iOS 多线程详解 251 | http://www.imlifengfeng.com/blog/?p=533 252 | 253 | 老司机 5篇面试题 254 | https://juejin.im/post/5a9aa633518825556a71d9f3 255 | 256 | iOS多线程编程总结 257 | https://www.jianshu.com/p/95aa5446361d 258 | 259 | 线程与进程使用基础及多线程应用 260 | https://juejin.im/post/5a445457f265da4318770a4a 261 | 262 | 网络 263 | 《HTTP权威指南》 264 | 《图解TCP/IP》 265 | 《TCP/IP详解》 266 | 267 | TCP/IP: 数据链路层 268 | https://juejin.im/post/5a2ff1126fb9a04522077b44 269 | 270 | TCP/IP: IP协议 271 | https://juejin.im/post/5a2ff15ff265da431876b911 272 | 273 | TCP/IP: IP协议相关技术 274 | https://juejin.im/post/5a2ff1a16fb9a045211eaee4 275 | 276 | TCP/IP: TCP/UDP 协议 277 | https://juejin.im/post/5a2ff1f36fb9a04500030771 278 | 279 | TCP/IP: TCP协议详解 280 | https://juejin.im/post/5a2ff232f265da43305e7133 281 | 282 | TCP/IP: HTTP、HTTPS简介 283 | https://juejin.im/post/5a2ff27151882578da0dd817 284 | 285 | 九个问题熟悉HTTPS 286 | https://juejin.im/post/5a2ff29c6fb9a045132aac5a 287 | 288 | 深度优化iOS网络模块 289 | http://mrpeak.cn/blog/ios-network/ 290 | 291 | iOS 开发 - 网络编程 292 | http://www.cnblogs.com/wendingding/tag/%E7%BD%91%E7%BB%9C%E7%AF%87/ 293 | 294 | AFN 源码分析 295 | 296 | Reachability 297 | https://juejin.im/post/5a2e9c14f265da432153ffff 298 | 299 | ASI 300 | 301 | HTTP2.0 比 1.0 有哪些改进 302 | https://www.zhihu.com/question/34074946 303 | 304 | HTTP、HTTP2.0、SPDY、HTTPS 你应该知道的事 305 | http://web.jobbole.com/87695/ 306 | 307 | iOS 网络优化篇 308 | https://github.com/skyming/iOS-Performance-Optimization 309 | 310 | HTTP请求 NSURLCache 311 | https://juejin.im/post/584d0d3f8e450a006ac3f8ef 312 | 313 | iOS 网络缓存扫盲篇 314 | https://segmentfault.com/a/1190000004356632 315 | 316 | 逆向分析iOS网络协议栈 317 | https://mp.weixin.qq.com/s?__biz=MzIwMTYzMzcwOQ==&mid=403204191&idx=1&sn=514664cc05597f8b76730cbf9f3a57f5#rd 318 | 319 | 通过iPhone搭建IPv6测试网络 320 | https://www.jianshu.com/p/4e243cde537a 321 | 322 | 面向协议的iOS网络请求库 323 | https://juejin.im/post/5aaf1c656fb9a028db587cdd 324 | 325 | 我眼中的网络测试 326 | https://www.testwo.com/article/511 327 | 328 | 329 | 数据层 330 | iOS 开发 - 数据存储几种形式 331 | https://blog.csdn.net/wutengwei007/article/details/50378500#%231 332 | 333 | iOS 开发 - 数据库篇 334 | http://www.cnblogs.com/wendingding/tag/%E6%95%B0%E6%8D%AE%E5%BA%93%E7%AF%87/ 335 | 336 | FMDB 源码解析 337 | http://www.cnblogs.com/polobymulberry/category/789988.html 338 | 339 | WCDB 340 | https://github.com/Tencent/wcdb/ 341 | 342 | Realm基础知识 343 | https://blog.csdn.net/zhang522802884/article/details/77197887 344 | 345 | #### 事件传递及响应链 346 | * [Touches、Presses、Guestures](https://developer.apple.com/documentation/uikit/touches_presses_and_gestures) 347 | * [Event Handling Guide for iOS](https://wenku.baidu.com/view/017afeece009581b6bd9eb41.html) 348 | * [史上最详细的iOS之事件的传递和响应机制](https://www.jianshu.com/p/2e074db792ba) 349 | * [触摸、手势、响应链](https://www.jianshu.com/p/a9ecbd14364c) 350 | * [响应者链条与手势识别器](https://www.aliyun.com/jiaocheng/357640.html) 351 | * [事件传递与响应链](https://blog.csdn.net/ios_hc/article/details/52038438) 352 | 353 | 354 | 355 | 356 | #### 其他 357 | 358 | * [苹果Xcode帮助文档阅读指南](http://blog.csdn.net/skymingst/article/details/10417029) 359 | * [Key-Value Observing Programming Guide](https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/KeyValueObserving/KeyValueObserving.html) 360 | * [iOS Technology Overview](https://developer.apple.com/library/content/documentation/Miscellaneous/Conceptual/iPhoneOSTechOverview/Introduction/Introduction.html) 361 | * [Mac Technology Overview](https://developer.apple.com/library/content/documentation/MacOSX/Conceptual/OSX_Technology_Overview/About/About.html) 362 | 363 | * [App Programming Guide for iOS](https://developer.apple.com/library/content/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Introduction/Introduction.html#//apple_ref/doc/uid/TP40007072-CH7-SW24) 364 | 365 | * [Mac App Programming Guide](https://developer.apple.com/library/content/documentation/General/Conceptual/MOSXAppProgrammingGuide/Introduction/Introduction.html) 366 | 367 | 368 | * [switch与ifelse的效率问题](http://blog.csdn.net/kehui123/article/details/5298337) 369 | * [为什么switch...case语句比if...else执行效率高](http://www.cnblogs.com/idorax/p/6275259.html) 370 | * [多线程](http://www.cnblogs.com/kenshincui/p/3983982.html) 371 | 372 | ##### iOS APP 间通信 373 | * [【iOS开发】打开另一个APP(URL Scheme与openURL)](http://www.jianshu.com/p/0811ccd6a65d) 374 | * [iOS系统关于URL Schemes的漏洞探究](https://yq.aliyun.com/articles/39208) 375 | * [实现iOS app之间的内容分享](https://segmentfault.com/a/1190000004237771) 376 | * [iOS App之间常用的五种通信方式及适用场景总结](http://blog.csdn.net/opentogether/article/details/53084855) 377 | * [iOS通过UTI(统一类型标示符)实现应用间文件的传递](http://www.jianshu.com/p/cee3cc083807) 378 | 379 | ##### 系统分享 380 | * [iOS扩展开发攻略(一) - Share Extension](https://my.oschina.net/vimfung/blog/707448) 381 | * [App Extension Programming Guide](https://developer.apple.com/library/content/documentation/General/Conceptual/ExtensibilityPG/index.html#//apple_ref/doc/uid/TP40014214-CH20-SW1) 382 | 383 | ##### 通知 384 | * [浅谈 iOS Notification](http://www.jianshu.com/p/8832f019c17f) 385 | * [Notification Programming Topics](https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/Notifications/Introduction/introNotifications.html#) 386 | 387 | 388 | #### 命令 389 | * [Mac系统下lipo, ar, nm等工具的使用简介](https://www.cnblogs.com/dabaopku/p/5698186.html) 390 | 391 | 392 | 393 | #### Runloop 394 | * [深入理解RunLoop](http://www.cocoachina.com/ios/20150601/11970.html) 395 | * [线程编程指南之RunLoop ](http://www.cnblogs.com/scorpiozj/archive/2011/05/26/2058167.html) 396 | * [CFRunLoop](http://www.jianshu.com/p/4187ab1cb27d) 397 | * [Runloop和多线程](http://www.jianshu.com/p/7e26f106d62b) 398 | 399 | * [Sunnyxx 线下视频 - Youku ](http://v.youku.com/v_show/id_XODgxODkzODI0.html) 400 | * [iOS Runloop学习](http://www.cocoachina.com/ios/20160307/15590.html) 401 | 402 | 403 | 404 | 405 | #### 文档基础 406 | * [Objective-C规范注释心得——同时兼容appledoc(docset、html)与doxygen(html、pdf)的文档生成](https://www.cnblogs.com/zyl910/archive/2013/06/07/objcdoc.html) 407 | * [appledoc 注释规范](https://github.com/tomaz/appledoc/wiki/appledoc-docs-comments) 408 | * [GitBook安装与使用教程](https://blog.csdn.net/feosun/article/details/72806825) 409 | * [gitbook](http://moyadu.oschina.io/diligentpractice/books/chapter-GITBOOK/gitbookbase/gitbook-base.html) 410 | * [markdown中超链接通过新窗口打开](https://blog.csdn.net/so_geili/article/details/53025317) 411 | * [斗米客户端的架构思想](http://blog.linzihong.com/2017/07/27/framework/) 412 | * [CSDN-markdown 页间跳转(锚点链接)的实现](https://blog.csdn.net/thither_shore/article/details/52206016) 413 | -------------------------------------------------------------------------------- /0x04-架构设计.MD: -------------------------------------------------------------------------------- 1 | 2 | 设计模式 3 | 4 | MVC 5 | 6 | 7 | MVVM 8 | 9 | 10 | 组件化 11 | 12 | 13 | 路由设计 14 | * [iOS业务组件化框架Axe详解](https://mp.weixin.qq.com/s/7IWr3YBB8Q7bGaA1a08Y8Q) 15 | 16 | 17 | 18 | 架构设计笔记 19 | 20 | * [ObjC 13章架构篇](https://objccn.io/issue-13-0/) 21 | 22 | * [深入分析MVC、MVP、MVVM、VIPER](https://juejin.im/post/59fc625d51882529c0468dc9) 23 | 24 | * [GUI应用程序架构的十年变迁:MVC,MVP,MVVM,Unidirectional,Clean](https://segmentfault.com/a/1190000006016817?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io) 25 | * [2015-我的前端之路:数据流驱动的界面](https://segmentfault.com/a/1190000004292245) 26 | * [软件工程基础](https://github.com/wxyyxc1992/SoftwareEngineering-Essentials) 27 | 28 | * [Uber 的 App 开发架构 RIBs](https://github.com/uber/RIBs) 29 | 30 | 31 | 32 | #### CocoaPods 33 | -------------------------------------------------------------------------------- /0x05-AIAgent.MD: -------------------------------------------------------------------------------- 1 | 2 | ## 文章记录 3 | 主流多智能体框架设计原理 4 | https://mp.weixin.qq.com/s/brTJfUdW4Ihifv806pO1Ug 5 | 6 | 2025年,拥抱AI Agent! 7 | https://mp.weixin.qq.com/s/zP4YMP2Pn3niTG1YEXF9GA 8 | 9 | AI变革软件开发,Agent基础设施栈的三个关键变化 10 | https://mp.weixin.qq.com/s/Om4_JaPRx3AcJvX5Dg1Ibw 11 | 12 | 64张图,看懂AI Agent的核心技术与未来 13 | https://mp.weixin.qq.com/s/y-JyvYaI3IQKE1ZM4RhiqA 14 | -------------------------------------------------------------------------------- /0x05-人工智能.md: -------------------------------------------------------------------------------- 1 | #### 书籍: 2 | 3 | #### 数学知识 4 | 以下是你开始学习AI需要了解的非常基本的数学概念: 5 | 6 | ##### 微积分学 7 | 8 | * [Khan Academy Calculus videos-可汗学院微积分视频](http://www.youtube.com/playlist?list=PL19E79A0638C8D449) 9 | 10 | * [MIT lectures on Multivariable Calculus(MIT关于多变量微积分的讲座)](http://ocw.mit.edu/courses/mathematics/18-02sc-multivariable-calculus-fall-2010/index.htm) 11 | 12 | * [微积分 Paper](http://tutorial.math.lamar.edu/getfile.aspx?file=B,41,N) 13 | 14 | 15 | ##### 线性代数 16 | 17 | * [Khan Academy Linear Algebra videos(可汗学院线性代数视频)](http://www.youtube.com/playlist?list=PLFD0EB975BA0CC1E0) 18 | 19 | * [MIT linear algebra videos by Gilbert Strang(Gilbert Strang的MIT线性代数视频)](http://ocw.mit.edu/courses/mathematics/18-06-linear-algebra-spring-2010/video-lectures/) 20 | 21 | * [Coding the Matrix (编码矩阵) - 布朗大学线程代数CS课程](https://cs.brown.edu/video/channels/coding-matrix-fall-2014/?page=2) 22 | 23 | * [线性代数-Paper](https://minireference.com/static/tutorials/linear_algebra_in_4_pages.pdf) 24 | 25 | ##### 概率和统计 26 | 27 | * [可汗学院 Probability(概率视频](http://www.youtube.com/playlist?list=PLC58778F28211FA19) 28 | * [可汗学院 Statistics(统计)视频](http://www.youtube.com/playlist?list=PL1328115D3D8A2566) 29 | * [edx probability course (edx概率课程)](https://www.edx.org/course/introduction-probability-science-mitx-6-041x#.VJfS2LQAKc) 30 | * [概率学-Paper](http://www.wzchen.com/s/probability_cheatsheet.pdf) 31 | * [统计学-Paper](http://web.mit.edu/~csvoss/Public/usabo/stats_handout.pdf) 32 | 33 | ##### 其他 34 | * [七月算法-机器学习中的数学](http://www.julyedu.com/video/play/38) 35 | 36 | 37 | #### 机器学习 38 | * [斯坦福大学公开课 :机器学习课程](http://open.163.com/special/opencourse/machinelearning.html) 39 | 40 | #### 深度学习 41 | * [deeplearningbook-chinese](https://github.com/exacity/deeplearningbook-chinese) 42 | 43 | #### CoreML: 44 | * [Core ML 与 Vision:iOS 11 机器学习教程](http://www.jianshu.com/p/1df8ac6af865) 45 | * [Core ML and Vision Framework on iOS 11](http://yulingtianxia.com/blog/2017/06/19/Core-ML-and-Vision-Framework-on-iOS-11/?utm_source=tuicool&utm_medium=referral) 46 | * [详解苹果Core ML:如何为iOS创建机器学习应用](https://www.jiqizhixin.com/articles/d49f994b-78e8-4028-b2e1-2e3412086be9) 47 | 48 | 49 | * [iOS_ML](https://github.com/alexsosn/iOS_ML#coreml) 50 | 51 | #### 其他推荐系列 52 | * [iOS_ML](https://github.com/alexsosn/iOS_ML#coreml) 53 | * [awesome-artificial-intelligence](https://github.com/owainlewis/awesome-artificial-intelligence#code) 54 | * [AI](https://github.com/a16z/ai) 55 | 56 | 57 | 58 | #### 外挂系列 59 | * [tesseract-ocr在mac下的使用汇总](http://blog.csdn.net/yimingsilence/article/details/52015159) 60 | * [教你巧玩 [冲顶大会] 答题类游戏](https://www.jianshu.com/p/dc828c4b901d) 61 | 62 | #### 项目 63 | 64 | * [UnsplashExplorer-CoreML](https://github.com/ahmetws/UnsplashExplorer-CoreML) 65 | * [Core-ML-Sample](https://github.com/yulingtianxia/Core-ML-Sample) 66 | -------------------------------------------------------------------------------- /0xp01-IM研究.MD: -------------------------------------------------------------------------------- 1 | #### 概念 2 | * [http和socket之间的关系和区别](https://segmentfault.com/q/1010000006809949?_ea=1139974) 3 | 4 | #### 协议 5 | * [IM/推送的通信格式、协议篇](http://www.52im.net/forum.php?mod=collection&action=view&ctid=18&fromop=all) 6 | * [《环信支持千万并发即使通讯的技术要点》阅读摘要](http://www.blogjava.net/yongboy/archive/2014/10/30/419289.html) 7 | * [基于XMPP协议的XML数据流压缩模型研究](https://www.toutiao.com/i6257427372182602242/) 8 | * [说说XMPP的问题和解决方案 #2](https://github.com/rainzhaojy/blogs/issues/2) 9 | * [移动场景下通信协议FlatBuffers、ProtocolBuffers、MessagePack选优](https://www.jianshu.com/p/987c4d16c48b) 10 | 11 | #### 推送 12 | * [iOS 设备是如何实现推送功能的呢?](https://www.zhihu.com/question/20049505) 13 | 14 | #### 信令风暴 15 | * [微信的大规模使用真的会过多占用信令,影响通讯稳定吗?](https://www.zhihu.com/question/20849677) 16 | * [微信对网络影响的技术试验及分析(论文全文)](http://www.52im.net/forum.php?mod=viewthread&tid=195&ctid=10) 17 | * [智能手机信令风暴探析](https://wenku.baidu.com/view/0dfbec2f915f804d2b16c144.html) 18 | * [华为“智能风暴”解决方案](https://wenku.baidu.com/view/2408016ea98271fe910ef90c.html) 19 | 20 | #### 移动网络 21 | * [华为内部3G网络资料: WCDMA系统原理培训手册](http://www.52im.net/thread-193-1-1.html) 22 | 23 | #### 开源 24 | * [CocoaMQTT](https://github.com/emqtt/CocoaMQTT) 25 | -------------------------------------------------------------------------------- /0xp02-Push.MD: -------------------------------------------------------------------------------- 1 | 开这个文件是开始维护 WPush 项目,深度梳理下 Push 相关。 2 | 3 | #### 官方文档 4 | * [Local and Remote Notifications Overview](https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG) 5 | * [WWDC-2016-724](https://developer.apple.com/videos/play/wwdc2016/724) 6 | * [Voice Over IP (VoIP) Best Practices](https://developer.apple.com/library/content/documentation/Performance/Conceptual/EnergyGuide-iOS/OptimizeVoIP.html) 7 | * [WWDC-2018-710](https://developer.apple.com/videos/play/wwdc2018/710/) 8 | * [WWDC-2018-711](https://developer.apple.com/videos/play/wwdc2018/711/) 9 | 10 | #### 52IM Push 相关 11 | * [iOS的推送服务APNs详解:设计思路、技术原理及缺陷等](http://www.52im.net/thread-345-1-1.html) 12 | * [52IM 推送专题](http://www.52im.net/forum.php?mod=collection&action=view&ctid=11) 13 | 14 | #### 技术博客 15 | * [iOS Push详述,了解一下?](http://wetest.qq.com/lab/view/380.html?from=content_csdnblog) 16 | * [iOS Silent Push notifications](http://hayageek.com/ios-silent-push-notifications) 17 | * [What PushKit does and why you should use it.](https://zeropush.com/guide/guide-to-pushkit-and-voip) 18 | * [iOS VoIP后台运行原理](http://www.cnblogs.com/easonoutlook/archive/2012/09/11/2680481.html) 19 | * [写一个iOS VoIP应用需要知道什么?](http://www.cnblogs.com/jhzhu/p/3416305.html) 20 | * [iOS VOIP PushKit 开发相关](https://www.jianshu.com/p/9afff11dd6af) 21 | * [iOS利用voip push实现类似微信(QQ)电话连续响铃效果](https://oopsr.github.io/2016/06/20/voip/) 22 | * [iOS Voip 后台运行的原理](http://www.chongchonggou.com/g_824694012.html) 23 | * [iOS Push的门道](http://www.open-open.com/lib/view/open1452487743355.html) 24 | 25 | #### APPStore 26 | * [程序使用Voip被苹果拒绝](http://www.cocoachina.com/bbs/read.php?tid-258950.html) 27 | * [关于socket voip后台保持长连被苹果拒了](http://www.cocoachina.com/bbs/read.php?tid-273232-page-1.html) 28 | 29 | #### 科普博客 30 | * [iOS 上的 VOIP 应用,如何能够更省电?](http://www.ifanr.com/75641) 31 | * [VoIP基本原理与常见设备(全文)](http://tech.163.com/05/0913/11/1THBCF7A00091589_all.html) 32 | 33 | #### 34 | * [Knuff](https://github.com/KnuffApp/Knuff) 35 | -------------------------------------------------------------------------------- /0xp03-APM.MD: -------------------------------------------------------------------------------- 1 | 2 | AOP 3 | 1. https://www.jianshu.com/p/addd4eac54ed 4 | 2. https://www.jianshu.com/p/97017f88f584 5 | 3. APM 6 | 7 | 8 | #### 电量 9 | * [电池损耗-百度百科](https://baike.baidu.com/item/%E7%94%B5%E6%B1%A0%E6%8D%9F%E8%80%97) 10 | * [查看iphone电池的损耗程度和是否降频](https://zhuanlan.zhihu.com/p/31968706) 11 | * [GT](https://github.com/Tencent/GT) 12 | * [ [腾讯 TMQ] iOS 电量测试实践](https://testerhome.com/topics/10666) 13 | 14 | * [iOS Diagnostics (Part 2)](http://www.lyonanderson.org/blog/2014/11/05/ios-diagnostics-part-2/) 15 | * [UIDeviceListener](https://github.com/eldade/UIDeviceListener) 16 | * [详细介绍iOS Diagnostics电量测试](https://mp.weixin.qq.com/s/2NipvnSHyMng8Yt6fpIxtQ) 17 | -------------------------------------------------------------------------------- /0xp04-音视频技术.MD: -------------------------------------------------------------------------------- 1 | #### 涉及系统框架 2 | * AVFoundation、AVKit、 3 | * Core Audio、Core Video、Core Media、Core Animation 4 | * MediaPlayer、QuickLook、MediaToolBox 5 | 6 | ![音视频框架结构图](https://raw.githubusercontent.com/skyming/Study/master/Images/AudioVisualFramework.png) 7 | 8 | 9 | #### 音视频基础 10 | * [[总结]视音频编解码技术零基础学习方法](http://blog.csdn.net/leixiaohua1020/article/details/18893769) 11 | * [视频参数(流媒体系统,封装格式,视频编码,音频编码,播放器)对比](http://blog.csdn.net/leixiaohua1020/article/details/11842919) 12 | * [主流视频格式介绍](http://www.cnblogs.com/wind128/p/4437675.html) 13 | * [iOS 支持的视频封装格式](https://github.com/skyming/Study/blob/master/Resources/iOS-AudiovisualTypes.text) 14 | * [MIMETYPE](https://stackoverflow.com/questions/21789770/determine-mime-type-from-nsdata) 15 | * [Mp4签名分析](http://www.file-recovery.com/mp4-signature-format.htm) 16 | * [文件签名](http://www.garykessler.net/library/file_sigs.html) 17 | * [文件签名-Wiki](https://en.wikipedia.org/wiki/List_of_file_signatures) 18 | 19 | #### 书籍推荐 20 | * [AV Foundation开发秘籍:实践掌握iOS & OS X 应用的视听处理技术](https://item.jd.com/11742630.html) 21 | 22 | #### 官方教程 23 | * [Media Playback Programming Guide ](https://developer.apple.com/library/content/documentation/AudioVideo/Conceptual/MediaPlaybackGuide/Contents/Resources/en.lproj/Introduction/Introduction.html) 24 | * [AVFoundation Programming Guide](https://developer.apple.com/library/content/documentation/AudioVideo/Conceptual/AVFoundationPG/Articles/00_Introduction.html) 25 | * [Audio Session Programming Guide](https://developer.apple.com/library/content/documentation/Audio/Conceptual/AudioSessionProgrammingGuide/Introduction/Introduction.html) 26 | * [HTTP Live Streaming Overview](https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/StreamingMediaGuide/Introduction/Introduction.html) 27 | 28 | 29 | #### 博客 30 | * [移动端IM实践:iOS版微信小视频功能技术方案实录](http://www.52im.net/thread-126-1-1.html) 31 | * [iOS微信小视频优化心得](https://mp.weixin.qq.com/s?__biz=MzAwNDY1ODY2OQ==&mid=207686973&idx=1&sn=1883a6c9fa0462dd5596b8890b6fccf6) 32 | * [iOS仿微信小视频功能开发优化记录](http://www.jianshu.com/p/6d35bb53f4ac) 33 | * [浅谈iOS视频播放的N种解决方案](http://www.jianshu.com/p/3618a9116660) 34 | * [仿微信小视屏 iOS 技术路线实践笔记[录制篇]](https://github.com/Damonvvong/iOSDevNotes/blob/master/Notes/videorecoder.md) 35 | * [iOS开发系列--音频播放、录音、视频播放、拍照、视频录制](http://www.cnblogs.com/kenshincui/p/4186022.html) 36 | * [Live555源码解析(1) - Main 寻根问祖,留其筋骨](http://www.jianshu.com/p/1ef8734eb9fb) 37 | * [浅谈iOS视频开发](http://www.cnblogs.com/booksky/p/5213198.html) 38 | * [iOS 直播技术谈](http://www.jianshu.com/p/eb7860594e4c) 39 | * [iOS-视频大纲总结](http://www.bijishequ.com/detail/411960?p=19) 40 | * [objcn-视频部分](https://objccn.io/issues/) 41 | * [HLS-iOS视频播放服务架构深入探究(一)](http://yangchao0033.github.io/blog/2016/01/29/hls-1/) 42 | * [iOS音频掌柜-- AVAudioSession](https://www.jianshu.com/p/3e0a399380df) 43 | #### 音视频编码 44 | * [即时通讯音视频开发(一):视频编解码之理论概述](http://www.52im.net/thread-228-1-1.html) 45 | * [即时通讯音视频开发(一):视频编解码之理论概述](http://www.52im.net/thread-229-1-1.html) 46 | * [即时通讯音视频开发(二):视频编解码之数字视频介绍](http://www.52im.net/thread-230-1-1.html) 47 | * [即时通讯音视频开发(三):视频编解码之编码基础](http://www.52im.net/thread-231-1-1.html) 48 | * [即时通讯音视频开发(四):视频编解码之预测技术介绍](http://www.52im.net/thread-232-1-1.html) 49 | * [即时通讯音视频开发(五):认识主流视频编码技术H.264](http://www.52im.net/thread-233-1-1.html) 50 | * [即时通讯音视频开发(六):如何开始音频编解码技术的学习](http://www.52im.net/thread-234-1-1.html) 51 | * [即时通讯音视频开发(七):音频基础及编码原理入门](http://www.52im.net/thread-235-1-1.html) 52 | * [即时通讯音视频开发(八):常见的实时语音通讯编码标准](http://www.52im.net/thread-236-1-1.html) 53 | 54 | #### VoIP 55 | * [iOS 后台运行VoIP 类APP](http://www.jianshu.com/p/28baf0bdcc94) 56 | * [iOS voip 后台保持长连接](http://blog.csdn.net/sanyue_dp/article/details/44055437) 57 | 58 | #### CallKit 59 | * [【Dev Club 分享第十一期】QQ电话适配iOS10 Callkit框架分享](http://dev.qq.com/topic/58009392302e4725036142fc) 60 | * [iOS10适配之 CallKit](http://www.jianshu.com/p/305bd923c1ae) 61 | * [iOS Call Kit for VOIP](http://cdn2.jianshu.io/p/3bf73a293535) 62 | * [CallKit的使用介绍](http://www.jianshu.com/p/2bf4f186dfd9) 63 | * [CallKit Tutorial for iOS](https://www.raywenderlich.com/150015/callkit-tutorial-ios) 64 | 65 | 66 | 67 | #### 直播协议选择 68 | * [RTMP HLS HTTP 直播协议一次看个够](https://www.jianshu.com/p/4c89b2c83e59) 69 | * [流媒体协议介绍(rtp/rtcp/rtsp/rtmp/mms/hls)](http://blog.csdn.net/tttyd/article/details/12032357) 70 | * [流媒体协议介绍(RTP/RTCP/RTSP/MMS/HLS/HTTP progressive streaming)](http://blog.csdn.net/xx326664162/article/details/51781399) 71 | * [视频直播中说的抓流和推流,是什么意思,两种有什么区别?](https://www.zhihu.com/question/26038990) 72 | 73 | #### 直播技术原理 74 | * [视频直播的技术原理和实现思路方案整理](https://github.com/f2e-journey/xueqianban/issues/61) 75 | * [直播技术的总结](https://github.com/guoxiaopang/LiveExplanation) 76 | * [MACOS上搭建nginx+rtmp环境](https://github.com/guoxiaopang/LiveExplanation/blob/master/MACOS%E4%B8%8A%E6%90%AD%E5%BB%BAnginx%2Brtmp%E7%8E%AF%E5%A2%83.md) 77 | * [如何搭建一个完整的视频直播系统?](https://www.zhihu.com/question/42162310) 78 | * [RTMP H5 直播流技术解析](https://www.villainhr.com/page/2017/08/05/RTMP%20H5%20%E7%9B%B4%E6%92%AD%E6%B5%81%E6%8A%80%E6%9C%AF%E8%A7%A3%E6%9E%90) 79 | 80 | #### 直播实现 81 | * [直播技术简介--简进祥](https://www.cnblogs.com/jx66/p/5834326.html) 82 | * [直播-拉流和推流概述](https://www.jianshu.com/p/b520c2a9b795) 83 | 84 | 85 | #### 开源库 86 | 87 | * [PKShortVideo](https://github.com/pepsikirk/PKShortVideo) 88 | * [VKVideoPlayer](https://github.com/viki-org/VKVideoPlayer) 89 | * [FFmpeg](https://github.com/FFmpeg/FFmpeg) 90 | * [ijkplayer](https://github.com/Bilibili/ijkplayer) 91 | 92 | 93 | #### FAQ 94 | * [Error Domain=NSOSStatusErrorDomain Code=560030580 “The operation couldn’t be completed. (OSStatus error 560030580.)”](https://stackoverflow.com/questions/16439767/error-domain-nsosstatuserrordomain-code-560030580-the-operation-couldn-t-be-com) 95 | * [App icon is not showing in CallKit UI](https://stackoverflow.com/questions/45581940/app-icon-is-not-showing-in-callkit-ui) 96 | * [iOS录音和播放的那些事儿:几个奇葩的需求](http://blog.csdn.net/lixing333/article/details/43154541) 97 | * [CallKit & CallHistory integration: how to map call handles to contacts to show display names?](https://forums.developer.apple.com/thread/54096) 98 | * [How to map social profile with CallKit API](https://stackoverflow.com/questions/39957242/how-to-map-social-profile-with-callkit-api) 99 | -------------------------------------------------------------------------------- /0xp05-PASSPORT.MD: -------------------------------------------------------------------------------- 1 | 2 | PASSPORT 相关知识点记录 3 | #### 设备标识 4 | * [什么是IDFA](https://www.jianshu.com/p/204372f9209d) 5 | * [浅谈移动端设备标识码:DeviceID、IMEI、IDFA、UDID和UUID](https://www.jianshu.com/p/38f4d1a4763b) 6 | * [获取iOS设备WiFi名字和mac地址+iOS12系统获取失败解决](https://www.jianshu.com/p/1b29dc8794d6) 7 | 8 | 9 | #### 架构设计 10 | * [滴滴打车passport系统架构设计分析](http://www.hello-code.com/blog/architecture/201607/6099.html) 11 | 12 | 13 | #### 新技术 14 | * [Sign In with Apple](https://developer.apple.com/design/human-interface-guidelines/sign-in-with-apple/overview/) 15 | * [iOS12 - Password AutoFill, Automatic Strong Password, and Security Code AutoFill](https://developerinsider.co/ios12-password-autofill-automatic-strong-password-and-security-code-autofill/) 16 | * [iOS 13 - How to Integrate Sign In with Apple in your Application?](https://developerinsider.co/ios-13-how-to-integrate-sign-in-with-apple-in-your-application/) 17 | * [WWDC 2018:自动强密码与验证码自动输入](https://juejin.im/post/5b21a5fd6fb9a01e3a5ef1a9) 18 | * [iOS11 Password AutoFill 快速登录](https://www.jianshu.com/p/5ed5d2bf3512) 19 | * [iOS12 – 密码自动填充,自动强密码和安全代码自动填充](https://mp.weixin.qq.com/s/83-ajIMf07RJ2ZddWl54rQ) 20 | * [What the Heck is Sign In with Apple?](https://developer.okta.com/blog/2019/06/04/what-the-heck-is-sign-in-with-apple#how-sign-in-with-apple-works-hint-it-uses-oauth-and-oidc) 21 | * [iOS 苹果授权登录(Sign in with Apple)系列之uniapp篇](https://www.wangquanwei.com/549.html) 22 | 23 | #### AuthenticationServices 24 | ##### 官方文档 25 | * [AuthenticationServices](https://developer.apple.com/documentation/authenticationservices?language=objc) 26 | 27 | ##### WWDC 28 | wwdc 2017 29 | * [wwdc2017-206:Introducing Password AutoFill for Apps](https://developer.apple.com/videos/play/wwdc2017/206/) 30 | * [wwdc2017-225:What's New in Safari View Controller](https://developer.apple.com/videos/play/wwdc2017/225/) 31 | 32 | wwdc 2018 33 | * [wwdc2018-204:Automatic Strong Passwords and Security Code AutoFill](https://developer.apple.com/videos/play/wwdc2018/204/) 34 | * [wwdc2018-721:Implementing AutoFill Credential Provider Extensions](https://developer.apple.com/videos/play/wwdc2018/721) 35 | * [wwdc2018-234:What’s New in Safari and WebKit](https://developer.apple.com/videos/play/wwdc2018/234) 36 | 37 | wwdc 2019 38 | * [wwdc2019-706:Introducing Sign In with Apple](https://developer.apple.com/videos/play/wwdc2019/706/) 39 | * [wwdc2019-516:What's New in Authentication](https://developer.apple.com/videos/play/wwdc2019/516/) 40 | 41 | -------------------------------------------------------------------------------- /0xp06-端智能.MD: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /0xp07-VR汽车.MD: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /0xz01-技术大会PPT.MD: -------------------------------------------------------------------------------- 1 | 2 | #### @Conf 3 | * [atswift-2017-resources](https://github.com/atConf/atswift-2017-resources) 4 | * [atswift-2016-resources](https://github.com/atConf/atswift-2016-resources) 5 | 6 | 7 | #### MDCC 8 | * [MDCC2016](http://special.csdncms.csdn.net/MDCC2016/) [MDCC2016资料链接](https://github.com/MDCC2016) 9 | * [MDCC2015](http://mdcc.csdn.net/m/zone/mdcc_2015/report) 10 | * [MDCC 2015 移动开发者大会所有PPT01](http://download.csdn.net/download/byair/9216661) 11 | * [MDCC 2015 移动开发者大会所有PPT02](http://download.csdn.net/download/byair/9216673) 12 | 13 | 14 | #### WWDC 15 | * [WWDC 2017 Videos](https://developer.apple.com/videos/wwdc2017) 16 | * [WWDC 2016 Videos](https://developer.apple.com/videos/wwdc2016) 17 | * [WWDC 2015 Videos](https://developer.apple.com/videos/wwdc2015) 18 | * [WWDC 2014 Videos](https://developer.apple.com/videos/wwdc2014) 19 | * [WWDC 2013 Videos](https://developer.apple.com/videos/wwdc2013) 20 | * [WWDC 2012 Videos](https://developer.apple.com/videos/wwdc2012) 21 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 Baoming Bai 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 | -------------------------------------------------------------------------------- /Mac.MD: -------------------------------------------------------------------------------- 1 | * [安装软件提示损坏打不开解决方法](https://imac.hk/macos-10-12-security-privacy-app.html) 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Study 2 | 印象笔记零零散散的记录,定期更新在这里备份 3 | 4 | -------------------------------------------------------------------------------- /基础知识/Web相关.MD: -------------------------------------------------------------------------------- 1 | * [微信跳一跳 AI](https://github.com/faceair/youjumpijump) 2 | * [教你用Python来玩微信跳一跳](https://github.com/wangshub/wechat_jump_game) 3 | * [Facebook WebDriverAgent Python Client Library (not official)](https://github.com/openatx/facebook-wda) 4 | * [WebDriverAgent](https://github.com/facebook/WebDriverAgent) 5 | * [ATX ATX 文档 - iOS 真机如何安装 WebDriverAgent](https://testerhome.com/topics/7220) 6 | * [Install libimobiledevice on Mac OSX](http://macappstore.org/libimobiledevice/) 7 | 8 | 9 | 10 | #### JS基础 11 | * [对JAVASCRIPT匿名函数的理解(透彻版)](https://www.cnblogs.com/chenxianbin89/archive/2010/01/28/1658392.html) 12 | -------------------------------------------------------------------------------- /基础知识/iOS13适配.MD: -------------------------------------------------------------------------------- 1 | * [适配 iOS13](https://toss156.github.io/2019/06/12/%E9%80%82%E9%85%8D-iOS13/) 2 | 3 | * [Login With Apple](https://github.com/skyming/Study/blob/master/0xp05-PASSPORT.MD) 4 | * [Implementing Dark Mode on iOS](https://developer.apple.com/videos/play/wwdc2019/214) 5 | * [Supporting Dark Mode in Your Web Content](https://developer.apple.com/videos/play/wwdc2019/511/) 6 | 7 | * [WWDC 19 专栏文章目录](https://xiaozhuanlan.com/topic/8362954017) 8 | 9 | * [iOS 13 适配要点总结](https://juejin.im/post/5d8af88ef265da5b6e0a23ac) 10 | -------------------------------------------------------------------------------- /基础知识/图片库设计.md: -------------------------------------------------------------------------------- 1 | 2 | #### 涉及系统框架 3 | Photos、AssetsLibrary、ImageIO、、 4 | * [ PHAssetCollection里assetCollectionSubtype和assetCollectionType属性](http://blog.csdn.net/zjh467545737/article/details/51233982) 5 | * [三步为你的App集成LivePhoto功能](http://www.jianshu.com/p/83eb0ac3d9c0) 6 | * [iOS:获取相册视频以及图片](http://www.jianshu.com/p/ea0274a33209) 7 | * [Swift - 从相册中选择照片并上传(使用UIImagePickerController)](http://www.hangge.com/blog/cache/detail_1174.html#) 8 | 9 | #### 官方资料 10 | * [Quartz 2D Programming Guide](https://developer.apple.com/library/content/documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/Introduction/Introduction.html#//apple_ref/doc/uid/TP30001066) 11 | * [Image I/O Programming Guide](https://developer.apple.com/library/content/documentation/GraphicsImaging/Conceptual/ImageIOGuide/imageio_intro/ikpg_intro.html#//apple_ref/doc/uid/TP40005462) 12 | * [Core Image Programming Guide](https://developer.apple.com/library/content/documentation/GraphicsImaging/Conceptual/CoreImaging/ci_intro/ci_intro.html#//apple_ref/doc/uid/TP30001185) 13 | * [Drawing and Printing in iOS](https://developer.apple.com/library/content/documentation/2DDrawing/Conceptual/DrawingPrintingiOS/Introduction/Introduction.html#//apple_ref/doc/uid/TP40010156) 14 | * [Graphics & Animation专题](https://developer.apple.com/library/content/navigation/#section=Topics&topic=Graphics%20%26amp%3B%20Animation) 15 | * [WWDC2018 图像最佳实践](https://juejin.im/post/5b1a7c2c5188257d5a30c820) 16 | 17 | #### 架构设计 18 | * [iOS高性能图片架构与设计](https://zhuanlan.zhihu.com/p/20273299) 19 | * [如何打造易扩展的高性能图片组件](https://zhuanlan.zhihu.com/p/26955368) 20 | 21 | #### 源码分析 22 | * [iOS图片加载速度极限优化—FastImageCache解析](http://blog.cnbang.net/tech/2578/) 23 | 24 | #### 性能优化 25 | * [腾讯社交网络图片带宽优化技术演进之路](https://mp.weixin.qq.com/s/1jgFtfgdnoewntrr2j1Otw) 26 | * [图片流量节省大杀器:基于 CDN 的 sharpP 自适应图片技术实践](https://cloud.tencent.com/developer/article/1004404) 27 | * [谷歌开源图片压缩算法 Guetzli 实测体验报告](https://cloud.tencent.com/developer/article/1004742) 28 | * [如何节省 1TB 图片带宽?解密极致图像压缩](https://cloud.tencent.com/developer/article/1028362) 29 | * [HEIF & HEVC 你知道多少?EIF & HEVC 研究](https://juejin.im/post/59ddc13ff265da432319f438) 30 | * [超越Google,腾讯推出自研图片编码格式TPG](https://baike.baidu.com/tashuo/browse/content?id=56526503b21863aadefd3822&lemmaId=&fromLemmaModule=pcBottom) 31 | 32 | #### 编解码 33 | * [谈谈 iOS 中图片的解压缩](http://blog.leichunfeng.com/blog/2017/02/20/talking-about-the-decompression-of-the-image-in-ios/) 34 | * [iOS中的imageIO与image解码](http://www.cnblogs.com/fengmin/p/5702240.html) 35 | * [iOS中的CGBitmapContext](http://www.jianshu.com/p/84addd11e679) 36 | * [再谈图片压缩](https://mp.weixin.qq.com/s?__biz=MzA3ODg4MDk0Ng==&mid=2651113296&idx=1&sn=879e48ebc5d00f2d457bbfa67f2e2129) 37 | * [Image Resizing Techniques](http://nshipster.com/image-resizing/) 38 | * [靠谱的HEVC方案-软编解码器](https://zhuanlan.zhihu.com/p/25209901) 39 | * [HEVC视频编码框架](https://www.cnblogs.com/weichou/p/5643962.html) 40 | * [【腾讯Bugly干货分享】WebP原理和Android支持现状介绍](https://zhuanlan.zhihu.com/p/23648251) 41 | 42 | #### 缓存 43 | * [NSCache源码-Swift](https://github.com/apple/swift-corelibs-foundation/blob/master/Foundation/NSCache.swift) 44 | * [NSURLCache](http://nshipster.cn/nsurlcache/) 45 | * [NSCache和NSURLCache、网络缓存优化](http://www.cnblogs.com/Mike-zh/archive/2016/02/24/5210169.html) 46 | * [知其然亦知其所以然--NSOperation并发编程](http://www.cocoachina.com/game/20151201/14517.html) 47 | 48 | 49 | #### 内存映射 50 | * [认真分析mmap:是什么 为什么 怎么用](http://www.cnblogs.com/huxiao-tee/p/4660352.html) 51 | * [mmap详解](https://nieyong.github.io/wiki_cpu/mmap%E8%AF%A6%E8%A7%A3.html) 52 | * [linux内存映射mmap原理分析](http://blog.csdn.net/yusiguyuan/article/details/23388771) 53 | 54 | 55 | #### 相关算法 56 | * [缓存淘汰算法--LRU算法](http://flychao88.iteye.com/blog/1977653) 57 | * [缓存淘汰算法--LFU算法](http://flychao88.iteye.com/blog/1977642) 58 | 59 | 60 | 61 | #### OPenGL 62 | 63 | #### 博客: 64 | * [Resizing High Resolution Images on iOS Without Memory Issues](http://pulkitgoyal.in/resizing-high-resolution-images-on-ios-without-memory-issues/) 65 | * [iOS 读取修改图片的Exif信息](http://www.jianshu.com/p/a542751d4ba3) 66 | * [Image I/O Programming Guide](https://developer.apple.com/library/content/documentation/GraphicsImaging/Conceptual/ImageIOGuide/imageio_source/ikpg_source.html) 67 | * [iOS 异步图片加载优化与常用开源库分析](https://segmentfault.com/a/1190000002776279) 68 | * [WWDC心得与延伸:iOS图形性能](http://www.cocoachina.com/ios/20150429/11712.html) 69 | 70 | 71 | #### 开源库 72 | ##### ImageView 73 | * [SDWebImage](https://github.com/rs/SDWebImage) 74 | * [FlyImage](https://github.com/northwind/FlyImage) 75 | * [YYWebImage](https://github.com/ibireme/YYWebImage) 76 | * [PINRemoteImage](https://github.com/pinterest/PINRemoteImage) 77 | * [ios-twitter-image-pipeline](https://github.com/twitter/ios-twitter-image-pipeline) 78 | * [LKImageKit](https://github.com/Tencent/LKImageKit) 79 | ##### Cache 80 | * [SDURLCache](https://github.com/rs/SDURLCache) 81 | * [PINCache](https://github.com/pinterest/PINCache) 82 | * [FastImageCache](https://github.com/path/FastImageCache) 83 | 84 | ##### 编解码器 85 | * [openHEVC](https://github.com/OpenHEVC/openHEVC) 86 | * [封装格式-HEIF](https://github.com/nokiatech/heif) 87 | 88 | #### 笔记 89 | 90 | #### FAQ 91 | * [UIImagePNGRepresentation 保存图片时Crash](http://www.jianshu.com/p/b9d415188c42) 92 | * [解决 CGBitmapContextCreate: unsupported parameter combination 错误](http://blog.csdn.net/ani_di/article/details/17189557) 93 | * [Why do iPhone 7 and iPhone 7 Plus screenshots send an incompatible alpha with RGB color space images?](https://stackoverflow.com/questions/42494745/why-do-iphone-7-and-iphone-7-plus-screenshots-send-an-incompatible-alpha-with-rg) 94 | * [iOS 11 HEIF/HEIC图片转JPG、UIImage加载HEIF](http://www.jianshu.com/p/a63c7d5d98a9) 95 | 96 | -------------------------------------------------------------------------------- /基础知识/基础算法.MD: -------------------------------------------------------------------------------- 1 | #### 算法 2 | 二分(递归、非递归)、二叉树前序、中序、后序遍历(递归、非递归)、二叉树翻转 3 | * [十大经典排序算法](http://www.cnblogs.com/onepixel/p/7674659.html) 4 | 5 | -------------------------------------------------------------------------------- /基础知识/富文本.md: -------------------------------------------------------------------------------- 1 | 2 | * [UITextView中,如何对特殊文本进行整体绑定](http://www.jianshu.com/p/891275b93d29) 3 | 4 | 5 | * UITextView 文本绑定 [简书](http://www.jianshu.com/p/08d0da168f7f) [Github](https://github.com/lele8446/TextViewDemo) 6 | 7 | * [初始TextKit](https://objccn.io/issue-5-1/) 8 | 9 | * [【iOS控件】UITextView(UITextField)不得不说的事(一)](http://www.ymonke.com/?p=18) 10 | 11 | * [YYKit学习笔记](http://www.jianshu.com/p/b462a228fd98) 12 | * [Runloop](http://www.tuicool.com/articles/IFzIfiv) 13 | * [并发编程—OSAtomic原子操作](http://southpeak.github.io/2014/10/17/osatomic-operation/) 14 | 15 | 开源库: 16 | * [YYText](https://github.com/ibireme/YYText) 17 | * [富文本模块库](https://github.com/Tim9Liu9/TimLiu-iOS) 18 | -------------------------------------------------------------------------------- /基础知识/性能优化.MD: -------------------------------------------------------------------------------- 1 | * [UITableView的优化](http://www.jianshu.com/p/af6b095aaaf3) 2 | * [iOS 开发的9个超有用小技巧](http://www.cocoachina.com/ios/20150320/11384.html) 3 | 4 | * [动画性能调优.md](https://github.com/AttackOnDobby/iOS-Core-Animation-Advanced-Techniques/blob/master/12-%E6%80%A7%E8%83%BD%E8%B0%83%E4%BC%98/%E6%80%A7%E8%83%BD%E8%B0%83%E4%BC%98.md) 5 | * [iOS开发-视图渲染与性能优化](https://www.jianshu.com/p/748f9abafff8) 6 | 7 | 8 | * [镜像加载优化](https://github.com/stepanhruda/dyld-image-loading-performance) 9 | 10 | 11 | -------------------------------------------------------------------------------- /基础知识/操作系统.MD: -------------------------------------------------------------------------------- 1 | ![OSX 架构图](https://pic3.zhimg.com/1e0ea7a7b120b4adeaa76a606e278fea_r.png) 2 | ![安卓架构图](https://camo.githubusercontent.com/ddba6d0e9317073e7aec5517225c33a93f75a4f1/687474703a2f2f696d616765732e636e626c6f67732e636f6d2f636e626c6f67735f636f6d2f726f79656e686f6d652f416e64726f69642f254536253838253931254537253941253834416e64726f69642545372539412538342545352541442541362545342542392541302545342542392538422545362539372538352f416e64726f69642545372539412538342545372542332542422545372542422539462545362539452542362545362539452538342f416e64726f69642545372542332542422545372542422539462545362539452542362545362539452538342545352539422542452e706e67) 3 | #### 系统架构 4 | * [Mac OS 和 iOS 操作系统架构](http://www.cnblogs.com/zhangmangyuan/archive/2013/03/28/iOS.html) 5 | * [Architecture of macOS](https://en.wikipedia.org/wiki/Architecture_of_macOS) 6 | * [《深入解析Mac OS & iOS操作系统》第二章](http://download.csdn.net/download/qinghuawenkang/7105913) 7 | 8 | #### Apple 文档教程 9 | * [iOS Technology Overview](https://developer.apple.com/library/content/documentation/Miscellaneous/Conceptual/iPhoneOSTechOverview/Introduction/Introduction.html) 10 | * [Mac Technology Overview](https://developer.apple.com/library/content/documentation/MacOSX/Conceptual/OSX_Technology_Overview/About/About.html) 11 | 12 | #### 书籍: 13 | * 《Linux——Unix系统编程》 14 | * 《Linux内核设计与实现》》 15 | * [《深入解析Mac OS & iOS操作系统》](http://download.csdn.net/download/qinghuawenkang/7105913) 16 | * 《现代操作系统第二版》 17 | 18 | 19 | #### 指令集 20 | * [Apple移动设备处理器指令集 armv6、armv7、armv7s及arm64](http://www.cocoachina.com/ios/20140915/9620.html) 21 | * [iOS armv7, armv7s, arm64区别与应用32位、64位配置](https://www.jianshu.com/p/567d3b730608) 22 | * [64-bit 与32-bit 简单数据类型的坑](https://blog.csdn.net/bravegogo/article/details/50688049) 23 | 24 | #### 基础知识 25 | * [进程和线程的定义、区别与联系](http://blog.csdn.net/yanxiaolx/article/details/51763372) 26 | -------------------------------------------------------------------------------- /基础知识/数据结构与算法.MD: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /基础知识/正则表达式.MD: -------------------------------------------------------------------------------- 1 | 2 | * [iOS开发------常用正则表达式语法以及常用正则](http://blog.csdn.net/runintolove/article/details/51454874) 3 | * [iOS正则表达式-简书](http://www.jianshu.com/p/4eb7e7971146) 4 | 5 | * [正则表达式30分钟入门教程](https://deerchao.net/tutorials/regex/regex.htm) 6 | * [iOS 正则表达式 NSRegularExpression](http://blog.csdn.net/crayondeng/article/details/16991579) 7 | 8 | 9 | * [117.NSCharacterSet-字符集使用总结](http://blog.csdn.net/wangyanchang21/article/details/53415650) 10 | 11 | -------------------------------------------------------------------------------- /基础知识/计算机网络.MD: -------------------------------------------------------------------------------- 1 | 2 | #### 网络基础知识入门 3 | * [Web开发应该知道的计算机网络知识](https://mp.weixin.qq.com/s/BFXi-89e3VmnhVNhsZUr7Q) 4 | * [TCP/IP - 数据链路层](https://juejin.im/post/5a2ff1126fb9a04522077b44) 5 | * [TCP/IP - IP协议](https://juejin.im/post/5a2ff15ff265da431876b911) 6 | * [TCP/IP - IP协议相关技术](https://juejin.im/post/5a2ff1a16fb9a045211eaee4) 7 | * [TCP/IP - TCP 与 UDP 协议简介](https://juejin.im/post/5a2ff1f36fb9a04500030771) 8 | * [TCP/IP - TCP 协议详解](https://juejin.im/post/5a2ff232f265da43305e7133) 9 | * [TCP/IP - HTTP 与 HTTPS 简介](https://juejin.im/post/5a2ff27151882578da0dd817) 10 | * [TCP/IP - 九个问题从入门到熟悉HTTPS](https://juejin.im/post/5a2ff29c6fb9a045132aac5a) 11 | 12 | #### 书籍 13 | * [http权威指南](http://pan.baidu.com/s/1ntmQbO1) 14 | * [计算机网络:自顶向下方法](http://pan.baidu.com/s/1i3qw1nv) 15 | * [图解tcp/ip 中文第五版](http://pan.baidu.com/s/1mgvaem8) 16 | * [tcp/ip详解 卷一](http://pan.baidu.com/s/1sjma5Ut) 17 | * [图解HTTP](http://pan.baidu.com/s/1sjE2nY9) 18 | 19 | 20 | #### 官方文档 21 | * [Networking Overview](https://developer.apple.com/library/content/documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/Introduction/Introduction.html#) 22 | * [URL Session Programming Guide](https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/URLLoadingSystem/URLLoadingSystem.html#) 23 | * [Stream Programming Guide](https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/Streams/Streams.html) 24 | * [CFNetwork Programming Guide](https://developer.apple.com/library/content/documentation/Networking/Conceptual/CFNetwork/Introduction/Introduction.html) 25 | * [其他](https://developer.apple.com/library/content/navigation/#section=Topics&topic=Networking%2C%20Internet%2C%20%26amp%3B%20Web) 26 | 27 | #### 文章 28 | * [QUIC协议初探-iOS实践](https://mp.weixin.qq.com/s/NbewZ1NU49qSjIcdFrpotw) 29 | 30 | #### 工具 31 | * [wireshark怎么抓包、wireshark抓包详细图文教程](http://blog.csdn.net/holandstone/article/details/47026213) 32 | 33 | ##### 记录 34 | * [计算机网络基础知识总结](http://www.cnblogs.com/maybe2030/p/4781555.html) 35 | * [路由器和交换机的不同之处有哪些?](https://www.zhihu.com/question/20465477) 36 | * [交换机和路由器的区别(推荐)深度好文](http://net.zol.com.cn/640/6403251.html) 37 | * [ios下获取所有实体/虚拟网卡的信息,并以此判断设备所处的网络状态](http://blog.csdn.net/smilebigdear/article/details/50669627) 38 | * [iPhone 网卡信息](https://raw.githubusercontent.com/skyming/Study/master/Resources/iPhone6-networkInterface.text) 39 | 40 | #### 常规面试题 41 | * [常见面试题整理--计算机网络篇(每位开发者必备)](https://zhuanlan.zhihu.com/p/24001696) 42 | * [计算机网络面试题](http://blog.csdn.net/shadowkiss/article/details/6552144) 43 | 44 | #### FAQ 45 | * [三类保留地址(私有地址)](http://blog.csdn.net/u014774781/article/details/48709353) 46 | --------------------------------------------------------------------------------