《iOS编程》读书笔记
来源:互联网 发布:mac 菜单栏 编辑:程序博客网 时间:2024/06/08 05:49
第2章 Objective-C
1.消息和方法的区别:方法是指一块可以执行的代码,而消息是指要求类或对象执行某个方法的动作;
2.消息的名称和将要执行的方法的名称一定是相同的;
3.在OC中,方法的唯一性取决于方法名。因此,即使参数类型或返回类型不同,一个类也不能有两个名称相同的方法;
4.OC允许向某个值为nil的变量发送消息,且不会发生任何事情,在其他语言中,向空指针发送消息是非法的;
5.instancetype只能用来表示方法返回类型,但id还可以用来表示变量和方法参数的类型;
6.在初始化方法中,应该直接访问实例变量,而不是使用存取方法;
7.数组对象(NSArray与NSMutableArray)只能保存指向OC对象的指针,不能将基本类型的变量或C结构加入数组对象。可以将它们包装成OC对象,如NSNumber, NSValue和NSData;
8.不能将nil加入数组对象,但可以加入NSNull对象;
第3章 通过ARC管理内存
1.对象所有权:
(1)当某个方法(或函数)有一个指向某个对象的局部变量时,可以称该变量拥有(own)该变量所指向的对象;
(2)当某个对象有一个指向其他对象的实例变量时,可以称该对象拥有该实例变量所指向的对象。
2.哪种情况会使对象失去拥有者:
(1)当程序修改某个指向特定对象的变量并将其指向另一个对象时;
(2)当程序将某个指向特定对象的变量设置为nil时;
(3)当程序释放对象的某个拥有者时;
(4)当从collection类中(例如数组)删除对象时。
3.属性的特性:
(1)nonatomic和atomic,atomic为原子操作,多线程安全,而nonatomic则不是,默认为atomic;
(2)readwrite和readonly,顾名思义,不解释了,readonly类型只会生成取方法,默认为readwrite;
(3)内存管理特性:strong, weak, copy, unsafe_unretained.详见下面;
4.属性的内存管理特性:
(1)对于不指向任何对象的属性(如int),不需要内存管理,应使用unsafe_unretained,他表示存取方法会直接为实例变量赋值。Apple引入ARC之前曾经使用assign表示这种类型;
(2)unsafe_unretained类型的指针指向的对象为销毁时,指针不会自动设置为nil, 而是成为空指针,因此不安全;但当处理非对象属性时,时不会出现空指针问题的;
(3)unsafe_unretained是非对象属性的默认值;
(4)对于指向OC对象的属性,默认是strong类型;
(5)当某个属性是指向其他对象的指针,而且该对象的类有可修改的子类时(例如NSString/NSMutableString)时,应该讲该属性的内存管理特性设置为copy;
第4章
1.任何一个应用都有且只有一个UIWindow对象,他就像一个容器,负责包含应用中所有的视图;
2.为什么Core Graphic类型都带Ref后缀:Core Graphic结构体和OC对象都是在堆上分配内存,使用这种分配方式的C结构都有一个用来表示结构指针(结构名加)的类型定义,如CGColor结构不直接使用CGColor,而是使用CGColorRef;
第6章
1.File’Owner的理解,详见226页;
2.将插座变量声明为弱引用是一种编程约定。当系统的可用内存偏小是,试图控制器会自动释放其视图并在之后需要显示时再创建;
3.viewDidLoad和viewWillAppear方法,详见第242页;
- 【读书笔记】iOS-iCloud编程
- iOS编程读书笔记
- 《iOS编程》读书笔记
- 【读书笔记】iOS-GCD-多线程编程
- 【读书笔记】iOS-报刊杂志-Newsstand应用编程
- 【读书笔记】iOS-GCD-网络编程要不要使用GCD
- <iOS读书笔记>之Objective-C高级编程(GCD)
- IOS读书笔记
- ios读书笔记
- iOS 读书笔记
- 【读书笔记】iOS-iOS定位
- 【读书笔记】Objective-C编程之道:iOS设计设计模式解析(1)-原型模式
- 内存管理原理----《Objective-C高级编程:iOS与OS X多线程和内存管理》读书笔记
- 《Objective-C高级编程:iOS与OS X多线程和内存管理》读书笔记
- Objective-C高级编程:iOS与OS X多线程和内存管理读书笔记
- 《Object-C高级编程 iOS与OS X多线程和内存管理》读书笔记之一
- 《Object-C高级编程 iOS与OS X多线程和内存管理》读书笔记之二
- Objective-C高级编程 iOS与OS X多线程和内存管理 读书笔记(一)
- github基础使用
- UVA 10340
- 创建maven项目pom.xml代码
- C语言的发展历史
- 单词数
- 《iOS编程》读书笔记
- 20170709 java课程
- Lesson01_python3之 简介、输入和输出
- Linux系统管理-系统资源查看
- SRM559 Div1Medium HatRack
- swift3.0 类的基本使用
- SVN安装步骤【详细】
- leetcode刷题记录
- 配置maven项目pom.xml出现错误解决代码步骤