黑马程序员——self使用
2015-08-11 22:26
417 查看
------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
1.设计一个类,让狗先叫再跑
输出结果:汪汪汪
跑跑跑
这样在-(void)run的实现中有语句重复,所以不好
-(void)run的实现可改为:
{
[self bark];
NSLog(@"跑跑跑");
}
这样输出的结果为:汪汪汪
跑跑跑
2.self使用注意
输出结果:调用了+test方法
调用了+test方法
调用了+test方法
.............
(死循环)
3)把haha的实现写为
这样写+(void)haha2不对:
[self haha1];先来到类方法,因为是+(void)haha2调用的,所以这里的self代表类,所以会从中
找+haha1,找不到,所以运行时会报错。
[self haha3];同理,haha3是函数,不依赖于对象存在,所以调用函数时只用写:hah3();就可以
中括号[]只是调用对象方法和类方法时才用。
3.self的用途:
1>概念:指向当前对象(方法调用者)
2>在对象方法中,可利用“self->成员变量名”访问当前对象内部的成员变量
3>[self 方法名];可调用其他对象方法\类方法
4>self出现在对象方法中,self就代表对象
5>self出现在类方法中,self就代表类
1.设计一个类,让狗先叫再跑
#inport<Foundation/Foundation.h> //声明 @interface Dog :NSObject -(void)bark; -(void)run; @end @implementation Dog //方法的实现 -(void)bark { NSLog(@"汪汪汪"); } -(void)run { NSLog(@"汪汪汪"); NSLog(@"跑跑跑"); } @end int main() { Dog *d = [Dog new]; [p run]; return 0; }
输出结果:汪汪汪
跑跑跑
这样在-(void)run的实现中有语句重复,所以不好
-(void)run的实现可改为:
{
[self bark];
NSLog(@"跑跑跑");
}
这样输出的结果为:汪汪汪
跑跑跑
2.self使用注意
#inport<Foundation/Foundation.h> //声明 @interface Person :NSObject +(void)test; -(void)test; -(void)haha1; +(void)haha2; int haha3(); @end @implementation Person //方法的实现 -(void)test { NSLog(@"调用了-test方法"); [self test]; } +(void)test { NSLog(@"调用了+test方法"); [self test]; } @end 1) int main() { Person *p = [Person new]; [p test]; return 0; } 输出结果:调用了-test方法 调用了-test方法 调用了-test方法 ............. (死循环) 2) int main() { [Person test]; return 0; }
输出结果:调用了+test方法
调用了+test方法
调用了+test方法
.............
(死循环)
3)把haha的实现写为
-(void)haha1 { NSLog(@"haha1"); } +(void)haha2 { [self haha1]; [self haha3]; }
这样写+(void)haha2不对:
[self haha1];先来到类方法,因为是+(void)haha2调用的,所以这里的self代表类,所以会从中
找+haha1,找不到,所以运行时会报错。
[self haha3];同理,haha3是函数,不依赖于对象存在,所以调用函数时只用写:hah3();就可以
中括号[]只是调用对象方法和类方法时才用。
3.self的用途:
1>概念:指向当前对象(方法调用者)
2>在对象方法中,可利用“self->成员变量名”访问当前对象内部的成员变量
3>[self 方法名];可调用其他对象方法\类方法
4>self出现在对象方法中,self就代表对象
5>self出现在类方法中,self就代表类
相关文章推荐
- 黑马程序员——Java基础---常用类,基本类型包装类,正则表达式
- 【黑马程序员】protocol的概念及基本使用
- 黑马程序员——Java基础---IO、File类、Properties类、打印流、序列流(合并流)
- 黑马程序员——类方法与self关键字
- 码农成长篇——新员工怎样快速脱颖而出
- 黑马程序员 oc随记 协议与代理模式
- 程序员扩大影响力之如何写博客
- 黑马程序员
- 黑马程序员——弱语法与类方法
- 黑马程序员——封装
- 高效程序员的狂暴之路
- 高效程序员的狂暴之路
- 高效程序员的狂暴之路
- php常见的面试题目
- 新浪php面试题
- 黑马程序员——详细的类的声明和实现
- 静态链接的一点小总结(一) 《程序员的自我修养》·笔记
- 黑马程序员——java复习总结——面向对象
- 黑马程序员——对象与函数
- C#基础系列——再也不用担心面试官问我“事件”了