请稍侯

2020年印(影)象(响)深刻的大家们

2020年印(影)象(响)深刻的大家们 记得我第一次去上海图书馆时最让我莫名难忘又震撼的是图书馆门前的思想者雕像,到现在还是有一种用言语说不明白的印象深刻。 数说这十年印(影)象(响)深刻的大家们。 十年前的余世维、郎咸平们,五年前的高晓松、罗振宇、宋鸿兵们,他们的思想观念虽然让人有所成...

Fastlane自动打包配置

Fastlane自动打包配置 Fastlane自动打包配置,主要是编辑Fastfile,下面给一个简单的示例,代码如下: default_platform(:ios) platform :ios do desc "Description of what the lane does" ...

开小灶

开小灶 关于开小灶这事,之前看到在一个评选节目上看到马云质问批责一个候选人,在公司替老板上班的时候自己业余也搞了一个小网站的行为。 看后时常在思考对这个问题的价值判断,从人性的角度看也总觉得马云这个批评质问总欠缺些什么。现在仔细一想这就是不准人家开小灶,剥夺个人的私有权力。 如果说...

iOS 中 NSProxy 的特性与应用

iOS 中 NSProxy 的特性与应用 NSProxy 的特性 NSProxy的主要功能,负责把消息转发给真正的target的代理类; NSProxy没有继承NSObject,但是实现了NSObject协议,作为一个抽象类,它没有实现初始化方法,并且会在收到任何它不响应的消息时...

iOS 中常见的内存泄漏

iOS 中常见的内存泄漏 内存泄漏(memory leak):是指申请的内存空间使用完毕之后未回收。 内存溢出(out of memory):是指程序在申请内存时,没有足够的内存空间供其使用。 delegate 变量没声明为 weak 类型; NSNotification没有移...

Json学编程开发——B站直播间

Json学编程开发——B站直播间 B站直播间 直播间地址:https://live.bilibili.com/22683419 或者扫码可直接观看: 本周主要讲: iOS高级开发原理解析 会附带去零散一点知识点: 1.讲日常编程开发,比如Shell、Java,Chrome...

深入理解iOS 中的 Runloop

深入理解iOS 中的 Runloop 我们知道Runloop本质上是一个执行死循环的对象,它跑起来后大多数时候是处于休眠等待状态,是不占用CPU资源的。我们先来看一下它是怎么做到的: 闲等待:在死循环里是如何不占用CPU资源的 所谓闲等待是在一个循环里,CPU不是一直在空转,没有任务处理...

深入理解 iOS 中 GCD 原理

深入理解 iOS 中 GCD 原理 首先了解一下,计算机程序是怎样运行的,然后再具体讲 GCD 相关内容。 当开始运行程序时,首先应把第一条指令所在存储单元的地址赋予程序计数器PC,然后机器就进入了取指阶段; 在取指阶段,CPU从内存中读取的内容必为指令。然后送往数据缓冲寄存器D...

Objective-C当中的Block

Objective-C当中的Block Blocks是C语言的扩充功能,即带有自动变量(局部变量)的匿名函数。 使用clang可以通过添加-rewrite-objc编译选项将含有Block语法的源代码变换为C++的源代码,如用clang -rewrite-objc main.m会生成一个与...

Xcode断点调试与lldb常用命令

Xcode断点调试与lldb常用命令 Xcode断点调试 断点 添加符号断点 我们可以使用方法名作为符号名,添加符号断点。添加符号断点左下角加号,如下图: 添加一个符号名为sayHello的符号断点。 然后,调试运行 编辑断点 添加断点行为,在断点时执行代码 创建条件断...

iOS里load与initialize方法总结

iOS里load与initialize方法总结 +load方法 load方法在main函数执行之前调用,具体调用是在dyld加载类时,在dyld_start之后由dyld调用; OC 运行时初始化时,会通过 dyld_register_image_state_change_han...

C语言中const关键字使用总结

C语言中const关键字使用总结 用const关键字修饰的意义: 只修饰变量,不修饰其他关键字; 被修饰的部分不可变; 但是不会改变变量的作用域和生命周期。 下面用几个例子来说明 案例1: const int *p = &a 复制代码此时 const 修饰的是 ...

iOS中触发离屏渲染的本质原因与场景

iOS中触发离屏渲染的本质原因与场景 当前屏幕渲染(On-Screen Rendering):当前屏幕渲染,CPU、GPU 不停地将内容渲染完成放入frame buffer帧缓冲区中,显示屏幕从 frame buffer中获取内容显示。 离屏渲染(Off-Screen Rendering...

Objective-C对象的浅拷贝与深拷贝探究

Objective-C对象的浅拷贝与深拷贝探究 iOS提供了2个拷贝方法 copy 不可变拷贝,产生不可变副本; mutableCopy可变拷贝,产生可变副本; 深拷贝和浅拷贝 深拷贝 内容拷贝,产生新的对象; 浅拷贝 指针拷贝,没有产生新的对象; copy和mutable...

iOS中的 calloc 及权限修饰符

iOS中的 calloc 及权限修饰符 内存分配: NSObject的alloc类方法首先调用allocWithZone:类方法,这和GUNstep实现相机,然后调用class_createInstance函数,最后通过调用calloc来分配内存块。 calloc与malloc的区别在于...

iOS weak 底层实现原理

iOS weak 底层实现原理 weak的原理在于底层维护了一张weak_table_t结构的hash表,Key是所指对象的地址,Value是weak指针的地址(这个地址的值是所指对象的地址)数组。 weak 的实现原理可以概括一下三步: 初始化时:runtime会调用objc_i...

Autorelease 及 Autoreleasepool 原理

Autorelease 及 Autoreleasepool 原理 自动释放池在 MRC 模式与 ARC 模式下还是有些差异的。 MRC模式 autorelease会像C语言的自动变量那样来对待对象实例。当超出变量作用域时,对象实例的release实例方法被调用。但同C语言自动变量不...

C语言中的变量常量及其在虚拟内存中的分配

C语言中的变量常量及其在虚拟内存中的分配 在C语言里,使用auto关键字声明自动变量,如果没有被声明为其他类型的变更 ,默认都是自动变量。(注意:auto关键字在C与C++里的用法不同,若编写C/C++兼容程序,最好不要使用auto作为存储类别说明符。) ...

计算机里的内存分配原理

计算机里的内存分配原理 操作系统要求进程不能直接访问物理内存,而是为每个进程分配一块自己独立的虚拟空间,并且每个进程只能访问自己的虚拟地址空间。 进程的虚拟空间是操作系统按分段或分页的方法映射到某个物理空间的,虚拟空间到物理空间的转换是依靠CPU里一个叫...

C语言字节对齐及结构体对齐详解

C语言字节对齐及结构体对齐详解 为什么需要字节对齐 对齐与数据在内存中的位置相关,若一个变量的内存地址正好位于它长度的整数倍,那么就称做自然对齐。如在32位CPU下,假设一个整型变量的地址为0x00000004,那它就是自然对齐的。 字节对齐的作用不仅有利于CPU快速访问,同时合理的利用...

动态链接深入详解

动态链接深入详解 动态链接:为了解决内存及磁盘空间的浪费和更新困难的问题,把程序的链接过程推迟到运行时再进行,就是动态链接的基本思想。让程序在运行时可以动态地选择加载各种程序模块,实现程序功能的扩展,另一方面也可加强程序的兼容的。 动态链接运行时地址空间分布:对于动态链接程序来说,除了可...

ELF文件的装载与Linux的进程

ELF文件的装载与Linux的进程 进程的虚拟地址空间 查看进程虚拟空间分布 cat /proc/<pid>/maps PAE(物理地址扩展) 在CPU字长不变的情况下,扩展地址线长度,修改页映射方式,便使新映射方式可以访问更多的物理内存。 程序的动态装载方法:覆盖装入...