摘要: 在使用OC开发中,我们经常使用分类为一些不方便修改的类,添加分类,达到为类添加"属性"和方法的目的,下面是为LBPerson类添加分类的代码: #import "LBPerson.h" NS_ASSUME_NONNULL_BEGIN @interface LBPerson (Animation) - 阅读全文
posted @ 2020-11-30 23:06 木子沉雨 阅读(288) 评论(0) 推荐(0) 编辑
摘要: 在OC中,由于分类底层结构的限制,并不能添加成员变量到分类中,但是可以通过关联对象实现。 涉及到的相关api //添加关联对象 // objece 需要添加关联对象的对象 // key 用来去关联值得key // value 关联的值 // policy 政策(retain、assin) void 阅读全文
posted @ 2020-11-28 00:14 木子沉雨 阅读(275) 评论(0) 推荐(0) 编辑
摘要: KVC KVC的全称是Key-Value Coding,俗称"键值编码",可以通过一个key来访问某个属性 常用的API: - (void)setValue:(id)value forKeyPath:(NSString *)keyPath; - (void)setValue:(id)value fo 阅读全文
posted @ 2020-11-23 23:33 木子沉雨 阅读(181) 评论(0) 推荐(0) 编辑
摘要: KVO KVO的全称是Key-Value Observing,俗称"键值监听",一般用于监听某个对象属性值的改变 KVO代码实现 #import "ViewController.h" #import <objc/runtime.h> @interface LBPerson : NSObject @p 阅读全文
posted @ 2020-11-23 22:40 木子沉雨 阅读(228) 评论(0) 推荐(0) 编辑
摘要: isa的调用过程 instance的isa指向class class的isa指向meta-class meta-class的isa指向基类的meta-class class的superclass指向父类的class,如果没有父类,superclass指针为nil meta-class的supercl 阅读全文
posted @ 2020-11-19 22:50 木子沉雨 阅读(112) 评论(0) 推荐(0) 编辑
摘要: OC对象的种类 Objective-C中的对象,主要可以分3种: instance对象(实例对象)、class对象(类对象)、meta-class对象(元类对象) instance对象 instance对象就是通过类alloc出来的对象,每次通过alloc都会产生新的instance对象 insta 阅读全文
posted @ 2020-11-18 23:07 木子沉雨 阅读(155) 评论(0) 推荐(0) 编辑
摘要: Objective-C的面向对象都是基于C/C++的数据结构实现的,而后者又是基于结构体实现的,所以OC转换的最终顺序: Objective-C -> C/C++ -> 汇编语言 -> 机器语言 创建一个OC的项目,main.m中代码如下: #import <Foundation/Foundatio 阅读全文
posted @ 2020-11-16 23:26 木子沉雨 阅读(136) 评论(0) 推荐(0) 编辑
摘要: map和flatmap 在swift中,map和flatmap在处理可选类型的操作上非常好用,下面就以map举例 常规来说,我们来处理一个可选的Int值的时候,通常以下方式来处理 var num1: Int? = 10 var num2 = (num1 != nil) ? (num1! + 10) 阅读全文
posted @ 2020-11-14 21:57 木子沉雨 阅读(357) 评论(0) 推荐(0) 编辑
摘要: max方法 利用max方法,可直接遍历出数组中最大值和最小值 var arr = [1, 2, 3, 4] //// 返回数组中的最大值 和 最小值 //@inlinable public func max(by areInIncreasingOrder: (Element, Element) th 阅读全文
posted @ 2020-11-13 23:01 木子沉雨 阅读(3204) 评论(0) 推荐(0) 编辑
摘要: 闭包的定义 一个函数和它所捕获的变量\常量环境组合起来,称为闭包 我们也可以将其分解成两部分: 1) 定义在函数内部的函数 2) 它捕获的是外层函数的局部变量 对于下面的代码: typealias Fn = (Int) -> Int var num = 0 func getFn() -> Fn { 阅读全文
posted @ 2020-10-26 23:08 木子沉雨 阅读(64) 评论(0) 推荐(0) 编辑