面向过程的编程(procedure-oriented programming,POP:以事件为中心,关心完成事件的详细步骤,一步一步如何实现) 面向对象的编程(Object Oriented programming,OOP,以事物为中心,也就是参与事件的参与者,设计事物的功能,而完成事件只是所有功能中的一个小功能) 简单的说就像人吃饭,面向过程就是人怎么去吃饭(用筷子啊,清蒸啊,红烧啊等等),面向对象就是以人为基准(人能 吃喝拉撒睡等)以饭为基准(饭有 米饭面条海鲜各种不同做法等),人怎么去吃饭只是所有功能的一部分 类:具有相同特征和相同行为事物的抽象 类是一个抽象的概念生活中不具体 对象:是类的实例 也就是类的具体表现 生活中的万物都是对象 描述一个类: 通过特征(静态属性)行为(动态属性) @是OC的标志 类的定义分为两部分,: 1:类的接口部分,提供外部访问的接口相当于使用说明书 2:类的实现部分详单与功能的实现 类的接口部分写在 .h 文件中 接口部分的定义:(1)以@interface开始 以 @end结束,只有把类的接口定义内容写在之间才有效 (2)Person 类名. (3) : 号表示继承. 表示他有父类 (4)NSObject父类名 实例变量 类似于结构体中的结构体成员,必须写在大括号内,而且大括号内只能写实例变量
NSString相当于c语言中的定义字符串char a[20]
NSInteger相当于C语言中得 int; -(void)sayhi;//方法名 sayhi , - 号的意思是 由 对象调用的方法, + 号则表示是由类调用的方法. 类的实现部分 写在.m 文件中 类的实现部分:(1) 写在@implementation 和 @end之间才有效 @implmentation 后的Person是要实现的类(需要指定对哪一个类实现) 方法调用采用 消息发送机制[receiver(接收者,类 或 对象) message(消息,方法)] 如何区分是给类还是对象发送消息 [- 开头是给对象发送的, + 开头是给类发送的] 创建对象分两步: 1 . 开辟空间.alloc 方法加号方法 通过[person alloc] 在堆区开辟的空间才是真正的对象,只不过对于指针变量per存储的首地址,通过它才能访问对象,所以我没问你把指针变量per叫做对象(但真正的对象是堆区空间per本质是指针变量) id 可以代表所有的对象类型 ,可以用对应类型的对象来接收 Person *per = [Person alloc]; 2 . 初始化 init 放法完成初始化操作 减号方法,对象调用 per = [per init]; - (id)initWithName:(NSString*)_name price:(NSInteger)_pricecolor:(NSString *)_color; 由自己定义的初始化方法,给自己的每个实例变量赋初值[per sayhi]; 由对象调用方法. |
1.实例变量的可见度:一共有三种 |
1.通过作业题,讲了OC中的”继承”,通过多个类总结出来父类(通过相同的特点和行为),然后使用继承可以简化很多代码 2.再使用继承的时候,子类继承父类会将父类中除了声明为@private的实例变量和私有的方法之外的其他全部内同都会被继承.如果子类中有和父类中同样的内容,全部删掉保留自己独有实例变量,不然会引起重复定义的错误,当然这是指实例变量(私有方法:就是在.m文件中实现了,但是没有在.h文件中声明的方法,这类方法不允许在外部访问,可以在本类中访问.) 3.在子类中,如果方法和父类相同了,不会出现错误,因为,继承的时候可以重写父类的方法,这个时候会出现三种情况:①保留父类对该方法的实现,不重写方法,这是上面遇到的情况;②按子类重写之后的方法来实现.(实现方式,重写该类方法,写自己的实现体,完全忽视父类的实现);③对于该类方法既有父类对该方法的实现,也有子类对该方法的实现,这儿用到一个重要的关键吃super 4.super的作用:用来调用父类对该初始化方法的实现.而self用来调用自己的方法 5.自定义初始化在实现的时候,本类中只对自己独有的实例变量赋值即可,然后父类中有的可以通过super调用实现简化 6.便利构造器:①作用是快速创建对象,内部封装了创建对象的过程;②格式:⑴ + 号方法 ⑵返回值类型为 id 类型 ⑶以类名+with开头,拼接上多个参数(便利构造器与标准创建对象相比便利不了多少,而且占内存,一般情况下不建议使用) |
1.创建对象 两种方式:(1)便利构造器(+号方法) (2) 初始化方法 (3)根据字符串初始化OC字 符串对象(已弃用) 2.求字符串长度 3.获取字符串中的某个字符 给定的字符下标超出范围,即下标越界时,程序会crash 问题产生的原因.NSCFString == NSString ,又是一个- 号方法,所以问题产生的原因是:让一个NSString类型的对象,调用characterAtIndex:方法时,给定的字符下标超出范围,即下标越界 解决方案将数组下标修改范围之内即可. 4.判断是否已指定字符串开头,或者以指 定的字符串开头 注它可以判断字符串的开头和结尾是 否是已指定的的 5.查找指定字符串的范围(可以找出已 知字符串中的某段字符串内容) 6.字符串的截取 有三种方式 (1)获取给定下标之后的子串,包含指 定下标对应的字符 (2)获取给定下标之前的字串,从下标 为0开始,但不包含指定下标对应的字符 (3)获取指定范围内的字符串. |