class="brush:objc;gutter:true;">Objective--C 一 关键字 self 相当于java中的this,但是又有不同 它即可一代替对象,也可以代替类, 也就是说它既可以用在静态方法中又可以用在动态方法中。 super 相当于父类,可以调用父类的函数 nil 相当于java中null,空指针 #pragma 注释代码用的,用它注释之后,以后你要想找到这段代码可以一下定位到该段代码,一般在一些回调方法、代理方法中常用它注释 SEL 函数指针地址 @select 获取类的方法在内存中的指针地址 @protocol 协议 相当于 java中的抽血类 二 函数 description 相当于java中ToString respondsToSelector 判断是否实现了某方法 三 规则 1 函数的作用域 A 将方法写在.m中,为私有;写在.h为公有 B 在java 中public private 可以修饰函数 变量,但是好像OC中只能用来修饰变量,那么OC区分函数的公有与私有,就看在.h文件有没有定义 2 description A 位置 在.m 文件中 B 返回格式为 [NString stringwithFormat:@"",...] C 估计父类中已有该函数,我们就是复写,用于打印测试 D NSLog中的格式符是%@,当使用%@输出一个对象时,ObjC会调用个对象的description返回对应的信息进行输出,默认情况下如果我们不重写description方法,输出内容是类名和地址 E 需要强调的是千万不要在description中打印输出self,因为当输出self时会调用该对象的description方法,如此一来就会造成死循环。 3 respondsToSelector 1 实例方法\类方法 2 判断该类是否实现了某方法 3 格式 Bool buer = [类\对象 repondsToSe]ector:@select(测试方法名:); 4 protocol 协议 A 在ObjC中使用@protocol定义一组方法规范,实现此协议的类必须实现对应的方法。熟悉面向对象的童鞋都知道接口本身是对象行为描述的协议规范。也就是说在ObjC中@protocol和其他语言的接口定义是类似的,只是在ObjC中interface关键字已经用于定义类了,因此它不会再像C#、Java中使用interface定义接口了 B 一个协议可以扩展自另一个协议,例如上面AnimalDelegate就扩展自NSObject,如果需要扩展多个协议中间使用逗号分隔; 3 和其他高级语言中接口不同的是协议中定义的方法不一定是必须实现的,我们可以通过关键字进行@required和@optional进行设置,如果不设置则默认是@required(注意ObjC是弱语法,即使不实现必选方法编译运行也不会报错); C 协议通过<>进行实现,一个类可以同时实现多个协议,中间通过逗号分隔; D 协议的实现只能在类的声明上,不能放到类的实现上 E 协议中不能定义属性、成员变量等,只能定义方法; 4 法则 1 继承 2 封装