------ <a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a> 期待与您交流! -------
方法的分类
在oc中方法分为类方法和对象方法。以"-"号开头的方法,称为对象方法; 以"+"号开头的方法,称为类方法。
oc中的方法功能与c语言中的函数基本等同。它们两者的区别在于:
方法:
(1)方法的实现只能写在@implementation...@end中,方法的声明只能写在@interface...@end中间
(2)对象方法都以-号开头,类方法都以+号开头
(3)对象方法只能由对象来调用,类方法只能由类来调用,不能当做函数一样调用
(4)函数属于整个文件,可以写在文件中的任何位置,包括@implementation...@end中,但写在@interface...@end会无法识别,函数的声明可以再main函数内部也可以在main函数外部。
(5)对象方法归类\对象所有
函数:
(1)所有的函数都是平行的
(2)函数不存在隶属关系
(3)使用的时候可以直接调用
(4)不可以访问对象中的成员变量
方法的声明
-(返回值类型) 方法名; 对象方法的无参声明
+(返回值类型) 方法名; 类方法的无参声明
-(返回值类型) 方法名1:(参数的类型1)参数的名称1 and方法名2: (参数的类型2)参数的名称2;------带参数的对象方法的声明
+(返回值类型) 方法名1:(参数的类型1)参数的名称1 and方法名2: (参数的类型2)参数的名称2;------带参数的类方法的声明
方法的实现
-(返回值类型) 方法名{} 对象方法的无参实现
+(返回值类型) 方法名{} 类方法的无参实现
-(返回值类型) 方法名1{(参数的类型1)参数的名称1 and方法名2: (参数的类型2)参数的名称2};------带参数的对象方法的实现
+(返回值类型) 方法名1{(参数的类型1)参数的名称1 and方法名2: (参数的类型2)参数的名称2};------带参数的类方法的实现
方法的调用(有参数的在方法名后边加上":"加上参数)
[对象名 对象方法名]; 对象方法的调用
[类名 类方法名]; 类方法的调用
常见错误汇总
(1)@interface...@end和@implementation...@end不能嵌套包含;
(2)只有声明没有实现;
(3)漏写@end;
(4)把声明写在{}里面了;
(5)方法不能像函数那样调用.
对象方法和类方法的关系
注:对象方法可以访问实例变量,类方法不可以访问实例变量
类方法通过类名访问,可以不用创建对象
1、对象方法中可以调用其它的对象方法:
1)在当前的对象方法中创建一个对象,用这个对象调用其它的对象方法
2)在当前对象方法中可以使用self [self 其它的对象方法名]
3)给当前的对象方法传递一个参数,该参数是一个对象,可以使用传递过来的对象条用其它的对象方法
2、在类方法中可以调用其它的类方法
1)在当前类方法中可以直接使用本类类名(或者其它类名)调用其它的类方法
2)在当前类方法中可以使用self [self 类方法名]
3)类方法不能调用自身,会造成无限循环
3、在类方法中可以条用对象方法
1)给当前类方法传递一个参数,该参数是一个对象,通过传递过来的的对象调用对象方法
2)在当前类方法中创建一个新的对象,通过该对象条用对象方法