OC --(2)-- 基础知识分析对象,创建类,自定义初始化方法
1.分析对象 2 创建类(实例变量 方法) 3.创建对象 调用方法 结局问题
@property int age;//相当于声明getter setter 方法;
@synthesize age ; //相当于实现getter setter 方法;
@synthesize age=_age ;//会去访问_age;
实例变量的可见度;
1.@public; 公共的 在类的内部和外部都可以进行访问(破坏了面向的对象的封装特性) 2.@private 私有的,只有当前类才能访问,其子类不能直接访问(破坏了继承特性)
3.@protected 受保护的,只有当前类及其子类才能访问(默认的)
#include 和 #import 都是导入文件 但是#import 比#include高级 因为#import 会解决重复导入问题
重复导入: 多次导入相同的文件内容
循环导入问题 :两个文件互相导入对方,导致互相的类型不能够识别
解决循环导入问题:在其中一个文件 .h中使用@class ,并在对应的.m中使用#import 导入头文件
@class Woman; //@class xxx 假设xxx就是一个类
点语法
Person *per=[[Person alloc] initWithName:@"hanjinpeng" sex:@"nan" age:22];
per.name=@"lisi”;//等效于[per setName];
NSLog(@"%@",per.name);//等效于 [per name];
2. description 方法 当使用%@打印一个对象时 会调用这个方法
-(NSString*)description{
NSString *str=[NSString stringWithFormat:@“age is %i and no is %i”,self.age,_no];
return str;//格式化打印输出
}
带参的方法
-(NSString*) setValue: (NSString*)name;
setName:sex:age:weight: 方法名
去掉 -或者+ 去掉返回值类型及(),去掉每一个参数及其参数类型 剩余的部分就是方法名;
OC中方法的形式
1.+ - 开头 区分当前的方法是类方法还是实例方法 +不能调用实例变量
2. () 内部写返回值类型
3. 书写对于每一个参数的说明 " : "后面书写 参数的类型 和 参数名 如果没有参数就不写 " : "
-(void)setType:(NSString*)type;
-(NSString*)type;
settet以set开头加上实例变量 (去掉下划线 首字母大写) : (参数类型)参数名
getter : 返回值为实例变量的类型 方法名为实例变量名去掉下划线
//自定义初始化方法
//形式:init开头+with 'W'大写 +各个参数