第二章 OC程序设计
对象生成后只能调用一次初始化方法。
有的类也可以不通过alloc而通过使用别的方法来生成对象,有的类也可能返回一个初始化好的对象。
所有的OC编译指令都是以@开头,以便和c语言字符串区分。
类名不能和变量名以及方法名相同。
方法的的返回值类型需要用()包住。
类的方法名和实例变量名可以相同。
类的实现部分不需要再次声明父类(接口部分声明的时候必须写上父类)
在方法内部如果定义的局部变量与实例变量相同,实例变量就会被覆盖,这时将无法访问实例变量。
方法中的self指的是实例对象自身,是OC内置的变量。self支持赋值等操作,也可以作为返回值被返回。
使用self时一定要小心,要仔细分辨到底调用了哪个类的方法。
super并不确定指向某个对象,所以super只能被用于调用父类的方法,不能通过super完成赋值,也不能把方法的返回值指定为super。
程序的书写风格:
Objective-c也被称为混合编程语言,在编程时既可以使用c语言的编程风格,又可以使用面向对象的功能,程序中面向对象的部分还是使用面向对象的编程风格为好。以下几种情况建议使用c语言的函数:
1.想使用成熟的c语言函数模块时
2.想使用以c语言声明的接口时,例如Unix的系统调用等
3.和面向对象没有关系,用于数学,计算等时
4.类定义时
5.对速度有较高要求时(如果将系统中那些需要被反复调用上万甚至上百万次的功能改成函数调用,速度就会快很多,而除此以外的绝大部分则都没必要改成函数调用的形式)
//类的实现文件中定义的函数不可以直接使用类中定义的实例变量和self变量,但可以把这些作为参数传递给函数。
静态变量的定义:
静态变量的生命周期为从程序的执行开始到结束,无论生成了多少个对象,都只有一个静态变量存在,也就是说多个对象会共享同一个静态变量。
#import和#include的基本功能一样,稍有不同的是#import不存在嵌套引用的问题,因为OC中#import内置了判断同一个文件是否已被引入的功能。