OC里Self的应用
发布日期:2021-06-30 22:37:23
浏览次数:3
分类:技术文章
本文共 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2024年04月15日 19时34分59秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
整合事务及测试
2019-05-01
thymeleaf体验
2019-05-01
架构的演变
2019-05-01
rpc和http
2019-05-01
http客户端
2019-05-01
初始springCloud
2019-05-01
搭建服务提供方
2019-05-01
搭建服务调用方
2019-05-01
搭建eureka注册中心
2019-05-01
改造微服务注册到eureka注册中心
2019-05-01
改造消费方解决地址硬编码问题
2019-05-01
高可用的eureka
2019-05-01
eureka详解
2019-05-01
ribbon负载均衡
2019-05-01
hystrix简介
2019-05-01
IDEA 项目结构旁边出现 0%classes,0% lines covered
2019-05-01
hystrix服务降级
2019-05-01
hystrix之熔断
2019-05-01
feign的玩法
2019-05-01
zuul简介
2019-05-01