objective-c语法细则
接口部分:@interface Song:NSObject/*继承的父类*/
{
;//变量定义
}
-(void) 方法;//声明
-(void))方法名称:(id)参数名称;//有输入参数的方
法声明
@end
实现部分:@implementation Song
-(viod){实现部分;}
@end
NSData和NSMutableData存储的是二进制数据,在文件操作,网络,以及核心图形图像中使用较广泛。NSData创建后不可以再修改,NSMutableData可以再次修改。
在接口文件中使用@property来标识属性(一般指实例变量);在实现文件中使用@synthesize标识所声明的属性,让系统自动生成设置方法和获取方法。
@property(属性列表) 实例变量
@try{}(用来标识需要检查的程序)->(如果发生异常,跳到)->@catch(NSException *){}(处理异常)->@finally{}(不管是否抛出异常,此处都会执行)
self:在实例方法中,代表的是类的实例;在类方法,代表的是类。
成员变量属于对象,只能在实例方法中使用
便利构造器:类方法,初始化和赋值
@synthesize name = _name;
表示name属性用来访问_name成员变量。
@property的作用是定义属性,声明getter,setter方法。(注意:属性不是变量)
@synthesize的作用是实现属性的,如getter,setter方法.
保护成员可以被继承
私有成员和看不见色隐式成员不能被继承
继承中方法调用的流程,自下而上
继承的特点
使用继承可以实现代码的服用,减少代码冗余
objective-c中一个类可以继承另一个类
被继承的类称为父类或超类(基类)
继承的类称为子类或派生类(孩子类)
子类可直接“拥有“父类中所有允许子类继承的属性和方法
子类可以改变父类中已有的方法,执行不同的代码实现
继承的关系是可传递的
子类除了可以调用父类的方法,也可以调用父类的父类的方法,也就是说继承可以确保某个父类型之下的所有类都会有父类型所持有的全部方法
单一继承性
objective-c不支持重继承
继承中的方法重写
编写子类时,某些方法(从父类继承过来)需要自己的代码实现
子类允许重写父类的方法,在调用子类对象的重写方法是,就会调用重写后的方法
父类中被子类所重写的方法则在调用子类方法时被忽略。
super关键字
如果在子类中 需要调用父类的功能,可以借助super关键字
子类中使用super发送消息时,实际上是告诉子类调用父类的方法
如果父类没有定义该方法,则继续在继承链上查找,直到找到为止
如果查到nsobject为止仍然未找到,则报错
self
self代表着当前方法的调用者
1 self可以出现在所有的方法中(对象方法和类方法),不能在函数中
2 self是一个指针,在每一个方法中都有一个self指针
3 self指向调用者。(谁调用它就指向谁)
4 可以使用self->成员变量 访问成员变量,可以使用[self 方法名]调用方法
1 @implementation Devastator 2 -(void)combination//组合 3 { 4 [self/*方法的调用者-Devastator的对象*/.forklift combination];//铲车组合 5 [_blender combination];//搅拌机组合 6 [_dumpTruck combination];//翻斗机组合 7 [_crane combination];//吊车组合 8 [_excavator combination];//挖土机组合 9 [_bulldozer combination];//推土机组合 10 } 11 12 @end
上面代码中的‘self’代表的是的‘Devastator’的对象,因为‘combination’方法是被‘Devastator’的对象调用的。