我的iOS学习历程 - OC第二天
2015-10-27 23:08
363 查看
今天主要讲的是set,get方法,description自定义拼接还有复合
复合的在文件里有一个经典例子
@interface Person :NSObject
1.实例变量可见度
默认是受保护的只能是本类和子类去使用(一般使用)
@public公开的可以在类的外面进行使用
@private私有的只能是本类来使用
可以有三种可见度
2.方法名
首先把方法类型删掉再删掉返回值类型还删参数类型和后面的参数名删完就是这个方法的方法名
注意:冒号是标识有参数不能删掉
声明一个类方法
需求:便携方法取出实例变量name的值
需求:更改实例变量name的值
@end
#import"Person.h"
@implementation Person
1.声明一个类方法
类方法是直接使用类名去调用这时是没有对象创建出来的实例变量是依托与对象而存在
对象都没有就不能使用实例变量
注:类方法中不能直接使用实例变量(思考如何在类方法中使用实例变量)
需求:便携方法取出实例变量name的值
需求:更改实例变量name的值
直接用%@打印对象的时候
实际上是调用了父类中的方法
3.如果想按自己的意愿输出信息的话需要重写父类的方法
#import<Foundation/Foundation.h>
#import"Person.h"
#import"MobilePhone.h"
复合的在文件里有一个经典例子
@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);
相关文章推荐
- 我的iOS学习历程 - OC第二天
- iOS中copy属性与setter赋值
- iOS程序模块化设计
- IOS开发基础知识--碎片26
- 【iOS】创建真机调试证书
- iOS中文网址路径转换URLEncode
- iOS轻量级多线程实现
- 项目中的常见文件
- IOS --Xcode6单元测试
- iOS设计模式 - 迭代器
- iOS 之 protocol的相关问题
- iOS开发之如何做一个可上下左右滑动的页面
- IOS开发笔记16-类与对象
- ios 常用的宏定义
- ios教程(java编程思想等级)
- IOS开发笔记15-OC基础语法
- IOS tabBarController 嵌套navigationController 实现多个界面的跳转
- iOS开发-Xcode升级后插件失效解决办法
- iOS NSRunLoop跟NSTimer的问题
- 斯坦福大学公开课 iOS应用开发教程学习笔记(第九课)Table Views