-
参考:关于多线程编程
参考书籍 《多线程编程指南》 原著:Apple Inc. 翻译:謝業蘭 【老狼】目录 什么是多线程 线程术语 多线程的替代方法 线程支持 设计技巧 什么是多线程多线程是一个比较轻量级的方法来实现单个应用程序内多个代码执行路径。从技术角度来看,一个线程 = 应用级结构 + 内核级结构。 1.应用级结构:存储函数调用堆栈以及管理线程的属性和状态的结构。 2.内核级结构:协助调度线程事件,并抢占式调度一个线程到可用的内核之上。调度点由系统决定。如果没有内核级结构,在某一个进程中当...…
-
RunLoop(2)
墙裂推荐:深入理解RunLoop目录 runloop 与 定时器 runloop 与 gcd runloop 与 selector runloop 与 UI刷新等 runloop 与 事件响应和手势 runloop 与 autoreleasePool runloop 与 卡顿检测 CADisplayLinkrunloop 与 定时器一、timertimer 事件会唤醒runloop从调用栈中我们可以看到__CFRunLoopDoTimers的字样(lldb) bt* t...…
-
RunLoop(1)
参考文章:iOS底层原理 - RunLoop总结目录 介绍 runloop与线程 runloop相关类 runloop的源 runloop的运行逻辑 主线程的runloop在哪启动介绍一、介绍run loop 是一个事件处理循环,用来不停的调度工作以及处理输入事件。RunLoop的基本作用保持程序的持续运行处理App中的各种事件(比如触摸事件、定时器事件等)节省CPU资源,提高程序性能:该做事时做事,该休息时休息二、应用范畴定时器(Timer)、PerformSelecto...…
-
参考:RunLoop(三)
参考书籍 《多线程编程指南》 原著:Apple Inc. 翻译:謝業蘭 【老狼】目录 配置RunLoop的源 配置RunLoop的源一、定义自定义输入源二、配置定时源 为了创建一个定时源,你所需要做只是创建一个定时器对象并把它调度到你的 run loop。Cocoa 程序中使用 NSTimer 类来创建一个新的定时器对象,而 Core Foundation 中使用 CFRunLoopTimerRef 不透明类型。本质上,NSTimer 类是 Core Foundation 的简单扩展...…
-
参考:RunLoop(二)
参考书籍 《多线程编程指南》 原著:Apple Inc. 翻译:謝業蘭 【老狼】目录 何时使用RunLoop 使用RunLoop对象 何时使用RunLoopiOS程序中 UIApplication 的 run 方法(或 Mac OS X 中的 NSApplication)作为程序启动步骤的一部分,它在程序正常启动的时 候就会启动程序的主循环。类似的,RunApplicationEventLoop 函数为 Carbon 程序 启动主循环。如果你使用 xcode 提供的模板创建你的程序,...…
-
参考:RunLoop(一)
参考书籍 《多线程编程指南》 原著:Apple Inc. 翻译:謝業蘭 【老狼】 参考文章:iOS底层原理 - RunLoop总结目录 RunLoop剖析什么是runloop?Run loops 是线程相关的的基础框架的一部分。一个 run loop 就是一个事件处理的循环,用来不停的调度工作以及处理输入事件。使用 run loop 的目的是让你的线程在有工作的时候忙于工作,而没工作的时候处于休眠状态。每个线程,包括程序的主线程都有与之对应的 run loop object。只有辅助...…
-
获取Class数据结构信息
参考:CoderMJLee目录 MJClassInfo.h源码 使用MJClassInfo.h源码//// MJClassInfo.h// TestClass//// Created by MJ Lee on 2018/3/8.// Copyright © 2018年 MJ Lee. All rights reserved.//#import <Foundation/Foundation.h>#ifndef MJClassInfo_h#define MJClas...…
-
WebViewJavaScriptBridge原理分析
参考:iOS之WebViewJavascriptBridge浅析 重要:深入剖析 WebViewJavascriptBridge目录 框架结构 js调用原生的核心逻辑框架结构 层级 源文件 接口层 WebViewJavascriptBridge && WKWebViewJavascriptBridge 实现层 WebViewJavascriptBridg...…
-
WebViewJavaScriptBridge使用
参考:一篇文章了解JsBridge之IOS篇 参考:WebViewJavaScriptBridge 基本使用目录 介绍 基本使用介绍WebViewJavaScriptBridge 用于 WKWebView & UIWebView 中 OC 和 JS 交互的框架。把 OC 的方法注册到桥梁中,让 JS 去调用。把 JS 的方法注册在桥梁中,让 OC 去调用。基本使用一、使用pod管理pod ‘WebViewJavascriptBridge’二、OC注册方法(JS调用)1、O...…
-
JavaScriptCore
美团技术团队:深入理解JSCore 重要:深入浅出 JavaScriptCore 重要:上面文章中在 Github 上的Demo目录 iOS的JavaScriptCore框架 JSExport协议 DemoiOS的JavaScriptCore框架JavaScriptCore是苹果公司提供的JavaScript引擎,用于在iOS和macOS上执行JavaScript代码。 它是WebKit框架的一部分,WebKit是苹果用于处理Web内容的开源引擎。 JavaScrip...…
-
WebKit
美团技术团队:深入理解JSCore目录 webkit的组成 JSCore值得注意的Featurewebkit的组成每个浏览器都有自己的内核,Safari的内核就是WebKit 简单点讲,WebKit就是一个页面渲染以及逻辑处理引擎,前端工程师把HTML、JavaScript、CSS这“三驾马车”作为输入,经过WebKit的处理,就输出成了我们能看到以及操作的Web页面。WebKit Embedding API 负责浏览器UI与WebKit进行交互的部分,WebKit Port...…
-
WKWebView(2)
参考:WKWebView进阶使用总结 - JS交互(一) 参考:超详细 WKWebView 开发和使用经验 参考:iOS学习笔记 — WKWebView的使用 参考:WKWebview使用攻略目录 关键类介绍 native 和 js 通讯 场景总结关键类介绍一、WKWebViewConfigurationWKWebViewConfiguration 是用于配置 WKWebView 实例的类,允许你在创建 WKWebView 对象时设置一些选项和属性,以满足特定的需求。 ...…
-
WKWebView(1)
参考:WKWebView进阶使用总结 - JS交互(一) 参考:超详细 WKWebView 开发和使用经验 参考:iOS学习笔记 — WKWebView的使用 参考:WKWebview使用攻略目录 介绍 常规使用 两个协议介绍 参考文章:iOS 16.4 之后真机与模拟器无法使用Safari调试H5页面问题一、什么是WKWebViewWKWebView 是在iOS中用于加载和显示Web内容的一个组件,它提供了一种在你的应用程序中集成Web浏览器功能的方式。理解 WKWeb...…
-
LLDB
目录 格式相关 寄存器相关 内存相关 express p po 命令 单步调试指令格式相关1、格式 x: 16进制d: 10进制f: 浮点2、字节大小 b: Byte 1字节h: half word 2字节w: word 4字节g: giant word 8字节3、举例 memory read/4xg 内存地址 或者 x/4xg 内存地址 读取内存地址中的内容 分4组打印 格式是16进制 每组8个字...…
-
Runtime(十):应用举例
目录 修改textField的占位文字 字典转模型 自动归档解档 交换方法实现 利用消息转发机制,解决方法找不到的异常问题修改textField的占位文字- (void)viewDidLoad { [super viewDidLoad]; UITextField * textField = [[UITextField alloc] initWithFrame:CGRectMake(20, 100, 300, 40)]; textField.placeho...…
-
Runtime(九):类对象信息获取封装
目录 封装 调用封装因为是类对象的信息,我们给NSObject添加一个分类NSObject+classInfo.h#import <Foundation/Foundation.h>NS_ASSUME_NONNULL_BEGIN@interface NSObject (classInfo)/// 打印类对象遵守的协议+(void)printProtocolNames;/// 打印类对象的成员变量+ (void)printIvarNames;/// 打印类对象的属性信息+ (v...…
-
Runtime(八):API
目录 类 成员变量 属性 方法 具体应用类@implementation ViewControllervoid run(id self,SEL _cmd){ printf("run\n");}-(void)run{ NSLog(@"run");}- (void)viewDidLoad { [super viewDidLoad]; Person * person = [[Person alloc] init]; //获取isa指向的类 ...…
-
Runtime(七):cls剖析
目录 问题抛出 问题解析问题抛出先来看段代码Person.hNS_ASSUME_NONNULL_BEGIN@interface Person : NSObject@property (nonatomic, strong) NSString * name;-(void)print;@endNS_ASSUME_NONNULL_ENDPerson.m#import "Person.h"@implementation Person-(void)print{ NSLog(@"my name...…
-
Runtime(六):class相关函数源码
目录 class函数 superclass函数 isMemberOfClass函数 isKindOfClass函数class函数先看下源码实现- (Class)class { return object_getClass(self);}+ (Class)class { return self;}对象方法调用时通过object_getClass函数返回的是类对象。类方法调用时直接返回self,即将自身返回也就是类对象。 所以不管对象方法class还是类方法clas...…
-
Runtime(五):super详解
目录 super 经典示例super看段代码#import "Student.h"@implementation Student-(void)test{ [super test];}@end通过指令:xcrun -sdk iphoneos clang -arch arm64 -rewrite-objc Student.m并精简代码Student.cpp文件struct __rw_objc_super { struct objc_object *object; stru...…