iOS应用代码段瘦身办法
摘要:大型app应对苹果官方代码段大小限制的小伎俩… 背景 苹果官方文档 对二进制 __TEXT 段大小有限制: 代码实在瘦不下去怎么办? 解决方案 利用 rename_section 过审核,在Xcode中向 “Other Linker Flags” 中添加 -Wl,-rename_section,__
阅读全文
三种方式使得iOS应用能够在后台进行数据更新和下载
摘要:三种方式使得iOS程序即使在关闭或崩溃的情况下也能够在后台持续进行一些任务,比如更新程序界面快照,下载文件等。这三个方法分别是Background Fetch,Remote Notification和NSURLSession的backgroundSessionConfiguration Backgr
阅读全文
Block的内存管理
摘要:最近发现很多开发者对block的理解并不是很深,很多项目当中使用的时候多多少会有些问题,今天给大家详细讲讲block的内存管理, 主要从以下几个方面来讲: 根据内存划分block的类型 block内存管理 防止循环引用 Block类型 根据Block在内存中的位置,系统把Block分为3类:NSGl
阅读全文
Block理解和使用要点
摘要:1、__block关键字的使用 在Block的代码块里,是不能修改在外面定义的变量,并且在给block赋值的时候,已经对代码块里的变量做了值的拷贝(只读不可修改)。 示例代码: int x = 5; int (^block4)(int) = ^(int y) { int z = x + y; ret
阅读全文
autorelease什么时间释放
摘要:对于每一个Runloop, 系统会隐式创建一个Autorelease pool,这样所有的release pool会构成一个象CallStack一样的一个栈式结构,在每一个Runloop结束时,当前栈顶的Autorelease pool会被销毁,这样这个pool里的每个Object会被release
阅读全文
iOS开发RunLoop学习:四:RunLoop的应用和RunLoop的面试题
摘要:一:RunLoop的应用 二:面试题: ####1.Runloop基础知识 - 1.1 字面意思 a 运行循环 b 跑圈 - 1.2 基本作用(作用重大) a 保持程序的持续运行(ios程序为什么能一直活着不会死) b 处理app中的各种事件(比如触摸事件、定时器事件【NSTimer】、select
阅读全文
iOS开发RunnLoop学习二:GCD中的定时器
摘要:#import "ViewController.h" @interface ViewController () /** 注释 */ @property (nonatomic, strong) dispatch_source_t timer; @end @implementation ViewCont
阅读全文
iOS开发RunLoop学习:三:Runloop相关类(source和Observer)
摘要:一:RunLoop相关类: 其中:source0指的是非基于端口por,说白了也就是处理触摸事件,selector事件,source1指的是基于端口的port:是处理系统的一些事件 注意:创建一个RunLoop之后,有默认的运行模式mode,也可以为RunLoop指定运行模式,RunLoop启动必须
阅读全文
一:RunLoop的简单介绍
摘要:####1.Runloop基础知识 - 1.1 字面意思 a 运行循环 b 跑圈 - 1.2 基本作用(作用重大) a 保持程序的持续运行(ios程序为什么能一直活着不会死) b 处理app中的各种事件(比如触摸事件、定时器事件【NSTimer】、selector事件【选择器·performSele
阅读全文
深入理解Objective-C:方法缓存
摘要:摘要 只要用到Objective-C,我们每天都会跟方法调用打交道。我们都知道Objective-C的方法决议是动态的,但是在底层一个方法究竟是怎么找到的,方法缓存又是怎么运作的却鲜为人知。 本文主要从源码角度探究了Objective-C在runtime层的方法决议(Method resolving
阅读全文
深入理解Objective-C:Category
摘要:摘要 无论一个类设计的多么完美,在未来的需求演进中,都有可能会碰到一些无法预测的情况。那怎么扩展已有的类呢?一般而言,继承和组合是不错的选择。但是在Objective-C 2.0中,又提供了category这个语言特性,可以动态地为已有类添加新行为。如今category已经遍布于Objective-
阅读全文
Cocoa如何应用设计模式
摘要:在Cocoa中到处都可以找到设计模式的应用,基于模式的机制或架构在Cocoa框架和Objective-C运行环境及语言中是很常见的。Cocoa经常把自己与众不同的工作机制建立在模式上,它的设计受到诸如语言能力或现有架构这样因素的影响。 本部分包含设计模式:可重用的面向对象软件的元素一书中编目的大多数
阅读全文
Objective-C copy,看我就够了
摘要:一、从面向对象到Objective-C概览copy 1、面向对象: In object-oriented programming, object copying is creating a copy of an existing object, a unit of data in object-or
阅读全文
Objective-C类族和工厂模式
摘要:相信大家都了解GoF的《Design Patterns》中提到的23种设计模式,其中将常见的设计模式分为三大类:创建型模式、行为型模式、结构型模式。而在《Clean Code》中也提到建造酒店的例子,系统中对象的构建和使用应当分离开,那么应该怎么构建对象更加整洁和符合使用场景就很重要。 在iOS的系
阅读全文
iOS事件响应链中Hit-Test View的应用
摘要:最近又看了遍苹果的官方文档《Event Handling Guide for iOS》,对事件响应链中的hit-test view 又多了些理解,个人觉的官方文档对这块讲的非常简单,很多东西都是点到为止,hit-test view的知识在项目的任何地方都用到了,但自己反而感知不到,接下来我会给大家讲
阅读全文
Responder Chain简析
摘要:一.responder对象 在iOS系统中,能够响应并处理事件的对象称之为responder object, UIResponder是所有responder对象的基类,在UIResponder类中定义了处理各种事件,包括触摸事件(Touch Event)、运动事件(Motion Event)和远程控
阅读全文
详解CALayer 和 UIView的区别和联系
摘要:前言 前面发了一篇iOS 面试的文章,在说到 UIView 和 CALayer 的区别和联系的时候,被喵神指出没有切中要点,所以这里就 CALayer 和 UIView 这个问题重新整理了下。这里会先分条解释,最后会在文章的结尾给出概括性总结。 1.首先UIView可以响应事件,Layer不可以.
阅读全文
iOS~runtime理解
摘要:Runtime是想要做好iOS开发,或者说是真正的深刻的掌握OC这门语言所必需理解的东西。最近在学习Runtime,有自己的一些心得,整理如下,一为 查阅方便二为 或许能给他人一些启发,三为 希望得到大家对这篇整理不足之处的一些指点。 什么是Runtime 我们写的代码在程序运行过程中都会被转化成r
阅读全文
iOS多线程技术方案
摘要:目录 一、多线程简介 1、多线程的由来2、耗时操作的模拟试验3、进程和线程4、多线程的概念及原理5、多线程的优缺点和一个Tip6、主线程7、技术方案二、Pthread 1、函数2、参数和返回值3、使用三、NSThread 1、创建一个新的线程2、线程的状态3、线程的属性四、互斥锁 1、访问共享资源引
阅读全文
iOS 性能调试
摘要:性能调优的方式: 1、通过专门的性能调优工具 2、通过代码优化 1. 性能调优工具: 下面针对iOS的性能调优工具进行一个介绍: 1.1 静态分析工具–Analyze 相信iOS开发者在App进行Build或Archive时,会产生很多编译警告,这些警告是编译时产生的,静态分析的过程也类似,在XCo
阅读全文