---------- CornerFly真诚期待与您交流! ----------
一、OC的弱语法
1、概述
OC的编译器不报错,但是运行的时候,出现报错或者闪退,这就是OC的弱语法。
2、常见错误
1>error : instance variable “wheel” is protected.
*默认情况下,成员变量是被保护的,可以在定义成员变量前加上@protected ,不过一般尽量不要使用。还可以给成员变量”wheel”设置set和get方法来访问成员变量。
2>unrecognized selector sent to instance.
*给成员变量发送了一个不能识别的消息,也就是成员变量调用了一个不能识别的方法。
3、代码示例
#import
@interface Person : NSObject
- (void)test;
@end
@implementation Person
- (void)test
{
NSLog(@"哈哈");
}
@end
// 闪退:一旦运行过程中出错就会闪退
int main()
{
Person *p = [Person new];
// OC在运行过程中才会检测对象有没有实现相应的方法,编译不会检测
[p test];
return 0;
}
二、类方法
1.基本概念
直接可以用类名来执行的方法(类本身会在内存中占据存储空间,里面有类\对象方法列表)。
三、类方法和对象方法的区别
1、对象方法
*以减号-开头
*只能让对象调用,没有对象,这个方法根本不可能被执行
*对象方法能访问实例变量(成员变量)
2、类方法
*以加号+开头
*只能用类名调用,对象不能调用
*类方法中不能访问实例变量(成员变量)
*使用场合:当不需要访问成员变量的时候,尽量用类方法
注意:类方法和对象方法可以同名
四、self
1、用途
1>指向了方向调用者,代表着当前对象。
2>可以利用“self –>成员变量名”访问当前对象内部的成员变量
3>[self 方法名]可以调用其他对象方法\类方法。
2、注意点
1>谁调用了当前方法,self就代表谁。
*self出现在对象方法中,self就代表对象
*self出现在类方法中,self就代表类
2>在对象方法利用“self ->成员变量名”访问当前对象内部的成员变量。