objective-C基本知识
预编译指令
1.自己写的头文件最好用双引号,而系统自带的可以用尖括号。
*************************************************
点语法
p.age= 10;
1.不是访问age成员变量,而是调用其方法
2.其他的很多编程语言都有点语法,为了其他编程的程序员可以快速掌握oc,从而添加了点语法
3.编译器在遇到点语法的时候,会自动将之转化为:[p setAge:10];
4.故点语法的本质还是调用方法,而不是访问成员变量(访问成员变量就一种:通过箭头)。
*******************************************
isa指针
在OC中,对于每个实例对象,其中都会有一个isa指针,isa= is a,同一个类创建出来的对象的isa指针是一样的。
它的作用是告诉对象它是哪个类以及它的父类是谁。
这个指针只有在程序运行的时候才看得见(在调试模式的具体对象处能够找到)。
*******************************************
import和include的区别:
import关键字会对重复引用的文件进行自动省略,而include不会。所以,import能够避免碰到“常见但定位麻烦的重复引用头文件错误”。
在OC中,我们一般使用import来引用其他头文件。
**********************************
关键字
“@”符号:在OC中表示关键字。
@interface:类声明的开始。
@implementation:类实现的开始。
@end:类声明或者类实现的结束。
夹在@interface和@end之间的即为类的声明,而夹在@implementation和@end之间的即为类的实现。
**************************
在OC中,self表示对象自己,它和C++中的this含义相近。super表示父类对象。
************************
继承和重写
类库之间的继承:
cocoa的框架中,大部分的类库都是继承自NSObject,而类库之间还存在各种各样的父子关系,比如所有的控件类(UIControl、NSControl)都是继承自响应者类(UIResponder、NSResponder);所有的多功能视图(tableview/scrollview/webview等)都是继承自视图类(UIView、NSView)等。如果我们想找类库的继承关系,我们可以在开发文档中找到。
************************
分类(Category)
************************
协议(Protocols)和代理(Delegation)
1.代理的引入真正意义上完全实现MVC的程序结构框架。
2.协议是对类的实现进行规约的一套标准,可以保证多个承诺实现协议的类的接口一致性。