标签: iOS

9 篇文章

thumbnail
Swift 属性
一: 存储属性 非 lazy 型的属性,必须在自己的 init 完成之前,完成初始化。 1、直接赋值: let attr: Int = 1 2、用自执行的 closure 赋值 // 当初始化工作有多个属性要设置的时候,用 closure 更合适 let attr: Int = { let x = 1 + 2 return x }() // 上边等…
thumbnail
再理解 iOS 多线程中的的队列和同步
看过了很多多线程的文章,也写过很多多线程相关的博客;也知道了多线程在操作系统层面,是由中断、原语、信号量、互斥等底层原理实现;但真正遇到多线程问题时,还是不能很快的定位问题出在了哪里。 iOS GCD 的实践 在处理复杂且庞大的多线程项目时,我并不喜欢用 GCD,而更倾向于 NSOperation,原因有二: 1、GCD 的语法格式 (block)…
绘图实战一:Core Graphics 的几个技巧
在 Apple 平台 (iOS/macOS) 上绘图,有三套方案: 1: Core Graphics,CG 开头的 API 2: Core Animation,CA 开头的 API 3: Metal (苹果已经不在更新 OpenGL ES) Core Graphics 如果是一些简单的图形绘制,一般考虑 Core Graphics,具体就是 dra…
iOS 响应者链与事件处理
作者:xiaobo 当我们讨论 “iOS 事件处理与响应者链” 的时候,其实我们想要了解的是:触摸事件是如何被正确的视图识别并且被正确的处理。当然我们都知道,iOS 设备上事件有三种(为了便于说明问题,全文都使用触摸事件来举例): 1: 触摸事件 2: 摇一摇 3: 远程控制事件 从软件层面开始,当手指触摸到屏幕后,触摸事件会被 SpringBoa…
iOS13 适配暗黑模式
作者:xiaobo 暗黑模式是 iOS 13 带来的一种 UI 特性,对开发者而言,适配之前需要准备好以下开发环境: Xcode 11 一部装有 iOS 13 的 iPhone 或 iPad 设备,方便真机调试。 如果你的 App 暂时还不想适配,或者不适合在暗黑模式的 UI 策略。可以暂时通过在工程的 info.plist 中添加UIUserIn…
集成 Flutter 到已经存在的 iOS 工程中
作者:xiaobo 一个纯 Flutter 项目的工程结构 在开始学习 Flutter 之前,我们往往需要一个 Flutter 工程,用下面的命令,可以快速的创建出一个 Flutter 工程: $ flutter create --template module my_flutter 如果一切顺利,就会看到如下的目录结构(部分) my_flutte…
Cocoapods 是如何工作的
作者:xiaobo 最近需要把 iOS 工程的 pod 库二进制化,但发现这方面的资料相对比较少;甚至一些介绍 cocoapods 的文章,也很少从宏观上梳理 cocoapods 的工作流程;大都是关于 pod 指令,以及如何安装使用的文章。 但指令只是达到目的工具而已,我觉得需要先把思路捋清楚,所以尝试简单直白的描述下 cocoapods 的工作…
NSFileManager
文件系统的管理非常复杂,是每个操作系统的基础功能。NSFileManager 是 Foundation 的高级 API,专门用来处理文件系统。它抽象了 Unix 和 Finder 的内部构成,集成了创建、删除、拷贝、移动等文件操作功能。虽然文件系统很复杂,但是 NSFileManager 的使用却很简单,拿来即用。 一、使用 [NSFileMana…
再次学习 bounds 与 frame
本文主要记录 iOS UI 布局中的两个重要概念 bounds 和 frame。 iOS UI 搭建的过程中,苹果给我提供了非常原始和稳定的 UI 布局方式,Frame 布局,也可以称为绝对布局。其中有两个重要概念就是 bounds 和 frame,我们都知道 bounds 和 frame 都是 CGRect 的结构体: struct CGRect…