今天我终于把黑马入学流程里的基础测试提交了,有一种如释重负的感觉。下一步就是OC的入学基础测试了,fight!fight!fight!
这几天主要任务是C语言基础测试,但是也夹杂这学了一些OC基础知识。主要学习了:
先复习下类的本质:其实类也是一个对象,对象都有类型,类对象本身是个class类型的对象
创建类对象的过程:
先利用class某某类对象,获取内存中的类对象
class(在class中的声明中已经包含*) c(变量名) = [类对象 class]-》这就是class类型的类对象
*一个类在内存中只有一个类对象
然后再利用类对象,创建类名类型的对象
类的加载过程:先加载父类再加载子类
~当程序启动时,系统就会加载所有的类和分类,加载后会调用每个类的和扥类的+load方法,只会调用一次。
~当第一次使用某个类时,就会调用当前类的+initialize类方法,相当于类的初始化。
+initialize的用途:监听类第一次使用时的情况或者可以做一些别的事情。
1.类的分类
作用:在不修改原来类的的代码,而给某一类扩充增加一些方法
格式:
@interface 类名(分类名称)
@end
@implementation 类名(分类名称)
@end
使用注意:
分类只能增加方法,不能增加成员变量;分类方法实现中可以访问原来类中声明的成员变量;分类可以从新实现原来的方法,但是会覆盖其方法,就会导致原来的方法没法使用。
2.description方法:description是NSLog里的一个方法,默认情况下利用NSLog和@输出对象时,输出结果是:《类名 内存地址》
当时description调用对象时:
~~会调用对象的description方法,然后拿到description方法的返回值,类型是(NSString *)显示在屏幕上:description方法默认的时“类名 内存地址”(也就是说可以通过重写description方法中的返回值改变输出结果)~~
当使用NSLog输出类对象时:
~~会调用类的description类方法,拿到description的返回值(NSString *)显示到屏幕上会打印出 类名 ~~
3.SEL方法:每个方法都有一个SEL类型的数据相对应。
系统中调用方法的原理:会把某个方法包装成SEL类型的数据,根据SEL数据找到对应的方法地址,根据方法地址调用对应的方法
SEL的创建:
1. SEL s = @selector(方法名)
SEL s = NSSelectorformString(@"khdksh")
间接调用对象方法的方法:[对象 performSelector:@selector(方法名)]