摘要:▶ 代理传值 delegate 和 block 常用于逆向传值,两者都比较好用,但还是有区别的 A. delegate 在写法上比较麻烦,一方必须设置代理,另一方必须遵循代理且实现代理!其优势是代理的回调函数可以是多个函数,在不同的时机调用不同的回调函数;也可以说在一个协议中定义多个方法,在不同的触
阅读全文
摘要:▶ 线程安全 多线程同时访问一块公共资源是一件很危险的事!下面我们来模拟多窗口售票的情景 A. 使用 NSLock 保证线程安全!NSLock 是 OC 层封装底层线程操作来实现的一种锁,继承 NSLocking 协议,在此我们不讨论各种锁的实现细节,因为基本用不到。NSLock 的使用非常简单 1
阅读全文
摘要:▶ 前言 GCD 全称 Grand Central Dispatch,是纯 C 编写,提供了多且强大的函数。在编写 GCD 相关代码的时我们要记住面对的是函数,而不是方法!GCD 存在于 libdispatch.dylib 这个库中,这个调度库包含了 GCD 的所有的东西,任何 iOS 程序默认就加
阅读全文
摘要:▶ NSOperation NSOperation 在 MVC 中属于 M 层,是用来封装单个任务相关代码和数据的抽象类。它不能够直接使用,必须使用其子类。使用⼦类有三种方式 A - NSInvocationOperation:封装了执行操作的 target 和要执行的 action B - NSB
阅读全文
摘要:▶ 前言 进程:一个正在运行的程序可以看做是一个进程,它拥有独立运行所需要的全部资源;一个进程行由一个或多个线程组成;进程只负责资源的调度和分配,线程才是程序执行的真正单元(负责代码的执行) 线程:程序中独立运行的代码段 主线程:一个正在运行的程序(即进程),至少包含一个线程,就是主线程,它在程序启
阅读全文
摘要:▶ 页面传值 下面代码中,通过 SecondViewController 向 ViewController 传值 // - SecondViewController.h #import <UIKit/UIKit.h> typedef void(^TextBlockSecVC)(NSString *t
阅读全文
摘要:▶ 为什么 block 用作属性时使用 copy 修饰 我们使用 Xcode 的 MRC模式,一步步验证:当 block用作属性时,我们分别使用 assign 和 copy 特性修饰会发生什么状况 // - ViewController .m: 1 #import "ViewController.h
阅读全文
摘要:▶ 循环引用问题 循环引用的本质问题就是双方都强引用了彼此,下面以 MRC模式 为例 // - main.m #import <Foundation/Foundation.h> #import "Person.h" #import "Animal.h" int main(int argc, cons
阅读全文
摘要:▶ description 一般情况下使用 NSLog 和 %@ 输出某个对象时,就会调用这个对象的 description方法,其返回值就是 NSString 字符串型,默认实现返回的格式是 <类名: 对象的内存地址> 代码示例 DemoA:没有重写 description方法 #import <
阅读全文
摘要:▶ 属性传值 | 单例传值 文件目录如下 // - SingletionDemo.h #import <Foundation/Foundation.h> @interface SingletionDemo : NSObject @property (nonatomic,copy)NSString *
阅读全文
摘要:▶ 复合设计模式 1 - 在开发时往往会需要许多零碎的小控件展示在界面上!如果需要一个,就创建一个....那么这样写出的代码太过凌乱,所以采用一种合理的设计模式是很重要。下面代码中就封装了登录页面上所涉及的控件 // - LTView.h 1 #import <UIKit/UIKit.h> 2 @i
阅读全文
摘要:▶ target-action 目标是动作消息的接收者,一个控件或更为常见的是它的单元,以插座变量的形式保有其他动作消息的目标 动作是控件发送给目标的消息,从目标角度看,它是目标为了响应动作而实现的方法。程序需要某些机制来进行事件和指令的翻译,这个机制就是目标-动作机制 如何使用 target-ac
阅读全文
摘要:▶ JSON Javascript Object Notation:轻量级的数据交换格式,采⽤完全独立于语言的文本格式,被称为最理想的数据交换语言。其数据结构是:对象以 { 开始,以 } 结束;数组以 [ 开始,以 ] 结束 JSON 解析工具有:JSONKit、NSJSONSerializatio
阅读全文
摘要:▶ XML XML:Extensible Markup language 可扩展标记语⾔言,它是主流数据格式之一,可以用来存储和传输数据,主要作用是数据交换、内容管理、⽤作配置文件 XML 解析有两种 A. SAX 解析:simple API for xml,基于事件驱动的解析方式,逐行解析,采用协
阅读全文
摘要:▶ 项目结构 Products 文件夹主要用于 Mac 电脑开发的可执行文件(iOS 开发用不到这个文件) Frameworks 文件夹主要用来放依赖的框架 Test 文件夹是用来做单元测试 Info.plist 文件 A. 配置文件:该文件对工程做一些运行期的配置,非常重要。注:新建 .plist
阅读全文
摘要:▶ NSURLSession NSURLSession 的使用非常简单,它先根据会话对象创建一个请求任务,然后执行该任务即可 NSURLSession 特点 A. NSURLSession 支持 http 2.0 协议 B. 处理下载任务的时候可以直接把数据下载到磁盘中 C. 支持后台下载和上传 D
阅读全文
摘要:▶ 沙盒 我们知道存储在内存中的数据,当程序关闭或内存释放,数据就会丢失,这种数据只是临时的 数据持久化的本质:数据保存成文件,存储在程序的沙盒中 沙盒机制 A. 每个应用程序位于文件系统的严格限制部分,就是说每个应用程序只能在该程序所创建的文件系统中读取文件 B. 每个应用程序在 iOS 系统内都
阅读全文
摘要:▶ KVO 简介 1 - 工作原理 ① 被观察者发出 addObserver:forKeyPath:options:context: 方法来添加观察者 ② 只要被观察者的 keyPath 值变化,就会在观察者里调用方法 observeValueForKeyPath:ofObject:change:c
阅读全文
摘要:▶ Notification 1 - Notification 是 iOS 开发框架中的一种设计模式,内部的实现机制由 Cocoa 框架支持,通常用于控制视图和模型的交互。Notification 实现了 NScopying Protocol 协议,它是消息携带的载体,可以把消息内容传递给观察者 2
阅读全文
摘要:▶ 程序入口:main 函数 1 - 任何一个程序,无论是基于 Mac OS 还是 iOS,程序都是从 main 函数开始执行的。main 函数仅在最小程度上地被使用,而应用程序大多数所做的工作均由 UIApplicationMain 函数来处理!main 函数只做 2 件事 ① 创建、释放自动释放
阅读全文