Decorative image frame

寒流‘s Blog

编程与生活

寒流‘s Blog

Objc Runtime 再次实践

好久不用,再次使用runtime重写代码。就用高性能添加图片圆角来再一次实践一下runtime的基本用法。

runtime使用场景:

  • category添加关联属性
  • MethodSwizzle替换/交换系统方法

平常使用cornerRadius和maskToBounds组合设置圆角

Read More...

一起唱,团结就是力量

两个人来到河边,想要渡河,于是同乘一条船。一人船尾,一人船艏,各自拿起一对桨奋力地划着。可是过了老半天也不见小船驶向对岸,两人转头一看,原来各自把自己的位置当成船艏了,朝着相反的方向划去了。他们互相指责对方的过失,到了太阳落山依然还停留在原地。

Read More...

《程序员的自我修养》读书笔记-温故知新

基础篇回顾一下两个基础:
内存
线程

内存


早期的计算机,程序直接运行在物理内存上。那么久存在一个问题:如何尽可能的将有限的物理内存分配给多个程序使用。


内存使用存在的问题:
1.地址空间不足
2.内存使用效率低
3.程序运行的地址不确定-重定位问题。

那么针对这三个问题,利用中间层,让程序间接的访问物理地址,来解决以上几个问题。


Read More...

Learn Swift - Section 4th 扩展、协议、泛型

扩展 Extension


扩展Extension就是向一个已有的类、结构体、枚举类型或者协议类型添加新功能(functionality)。这包括在没有权限获取原始源代码的情况下扩展类型的能力(即逆向建模)。扩展和 Objective-C 中的分类(categories)类似。(不过与 Objective-C 不同的是,Swift 的扩展没有名字。)

Swift 中的扩展可以:
- 添加计算型属性和计算型静态属性
- 定义实例方法和类型方法
- 提供新的构造器
- 定义下标
- 定义和使用新的嵌套类型
- 使一个已有类型符合某个协议
- 也可以对一个协议进行扩展

Read More...

Learn Swift - Section 3rd 类与结构体

类与结构体的共同点:

  • 定义属性用于存储值
  • 定义方法用于提供功能
  • 定义附属脚本用于访问值
  • 定义构造器用于生成初始化值
  • 通过扩展以增加默认实现的功能
  • 实现协议以提供某种标准功能

与结构体相比,类还有如下的附加功能:

  • 继承允许一个类继承另一个类的特征
  • 类型转换允许在运行时检查和解释一个类实例的类型
  • 解构器允许一个类实例释放任何其所被分配的资源
  • 引用计数允许对一个类的多次引用 Read More...