街角杂货店

大多数时候,都在思考自己该走向何方


  • 首页

  • 归档

  • 分类

  • 标签

  • 关于

  • 搜索
close

Lottie原理分析(一)

发表于 2018-04-20   |   分类于 iOS   |  

LOTAnimationView

继承自 LOTView ,其本质上还是 UIView

1
2
// 关键字 @compatibility_alias 的意思是给一个类设置一个别名。这样就可以不用重构以前的类,直接使用新的名字替代原有的名字
@compatibility_alias LOTView UIView;
阅读全文 »

JavaScriptCore 解析

发表于 2018-04-03   |   分类于 iOS   |  

JavaScript 越来越多的出现在客户端的开发当中,ReactNative、JSPatch 都是利用 JavaScript 与客户端语言结合实现的。在 iOS 中,使 iOS 拥有执行 JavaScript 代码能力的的便是 JavaScriptCore 框架。

阅读全文 »

iOS项目Project和Target配置详解

发表于 2018-03-22   |   分类于 iOS , Xcode   |  

iOS 项目一般使用 Xcode 进行开发。项目创建完成后,点击项目名称,在项目导航栏的右侧板面上显示有 PROJECT 和 TARGETS 两部分。iOS 项目的开发环境搭建主要就是基于我们项目的 Project 和 Target 进行展开的,下面对这两部分进行详解,参考官方文档。

阅读全文 »

iOS 开发之 UIResponder 详解

发表于 2017-09-20   |   分类于 iOS , UI   |  

在 iOS 中 UIResponder 类是专门用来响应用户的操作处理各种事件的,包括触摸事件(Touch Events)、运动事件(Motion Events)、远程控制事件(Remote Control Events)。

在UIKit中,UIApplication、UIView、UIViewController这几个类是直接继承自UIResponder,所以这些类都可以响应事件。因此 UIKit 中的视图、控件、视图控制器,以及我们自定义的视图及视图控制器都有响应事件的能力。这些对象通常被称为响应对象,或者是响应者。

本文将详细介绍一个 UIResponder 类提供的基本功能。

阅读全文 »

iOS分类(category)和类扩展(extension)

发表于 2017-08-13   |   分类于 iOS , iOS基础   |  

摘要

无论一个类设计的多么完美,在需求的演进当中,总会碰到一些无法预测的情况。那么怎么扩展已有的类?一般而言,有继承和组合两种选择。在 Objective-C 2.0 中,又提供了 category 这个语言特性,可以动态地为已有类添加新行为。本文将对 category 和 extension 进行介绍。

阅读全文 »

Git的使用简介

发表于 2017-05-25   |   分类于 iOS , git   |  

简介

Git 是目前世界上最先进的分布式版本控制系统。对应的是以SVN为代表的集中式控制系统。

集中式(SVN) 分布式(Git)
是否有中央服务器 有。开发人员需要从中央服务器获得最新版本的项目然后在本地开发,开发完推送给中央服务器。因此脱离服务器开发者是几乎无法工作的 没有中央服务器,开发人员本地都有 Local Repository
网络依赖 必须要联网才能工作,而且对网络的依赖性较强,如果推送的文件比较大而且网络状况欠佳,则提交文件的速度会受到很大的限制。 分布式在没有网络的情况下也可以执行commit、查看版本提交记录、以及分支操作,在有网络的情况下执行 push 到 Remote Repository。
文件存储格式 按照原始文件存储,体积较大 按照元数据方式存储,体积很小
是否有版本号 有 没有
分支操作的影响 创建新的分支则所有的人都会拥有和你一样的分支 分支操作不会影响其他开发人员
提交 提交的文件会直接记录到中央版本库 提交是本地操作,需要执行push操作才会到主要版本库
阅读全文 »

const/static/extern的使用

发表于 2017-05-19   |   分类于 iOS , iOS基础   |  

const 与宏的区别

  • 编译时刻:宏是预编译(编译之前处理),const是编译阶段。
  • 编译检查:宏不做检查,不会报编译错误,只是替换,const会编译检查,会报编译错误。
  • 宏的好处:宏能定义一些函数,方法。 const不能。
  • 宏的坏处:使用大量宏,容易造成编译时间久,每次都需要重新替换。

注意:使用宏,并不会生成很多内存,宏定义的是常量,常量都放在常量区,只会生成一份内存。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// 常见的常量,使用宏替换
#define GGAccount @"accunt"
// 字符串常量
static NSString * const account = @"accunt";

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
NSString *acc = GGAccount;
NSLog(@"acc: %p---%p---%@", acc, &acc, acc.class);
NSLog(@"account:%p---%p---%@", account, &account, account.class);
}

// 打印结果
acc: 0x1084f9078---0x7ffee7705fe8---__NSCFConstantString
account:0x1084f9078---0x1084f9070---__NSCFConstantString
// 变量 acc 和常量 account 指向的是同一块内存区域,即字符串常量 @"accunt" 所在的内存地址
// account 被 const 修饰,所以是常量,内存在常量区
阅读全文 »

iOS内存分布

发表于 2017-05-18   |   分类于 iOS , iOS基础   |  

基本概念

RAM

随机存取存储器(random access memory,RAM)又称作“随机存储器”,是与CPU直接交换数据的内部存储器,也叫主存(内存)。

  • 存储单元的内容可按需随意取出或存入,且存取的速度很快,与存储单元的位置无关。
  • 这种存储器在断电时将丢失其存储内容,故主要用于存储 短时间使用 的程序。
  • 通常作为操作系统或其他正在运行中的程序的临时数据存储媒介。

ROM

ROM是只读存储器(Read-Only Memory)的简称,是一种只能读出事先所存数据的固态半导体存储器。

  • 所存数据稳定,断电后所存数据也不会改变。
  • 其结构较简单,读出较方便,因而常用于存储各种固定程序和数据。
  • 为便于使用和大批量生产,进一步发展了各种可读写存储器,如快闪存储器(Flash memory)。

在计算机系统运行应用时,会把APP从ROM里面拷贝到内存(RAM),然后从内存里面执行代码。运行的应用程序的数据都是保存在内存中的,不同类型的数据,保存的内存区域不同。

阅读全文 »

C语言的内存分布

发表于 2017-05-09   |   分类于 C语言   |  

总览

经典的 C 语言内存分布包括以下 5 个部分:

  1. 代码段 (Text segment)
  2. 初始化数据段 (Initialized data segment)
  3. 未初始化数据段 (Uninitialized data segment)
  4. 堆区 (Heap)
  5. 栈区 (Stack)
阅读全文 »

iOS分词

发表于 2016-10-25   |   分类于 iOS   |  

最近锤子科技发布新手机,手机推出重大功能分词(Big Bang),其实 iOS 拥有分词的 API,代码如下

阅读全文 »
12
刘钢强

刘钢强

iOS Developer

12 日志
8 分类
9 标签
GitHub 知乎
© 2016 - 2018 刘钢强
由 Hexo 强力驱动
主题 - NexT.Pisces