---------------------- <a href="http://www.itheima.com"target="blank">iOS开发</a>、<a href="http://www.itheima.com"target="blank">iOS培训</a>、期待与您交流! ----------------------
一、self关键字
1、成员变量和局部变量同名:
当成员变量和局部变量同名时,采取就近原则,访问的是局部变量。
用self访问成员变量,区分同名的局部变量。
@interface Test : NSObject
{
int number;
}
- (void)show;
@end
@implementation Test
- (void)show
{
int number = 20;
NSLog(@"%d", age); // 打印的是局部变量 值为20
NSLog(@"%d", self->age); // 打印的是成员变量 值为0
}
@end
2、使用细节
a、出现的位置:所有的OC方法中(对象方法\类方法),不能出现在函数中。
b、作用:用 "self->成员变量名" 访问当前方法调用的成员变量,使用 "[self 方法名];" 来调用方法(对象方法\类方法)。
3、注意
在方法中不能使用self关键字调用当前方法,否则会造成死循环。
- (void)show
{
[self show];
}
二、super关键字
1、作用:调用父类的对象方法和类方法
三、细节
使用类名调用的是类的方法、使用对象名调用的是对象的方法
#import <Foundation/Foundation.h>
@interface Test : NSObject
+ (void)showName;
+ (void)show;
- (void)showName;
- (void)show;
@end
@implementation Test
+ (void)showName
{
NSLog(@"类方法showName");
}
+ (void)show
{
NSLog(@"类方法show");
[self showName];
}
- (void)showName
{
NSLog(@"对象方法showName");
}
- (void)show
{
NSLog(@"对象方法show");
[self showName];
}
@end
int main()
{
[Test show];
// 类方法show
// 类方法showName
[[Test new] show];
// 对象方法show
// 对象方法showName
return 0;
}
---------------------- <a href="http://www.itheima.com"target="blank">iOS开发</a>、<a href="http://www.itheima.com"target="blank">iOS培训</a>、期待与您交流! ----------------------