构造方法

1.对象创建的原理

new的拆分两部曲

Person *p = [Person alloc]; 分配内存(+alloc)

Person *p = [p init]; 初始化(-init)

合并: Person *p = [[Person alloc] init];

2.init方法的重写

- (void) init {
if(self = [super init]) {
_age = ;//想在对象创建完毕后 成员变量马上就有一些默认的值
}
return self;
}

3.自定义构造方法

/** 自定义构造方法一 **/
- (id) initWithAge : (int) age {
if(self = [super init]) {
_age = age;
}
return self;
} /** 自定义构造方法二 **/
- (id) initWithAge : (int) age andNo : (int) no {
if(self = [super init]) {
_age = age;
_no = no;
}
return self
} /** 注意 **/
//返回值是id类型
//方法名都以init开头

分类

Category

可以给一个类扩充一些方法(不修改原来的代码)

#import "Person.h"

@interface Person (Hy)
- (void) show;
@end /** 声明 **/
//@interface 类名 (分类名称)
//@end
#import "Person+Hy.h"

@implementation Person (Hy)
- (void) show {
NSLog(@"哈哈哈~~!");
}
@end /** 实现 **/
//@implementation 类名 (分类名称)
//@end

使用注意:

分类只能增加方法 不能增加成员变量

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

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

方法调用的优先级: 分类(最后参与编译的分类优先) ---> 原来类 ---> 父类

类的深入研究

类本身也是一个对象 是Class类型的对象 简称类对象

Person *p = [[Person alloc] init];

Class c = [p class];

[c test];//c是可以调用 Person里面的类方法

类的加载和初始化:

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

当第一次使用某个类时 就会调用当前类的+initialize方法

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

最新文章

  1. 锋利的jQuery--表单等(读书笔记三)
  2. 摇钱树运营小工具UI设计.vsd
  3. INSERT IGNORE 与INSERT INTO的区别
  4. 【转】iOS开发--一步步教你彻底学会『iOS应用间相互跳转』
  5. postgresql数据库的数据导出
  6. Gradle 用法总结
  7. hdu 4497 GCD and LCM(2013 ACM-ICPC吉林通化全国邀请赛——题目重现)
  8. 使用Emmet加速Web前端开发
  9. html5 安卓拨打电话 发短信
  10. minicom在虚拟机(linux)安装配置过程
  11. wc--Linux
  12. DriverStudio 和 WDF驱动 通过GUID获取设备句柄的差别
  13. 集群通信组件tribes之集群的平行通信
  14. 附实例!图解React的生命周期及执行顺序
  15. 萌新的IDEA_web开发笔记(未完)
  16. Domain Adaptation (1)选题讲解
  17. 解密gzip压缩的网页数据流(转)
  18. spring-AOP框架(基于AspectJ注解配置AOP)
  19. python模块之imghdr(识别不同格式的图片文件)
  20. BZOJ3123:[SDOI2013]森林——题解

热门文章

  1. Visual C++中MFC消息的分类
  2. Jmeter--thrift接口压测
  3. Vue教程:过滤器filters(五)
  4. [SharePoint]如何去掉欢迎导航的信息?
  5. 大专生自学iOS到找到工作的前前后后
  6. iOS之safari调试iOS app web页面
  7. vue 新属性学习
  8. 06 day小数据池
  9. 浅析BFC布局的概念以及作用
  10. Java学习笔记十七:Java中static使用方法