首页 > 其他分享 >[第二篇]object c中的self 和点语法 与成员变量声明规范

[第二篇]object c中的self 和点语法 与成员变量声明规范

时间:2022-11-24 11:36:22浏览次数:41  
标签:int Teacher self object setAge age 第二篇 teacher


  1. ios支持​​.​​设置语法,但是含义是调用的方法,但是对于java而言这明明叫成员变量直接赋值.
  2. ​person.age=10​​​实际上调用的是​​[xxx setAge:10]​
  3. ​self.age​​​和​​[self age]​​​调用的依然是​​setAge()​​​或​​getAge()​​​的方法,而不是直接访问成员变量,也就是说访问成员变量不需要加上​​self​
  4. 据说建议用​​_​​​开头代表成员变量,以避免冲突,安卓一般是​​m​​​开头,但是对于​​model​​都没有加任何前缀的.

撸代码

声明文件

//
// Teacher.h
// 第一个oc程序
//
// Created by aaa on 2018/10/6.
// Copyright © 2018年 cn.qssq666. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface Teacher : NSObject
{
int _age;
long _birthday;

}
-(void)setAge:(int) age;// 相对于java的setAge(int age);
-(int)age;//getAge();

-(long)getBirthdayxx;
@end

实现文件

//
// Teacher.m
// 第一个oc程序
//
// Created by aaa on 2018/10/6.
// Copyright © 2018年 cn.qssq666. All rights reserved.
//

#import "Teacher.h"

@implementation Teacher //实现文件不需要用大括号包裹起来.
-(void)setAge:(int)age{
_age=age;
// self.age=age;//死循环 因为.语法实际上就是调用setAGE
}
// (void)setAge:(int) age{
// _age=age;
// }
// 相对于java的setAge(int age);
-(int)age{
// return self.age;//调用的就是 getAge()方法,也就是本方法,也是死循环.
// return [self age];//也是死循环,调用的依然是方法.
return _age;
}//getAge();

-(long)getBirthdayxx{
return [self age]+30;
}
@end

调用逻辑

Teacher *teacher=   [ [Teacher alloc] init];
teacher.age=30;
[teacher setAge:teacher.age+10];
NSLog(@"teacher age %d , age %d ,birthday %ld:",teacher.age ,[teacher age],[teacher getBirthdayxx]);

学习吐槽

依然不习惯,ios,感觉最奇葩的 原因是封闭,无法用window开发,太封闭也就算了,导致很多优点都没有,甚至开发工具也很难用,行尾行首快捷键 其中行首没有移动到代码前面,而是最最前面,其它开发工具此快捷键可是没有这个毛病的.

标签:int,Teacher,self,object,setAge,age,第二篇,teacher
From: https://blog.51cto.com/u_15458814/5882962

相关文章