1.NSLog()
NSLog() 添加了特性,比如:时间戳、日期戳和自动附加换行符(\n)等。
%@ 格式说明符,通知NSLog()接受适当的参数,将其作为NSString,再使用该字符串中的字符,并将其发送到控制台。
2.返回类型 id
代表identifier(标识符),id是一种泛型,用于表示任何种类的对象。一般把未知的用id表示。id实际上是一个指针,指向其中的某个结构。
3.Objective-C中的OOP
@interface部分 接口
包含成员变量,方法声明
如果方法使用参数,则需要冒号;否则不需要冒号。
@implemention部分 编译器指令
对方法的具体实现
4.继承
继承表明一个类从另一个类(它的父类或超类)中获取了某些特性。不要直接更改由继承得到的实例变量的值,一定要使用方法来更改它们。
只能继承一个类。
改变方法的实现时需要重写继承方法。
创建一个新类时,其对象首先从自身的超类中继承实例变量,然后添加自己的实例变量,也可不添加,此时新类中没有实例变量,不需要写。
每个方法调用都获得了一个名为self的隐藏参数,它是一个指向接收消息的对象的指针。
向super发送消息时,实际上是在请求Objective-C向该类的超类发送消息。
5.复合
通过包含作为实例变量的对象的指针实现的。
初始化实例变量的init方法:第一步,为对象分配内存;第二步,自动调用init方法。
存取方法是用来读取或改变对象特定属性的方法。
setter()方法:为对象中的某属性赋值。setter根据它所更改的属性的名称来命名,并加上前缀“set”。
getter()方法:为使用对象的代码提供了读取对象属性的途径。getter方法仅仅根据其返回的属性的名称来命名,不要将get用作getter方法的前缀,破坏命名惯例。
防御式编程:exit(),能在开发周期的早期发现错误。
6. 拆分接口与实现部分
一部分是接口(interface),用来提供类的公共描述,包含所有使用该类所需要的信息。
一部分是实现(implementation),告诉Objective-C编译器如何让该类工作,实现接口中声明的方法。
一个文件存放接口部分的代码:类的@interface指令、公共struct定义、enum 常量、#defines和extern全局变量。放在头文件中,用.h做后缀。
一个文件存放所有实现的细节:类的@implementation指令、全局变量的定义、私有struct。放在.m文件中。