- ios支持
.
设置语法,但是含义是调用的方法,但是对于java而言这明明叫成员变量直接赋值. -
person.age=10
实际上调用的是[xxx setAge:10]
-
self.age
和[self age]
调用的依然是setAge()
或getAge()
的方法,而不是直接访问成员变量,也就是说访问成员变量不需要加上self
- 据说建议用
_
开头代表成员变量,以避免冲突,安卓一般是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