前言 最近开始学习Flutter开发,在打包iOS的时候需要用到Xcode,所以下单了一台MacBookPro作为以后的电脑。但是由于之前没有用过mac,所以弄了半天才安装好...
![240](https://upload.jianshu.io/users/upload_avatars/12357665/e41fce18-204f-4b5d-aadb-eba0a6096b69.jpg?imageMogr2/auto-orient/strip|imageView2/1/w/240/h/240)
前言 最近开始学习Flutter开发,在打包iOS的时候需要用到Xcode,所以下单了一台MacBookPro作为以后的电脑。但是由于之前没有用过mac,所以弄了半天才安装好...
实现一个如下的动画: 实现如果的动画方式大概有两种: 1.直接找一个GIF图片进行播放(最直接) 2.自己用代码绘制然后加上动画第一种方式参考:播放GIF的几种方式 下面主要...
前言 iOS的方法交换能为我们 hook 实例方法,也能为我们 hook 类方法,但是对于 Block 却无能为力,原因很简单,Block并不是一个方法,而是一个函数指针。但...
最近看了斯坦福大学 2020 春季的 SwiftUI 课程,总结一下 SwiftUI 是如何支持 MVVM 设计模式的。 介绍 MVVM(Model-View-ViewMod...
前言 移动端项目复杂到一定程度都会走上组件化的道路,组件一多就会出现联编缓慢的问题。对于Objectiv-C语言的项目,想要加速编译打包的速度,就需要将大量依赖的组件在打包的...
如何把在Mac中命令行编译的代码,生成二进制可执行文件。
Swift 二进制,静态库,动态库解决方案cocoapods-framework 你是不是发现 cocoapods-packager 不能支持 Swift? 你是不是发现 cocoapods-packager 不能支...
Block 匿名函数,能够自动捕捉变量
① 闲着编译了最新libclosure-74 Block 底层源码想必大家已经非常熟悉了,但是估计有很多人不知道怎么去看,更有甚者不知道在哪!这里首先感谢苹果开源了 : li...
锁是最常用的同步工具。一段代码段在同一个时间只能允许被有限个线程访问,比如一个线程 A 进入需要保护代码之前添加简单的互斥锁,另一个线程 B 就无法访问,只有等待前一个线程 ...
这两天翻看 ibireme 大神 《不再安全的 OSSpinLock》 这篇文章,看到文中分析各种锁之前的性能的图表: 发现除了@synchronized 用过,其他的都陌生...
本文首发于我的个人博客:「程序员充电站」[https://itcharge.cn]文章链接:「传送门」[https://itcharge.cn/ios-complete-le...
1、KVO简介 KVO官方简介[https://developer.apple.com/library/archive/documentation/Cocoa/Concept...
KVC底层实现的是setter和getter方法。 KVC简介 代码准备苹果官方文档查阅[https://developer.apple.com/library/archiv...
在Mac OS上的安装 通过命令:brew install llvm llvm会被安装在/usr/local/opt/llvm的路径下。打开~/.bash_profile文件...
准备代码 从上图分析出进入main函数,initialize并没有执行。 从上图中分析出,点击下向下执行,initialize执行了。 调用class方法initialize...
1、类拓展是匿名的分类。2、类拓展可以为类添加属性和方法(类拓展添加的属性和方法是私有的)。3、类拓展在编译时作为类的一部分编译,读取的时候直接读取ro(前提:如果是以.h方...
类的懒加载流程 在我们的上篇文章中提到:_read_images方法中获取到classlist,然后循环使用realizeClassWithoutSwift对class进行了...
一、前言 这篇主要是记录一下 iOS 下静态库与动态库的打包流程,以便以后用到时快速查阅,供自己也供大家学习记录。同时也简述了一下动态库与静态库的区别。 二、静态库与动态库 ...