A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 沐小妖mavs 中级黑马   /  2015-12-5 22:43  /  885 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

构造方法
是一个对象在初始化的时候执行的方法
init才是真正的构造方法
new方法执行2个方法
+alloc:去给对象分配一个内存空间;
-init;初始化这个对象;

如果super init没有执行成功或正确执行,则无法返回一个正确的对象,那么此时会返回0(nil);

如果super init执行成功了,会返回一个指针,那个值赋值给self,则self是一个非0数
对象全部在堆区,指针都是在栈区
执行自定义赋值操作

构造方法的操作有两种:
1,重写。
优点:实现简单。不足:不能够根据不同对象赋不同的值,属性的值是固定的
2,自定义构造
优点:使用灵活,可以根据不同的对象给属性设定不同的值,不足:写法比较麻烦一些

要注意 用@property生成的属性是private,子类要使用就要在父类属性自己写上属性
3 ,子类继承父类自定义构造的写法
在自定义构造时,要调用父类的自定义构造,而不是NSObject的init。这样才能隔离父类的变化。而且,父类的属性可以保持私有化private

堆区内存空间需要手动回收
栈区内存空间需要自动回收
oc只有重写,没有重载
static修饰全局变量,只能在本文件内访问,如果修饰的是局部变量,只能在第一个使用的时候才会创建,后面再使用都是复用

构造方法必须以init开头,且第二个单词开始首字母大写
id指针动态调用方法时,点语法不适用,必须强转

1,类与对象
2,定义类中的方法与属性
3,定义有参数的方法
4,封装属性 set与get方法
5,self调用方法或属性
6,super调用父类方法
7,继承
8 ,多态
9,id指针
10,组合->把一个对象当做另一个类的属性
11 ,@property->功能1 生成属性 2生成get与set声明,实现set与get方法
12,属性的作用域
13,点语法
14,构造方法
15,NSString

Category
:把一个类分作多个部分
作用:
不该变原有的类,去给原来有的类添加功能(方法)

写法:
命名:原有的类名+分类名

声明:
@interface Person(分类名)
// 你要添加的功能......
@end

实现
@implementation Person(分类名)
// 实现你要添加的功能...
@end

好处:
1,可以把一个类分模块,便于协同开发,并优化类的结构
2,不该变类名,给类添加功能

注意的问题
1 分类不能写(添加)属性,只能写(添加)方法
2 分类中的方法不能与主类和其他分类重复,会覆盖其他类的方法
3 分类中可以直接用主类的属性,但是属性的权限要>=@protected
4. 不同分类中重写了同一个方法,那么哪个分类最后编译,则哪个分类的方法执行
5,主类永远在分类之前编译
编译顺序:父类->主类->分类(多个分类是可以调整顺序的)

分类的另一个用法:去给oc提供的类进行分类,添加额外的功能,如:NSString

3 个回复

倒序浏览
不错不错
回复 使用道具 举报
学习了,非常好!
回复 使用道具 举报
学习一下!mark
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马