我的iOS学习历程 - OC第二天
来源:互联网 发布:mac如何下载b站视频 编辑:程序博客网 时间:2024/05/21 22:58
今天主要讲的是set,get方法,description自定义拼接还有复合
复合的在文件里有一个经典例子
@interface Person :NSObject
1.实例变量可见度
默认是受保护的只能是本类和子类去使用(一般使用)
@public公开的可以在类的外面进行使用
@private私有的只能是本类来使用
可以有三种可见度
@protected受保护的 NSString *_name;@public NSString *_gander;@private NSInteger _age;}
2.方法名
首先把方法类型删掉再删掉返回值类型还删参数类型和后面的参数名删完就是这个方法的方法名
注意:冒号是标识有参数不能删掉
<span style="font-size:18px;">- (instancetype)initWithName:(NSString *)name gander:(NSString *)gander age:(NSInteger)age;</span>
声明一个类方法
+(void)sayHi;
需求:便携方法取出实例变量name的值
- (NSString *)name;// getter方法
需求:更改实例变量name的值
</pre></p><pre name="code" class="objc"><span style="font-size:18px;">- (void)setName:(NSString *)name;// setter方法每个实例变量都需要进行取值赋值方法的声明实现- (NSString *)gander;- (void)setGander:(NSString *)gander;- (NSInteger)age;- (void)setAge:(NSInteger)age;-(void)setNameGander:(NSString *)name : (NSString *)gander;- (NSString *)description;</span>
@end
#import"Person.h"
@implementation Person
<span style="font-size:18px;">-(instancetype)initWithName:(NSString *)name gander:(NSString *)gander age:(NSInteger)age{ _name = name; _gander = gander; _age = age; returnself;}</span>
1.声明一个类方法
类方法是直接使用类名去调用这时是没有对象创建出来的实例变量是依托与对象而存在
对象都没有就不能使用实例变量
注:类方法中不能直接使用实例变量(思考如何在类方法中使用实例变量)
+(void)sayHi{NSLog(@"我是Person的类方法");NSLog(@"%@",_name);}
需求:便携方法取出实例变量name的值
-(NSString *)name{ return_name;}
需求:更改实例变量name的值
- (void)setName:(NSString *)name{ _name = name;}- (NSString *)gander{ return_gander;}- (void)setGander:(NSString *)gander{ _gander = gander;}- (NSInteger)age{ return_age;}- (void)setAge:(NSInteger)age{ _age = age;}-(void)setNameGander:(NSString *)name :(NSString *)gander{ _name = name; _gander = gander;}
直接用%@打印对象的时候
实际上是调用了父类中的方法
3.如果想按自己的意愿输出信息的话需要重写父类的方法
-(NSString *)description{ // 格式拼接字符串 NSString *str = [NSStringstringWithFormat:@"姓名:%@性格:%@ 年龄:%ld",_name,_gander, _age]; return str;}
#import<Foundation/Foundation.h>
#import"Person.h"
#import"MobilePhone.h"
int main(int argc,const char * argv[]) { // 调用类方法[Person sayHi];Person *p = [[Person alloc]initWithName:@"周杰伦" gander:@"男" age:18];NSString *_name = [p name];NSLog(@"%@",_name);[p setName:@"王龙"];NSLog(@"%@",[p name]);[p setNameGander:@"jay" :@"男"];NSLog(@"%@ %@",[p name],[p gander]);NSLog(@"%@",p);MobilePhone *p2 = [[MobilePhonealloc]initWithType:@"iPhone"color:@"灰色"system:@"ios9.1"];NSLog(@"%@",p2);
0 0
- 我的iOS学习历程 - OC第二天
- 我的iOS学习历程 - OC第四天
- 我的iOS学习历程 - OC第六天
- 我的iOS学习历程 - OC第十天
- 我的iOS学习历程 - OC第一天
- 我的iOS学习历程 - OC第三天
- 我的iOS学习历程 - OC第五天
- 我的iOS学习历程 - OC第七天
- 我的iOS学习历程 - OC第八天
- 我的iOS学习历程 - OC第九天
- 我的iOS学习历程 - UITextField UIButton
- 我的iOS学习历程 - 自定义视图
- 我的iOS学习历程 - MVC模式
- 我的iOS学习历程 - TargetAction
- 我的iOS学习历程 - 手势
- 我的iOS学习历程 - UISegmentedControl
- 我的iOS学习历程 - UITabBarViewController
- 我的iOS学习历程 - UICollection详解
- HDU-1029 Ignatius and the Princess IV
- Java-Spring-WebService最基础的配置示例
- java内存分配和String类型的深度解析
- like语句‘%%'
- dubbo 学习(4) 集群容错模式和负载均衡模式
- 我的iOS学习历程 - OC第二天
- 博弈论-囚徒困境与重复囚徒困境的启示
- 机器人探索苹果
- 信号和 TIME_WAIT 对大并发服务器的影响
- Android View 相关
- c++单例模式
- 当Httpclient遇到线程池(记一次爬虫经历)
- fs4412开发板学习笔记(二)
- 一段代码,const,readonly,static的区别