OC里Self的应用
发布日期:2021-06-30 22:37:23
浏览次数:2
分类:技术文章
本文共 1835 字,大约阅读时间需要 6 分钟。
一、 Self:相当于java里的this指针
1.应用场景:
1)用在类方法里 2)用在对象方法里 3)访问成员变量 4)Self在OC的内存管理特殊使用2.在对象方法里的使用:指定的是当前对象
1)我们先创建一个Person类,里面有两个方法不带参数的run 与带参数的eat 方法 然后调用run 方法@interface Person :NSObject{}-(void) run;-(void) eat:(NSString *) footName;@end@implementation Person-(void) run{ @NSLog(@"somebody is running");}-(void) eat:(NSString *) footName{ @NSLog(@"somebody is eatting", footName); //在此使用self [self run];}@end
2)在主类里使用Person类
首先的引入头文件,然后在主函数里创建对象,调用eat方法就能实现调用run方法#import "person.h"int main(int argc, const char * argv[]){ @autoreleasepool { Person *p = [Person new]; [p eat]; } return 0;}
3.在类方法里的使用:指定的是当前类
1)我们先创建一个Person类,里面有两个方法不带参数的walk与带参数的take方法 然后调用walk方法@interface Person :NSObject{}+(void)walk;+(void)take:(NSString*) footName;@end@implementation Person+(void)walk{ NSLog(@"somebody is walking");}+(void)take:(NSString*) footName{ NSLog(@"somebody is taking %@", footName); [self walk];}@end
2)在主类里使用Person类
首先的引入头文件,然后在主函数里创建对象,调用eat方法就能实现调用run方法#import "person.h"int main(int argc, const char * argv[]){ @autoreleasepool { [Person take]; Person p= [Person new]; //打印类的地址 结果是两种都相同 NSLog(@"Person = %p",[Person class]); NSLog(@"Person = %p",[p class]); } return 0;}
4.Self修饰变量
1)我们先创建一个Person类,创建set与get方法@interface Person : NSObject{ @public int _weight;}-(void) setWeight:(int) weight;-(int) getWeight;@end@implementation Person//在此处使用self-(void) setWeight:(int) weight{ self->_weight = weight;}-(int) getWeight{ return self->_weight;}@end
2)在主类里使用Person类
#import "person.h"int main(int argc, const char * argv[]){ @autoreleasepool { Person p= [Person new]; [p setWeight:50]; int weight = [p getWeight]; NSLog(@"weight = %d",weight); } return 0;}
5.总结:
谁调用self就代表谁转载地址:https://lovoo.blog.csdn.net/article/details/51525937 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
表示我来过!
[***.240.166.169]2024年04月27日 17时58分57秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
老程序员“被嫌弃”
2019-05-01
神器:公众号如何从第一篇文章开始看
2019-05-01
查询亿级数据毫秒级返回!Elasticsearch 是如何做到的?
2019-05-01
FastAPI 构建 API 服务,究竟有多快?
2019-05-01
为什么Quora选择用Python语言?
2019-05-01
一劳永逸学编程的方法
2019-05-01
代码整洁之道-编写 Pythonic 代码
2019-05-01
100行python代码,轻松完成贪吃蛇小游戏
2019-05-01
破解百度网盘的Pandownload开发者被捕,让人唏嘘
2019-05-01
如何科学的刷 Leetcode
2019-05-01
雷军 1994 年写的代码,经典老古董~
2019-05-01
越老越值钱的数据产品经理
2019-05-01
霸榜 GitHub:去你丫的算法!
2019-05-01
害,反爬之ID混淆 hashids 不了解下吗?
2019-05-01
墙裂推荐这个能打怪升级的Python项目
2019-05-01
VScode编译并运行C/C++文件
2019-05-01
Linux推荐书籍从入门到进阶带你走上大牛之路(珍藏版)
2019-05-01
36.伪造目标不可达的ICMP数据包
2019-05-01
37.伪造参数错误的ICMP数据包
2019-05-01