simulator

来源:互联网 发布:iphone图片编辑软件 编辑:程序博客网 时间:2024/06/11 16:26

simulator
reset 重置
shot 快照
scree 屏幕
software 软件
rotate right 旋转
cmd+shift+h类似home键功能
+h+h双击home键
ME525
reboot重启
slow 慢速
1 内存地址和内存大小的关系
16位进制地址 可以存储2~64-1个字节
2 NSObject
foundation框架中的1个类,每个类必须有一个父类,所有类的祖宗类
在这个类中有个new方法创建一个对象,并初始化这个对象,将这个对象地址返回
3 super和self 不能访问属性,不代表对象也不代表类,代表一个动作,到父类中寻找
super可以显示子类从父类继承过来的方法,或者直接子类的方法,和self的效果一样,建议使用super调用父类的方法
self代表本类或者本对象
4 方法的重写
直接改写父类的方法,不用声明
[self test];//子类
[self test];//父类,如果重写了,返回不同的数据
5 属性的修饰符,控制访问权限
@package
在同一个框架中定义的类,和@public效果一致
@protected

@private@public从这个属性定义语句往上找,最近的一个默认修饰符是protected5.1 真私有属性    定义在implementatin中《.m直接创建》,任何访问修饰符无效,Xcode不能被提示,其他和private一样    方法只写实现不写声明,方法只能类的类部调用,不能在外部调

6 里氏替换原则
父类指针指向子类对象,对程序本身不会造成任何影响
局限性
当父类的指针指向了子类的对象,不能使用子类特有的对象,可以使用强转进行转化
如果一个父类指针指向了一个子类指针,如果父类方法被重写了,将会执行子类的方法
6.1 多态
同一种行为,对于不同的实物而言,具有完全不同的表现形式
代码中的多态,子类重写了父类的方法,,通过父类的指针去调用子类的方法,执行的是子类的方法,而不是父类的方法
同一个方法发送给不同的对象,实现不同的结果
6.2 %p和%@打印
%p打印对象地址
%@打印的是指针对象指向的地址
先调用传入对象的description方法,这个方法有一个返回值,就是NSString字符串
再打印字符串
NSString *str=[p1 description];//重写此方法就可以修改@%的打印内容
6.3 继承的本质
将子类加载到代码区,肯定也会将父类加载到代码区
子类对象中有子类和父类所有的属性,如果类的方法中去找,如果没有就去父类一级一级往上找,如果没有就报错
一旦找到就不会往上寻找
6.4 分析代码的执行过程
1 加载类到代码区
2 在堆区创建对象
3 在栈区创建指向堆区的指针变量
6.5 类是以class对象的形式存储在代码段中的
内存的五大区域
类加载
当类第一次访问的时候,会将类加载到代码段中
类是以什么形式存储在代码区中的
先在代码段中加载一个class对象,class是一个类,由系统定义
将要加载的类的信息存储到class对象中,将这个类对象存储在代码段中
类名
属性
方法
如何获取存储类的class对象
要声明class指针不需要加*
class是一个objc_class 类型的结构体指针typedef,在定义的时候已经加*了,就是一个指针,指向结构体
HMPerson *person=[HMPerson new];
Class c1=[person class];
调用类的类方法
Class c2=[Person class];
Class 对象就相当与Person类,可以直接通过class调用类的类方法
6.6 sel数据
调用方法的2种方式
HMPerson *p1=[HMPerson new];
[p1 sayHi];
手动为对象发送sel消息
HMPerson p1=[HMPerson new];
[p1 performSelector:@selector(sayHi)];
全称
selector ,是用来存储方法的,实际上是一个类
指向oc中的方法的结构体指针
如果给定的方法不存在,不报错只会打印无效的地址
手动发送sel消息
先的到存储方法的sel消息
SEL s1=@selector(sayHi);
[p1 performSelector : s1];

0 0
原创粉丝点击