《iOS Programming》 读书笔记 Day1
来源:互联网 发布:mac双系统快速切换 编辑:程序博客网 时间:2024/06/05 00:29
OC方法签名
- OC和其他语言不同, Objective-C 中,方法的唯一性取决于方法名。因此,即使参数类型或返回类型不同, 一个类也不能有两个名称相同的方法。
OC释放对象
- 将指向对象的变量设置为 nil,可以要求程序释放该对象,代码如下: partyInstance = nil;这行代码会释放 partyInstance 变量所指向的对象
Nil会自动忽略发送给自己的消息
- 与Java等语言不同,OC中给nil发送消息的时候,不会产生异常,而是这条指令会被自动忽略。因此在执行对象的方法的时候不必检查是否对象为空
OC是单继承的语言
- 每个类都有一个且只有一个父类(superclass)并继承其父类的行为
OC的格式字符串
- Objective-C 的格式字符串基本和 C 语言相同。但是 Objective-C 支持一种额外的转换说明: %@,对应的实参类型是指向任何一种对象的指针。
访问器的编写
现在看来,似乎只有访问器才能使用点操作,还有不带参数的方法
- 在 Objective-C 中,存方法的命名规则为英文单词 set 加上要修改的实例变量的变量名(首 字母大写)。以 itemName 为例,其存方法的方法名是 setItemName:。在其他语言中,取方 法的方法名通常会是 getItemName。但在
Objective-C 中,取方法的方法名就是实例变量的变 量名。Cocoa Touch
库中的部分代码会假定读者所编写的类也遵守这样的约定。因此,有着良 好代码风格的 Cocoa Touch 程序员都会遵守这个约定。
#import
和#include
的区别
- 在 Objective-C 中,存方法的命名规则为英文单词 set 加上要修改的实例变量的变量名(首 字母大写)。以 itemName 为例,其存方法的方法名是 setItemName:。在其他语言中,取方 法的方法名通常会是 getItemName。但在 Objective-C 中,取方法的方法名就是实例变量的变 量名。Cocoa Touch 库中的部分代码会假定读者所编写的类也遵守这样的约定。因此,有着良 好代码风格的 Cocoa Touch 程序员都会遵守这个约定。
instancetype
两个初始化方法的返回类型都是 instancetype。该关键字表示方法的返回类型和调用方 法的对象类型相同。init
方法的返回类型都声明为 instancetype。 为什么不将返回类型声明为 BNRItem *?问题在于,BNRItem
的子类会继承其全部方法, 其中包括初始化方法和其返回类型。如果 BNRItem 的子类对象收到该初始化消息,那么返回
的会是什么类型的对象?答案是相应子类的对象,而不是 BNRItem 对象。读者可能会想:“这
个问题容易解决,在子类中覆盖初始化方法并修改返回类型即可”。但是,在 Objective-C 中,
一个对象不能同时拥有两个选择器相同、但是返回类型(或者参数类型)不同的方法。 为了避免这个问题,可以声明 init
方法的返回类型和调用方法的对象类型相同,这样就 保证了对象初始化后仍然是正确的类型。
id
在 Objective-C 引入 instancetype 关键字之前,初始化方法的返回类型都是 id(读音 “eye-dee”)。id 的定义是“指向任意对象的指针”(id 和 C 语言的 void* 类似)。使用 Xcode 创建类文件时,模板代码中仍然使用 id 作为初始化方法的返回类型,我们希望 Apple 能尽快 更新模板代码。
instancetype 只能用来表示方法返回类型,但是 id 还可以用来表示变量和方法参数的 类型。如果程序运行时无法确定一个对象的类型,就可以将该对象声明为 id。 id objectOfUnknownType;
可以使用 id 快速遍历存储不同类型对象的数组:
for (id item in items) { NSLog(@"%@", item);}
- 《iOS Programming》 读书笔记 Day1
- 《iOS 6 Programming Cookbook》读书笔记
- View Programming Guide for iOS读书笔记
- Text, Web, and Editing Programming Guide for iOS读书笔记
- Network(NSURLSession) - iOS 8 Swift Programming cookBook 读书笔记
- Chapter1 基础部分 - iOS 8 Swift Programming cookBook 读书笔记
- Chapter 5:collection view - iOS 8 Swift Programming cookBook 读书笔记
- Chapter 5:UIKit Dynamics - iOS 8 Swift Programming cookBook 读书笔记
- Chapter 19:animations - iOS 8 Swift Programming cookBook 读书笔记
- Chapter 7:多线程GCD - iOS 8 Swift Programming cookBook 读书笔记
- Chapter 10 手势 iOS 8 -Swift Programming cookBook 读书笔记
- Chapter 16 notification iOS 8 -Swift Programming cookBook 读书笔记
- Chapter10. UINavigationController - iOS Programming- The Big Nerd Ranch Guide 读书笔记
- 【读书笔记】《R语言实战》Day1
- iOS 旅行 day1
- IOS学习Day1
- Expert C Programming读书笔记
- Programming Ruby 读书笔记(一)
- Hadoop Shell命令
- MongoDB入门
- [SqlServer] 性能优化实战-join与where条件执行顺序
- MAXScript 例子 查找纹理坐标
- 移动端页面宽度自适应
- 《iOS Programming》 读书笔记 Day1
- 天声人语
- spring中使用mockito
- Mongodb启动命令mongod参数说明
- 关于EditText的一点深入的了解
- paint和paintComponent方法的关系
- 天声人语
- 迭代器模式
- 控件EditText的setOnEditorActionListener方法的理解