黑马程序员_object c学习日记②_@property和@synthesize、构造方法、分类及类对象

--------------------------------------  android培训 java培训 ios培训期待与您交流! ---------------------------------

@property:可以自动生成某个成员变量的setter和getter的声明。只能用在interface中。

@property int age;与下面两句等价

-       (void)setAge:(int)age;

-       (void)age;

 

@synthesize:自动生成特定的setter和getter的实现,并访问特定的成员变量。只能用在implementation中。

@synthesize age = _age; // 如果没有_age变量会自动生成,属性是private

// @synthesize age;这语句默认访问的是age变量

 

Xcode 4.4版本后@synthesize age = _age;这一句可以省略,只写@propertyint age;就有_age变量的声明以及它的setter和getter的声明和实现。

 

关键字id:万能指针,能指向/操作任何OC对象,id == NSObject *

 

构造方法:用来初始化对象的方法,是对象方法

重写构造方法的目的:为了让对象创建出来,成员变量就会有一定的值

完整的创建一个对象:

1、        分配存储空间;+alloc

初始化;-init

重写-init函数:

1、        一定要调用super的init方法:初始化父类中声明的成员变量和其他属性;

self = [super init];

2、        如果对象初始化成功,才有必要进行接下来的初始化

if (self) {}

3、        返回一个已经初始化完毕的对象

return self;

自定义构造方法规范:

1、        一定是对象方法

2、        返回值一般是以id类型

3、        方法名一般以init开头

-      (void)initWithName:(NSString*)name;

 

category:分类,可以给某个类扩充一些方法

作用:在不改变原来类内容的基础上,可以为类增加一些方法

注意:①只能增加方法,不能增加成员变量

②分类方法实现中可以访问原来类的成员变量

③分类可以重新实现原来类中的方法,但是会覆盖原来的方法,会导致原来的方法没法再使用

④函数优先到分类找,然后再到原来类中找,最后到父类中找,即:分类(最后参与编译的分类优先)à原来类à父类

// 声明

@interface 类名 (分类名称)

@end

// 实现

@implementation 类名 (分类名称)

@end

 

快捷键:command + / 注释/取消注释

 

类的本质:类本身也是一个对象,是个class类型的对象。

+(void)load; // 当程序启动的时候,就会加载一次项目中所有的类和分类,而且加载后就会调用每个类和分类的+load方法。只会调用一次。

+(void)initialize; // 当第一次使用某个类的时候就会调用+initialize方法

先加载父类,再加载子类(先调用父类的+load方法,再调用子类的+load方法)

先初始化父类,再初始化子类(先调用父类的+initialize方法,再调用子类的+initialize方法)

 

NSLog(@”%@”, p); // p 是对象

默认情况下,利用NSLog和%@输出对象时,结果是:<类名:内存地址>

①  会调用对象p的-description方法;

②  拿到-description方法的返回值(NSString *)显示到屏幕上;

③  -description方法默认返回的是”类名+内存地址”

 

NSLog(@”%@”, c); // c 是类对象

①  会调用对象c的+description方法;

②  拿到+description方法的返回值(NSString *)显示到屏幕上;

③  +description方法默认返回的是”类名”

 

NSLog输出c语言字符串时,无法使用中文


-------------------------------------- android培训java培训ios培训期待与您交流! ---------------------------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值