1.oc objective -c,是一门面向对象的编程语言
2.oc 和 c
a.oc是c的超级,oc是在c语言的基础上做了扩展,c语言所有的语法在oc中都能使用,甚至你可以再工程里加入c++语言
b.oc在c的基础上扩展了面向对象的思想
c.oc是一门运行时语言
d.oc为我们提供了丰富的类库
3.如何学好oc? a.百度(iOS)b.看苹果的官方文档(API接口文档) c.看博客 d.自己的错误总结
4.面向对象编程的三大特征:封装,继承,多态
5.类是什么?具有相同的特征和行为实物的抽象
6.对象:类的实例化
7.创建一个类 a.通过Cocoa touch 和class 模板,创建类,自动生成.h和.m文件 b.在.h文件中写类的特征和方法的声明 c.在.m文件中写方法的实现部分
8.实用类创建对象 a.开辟内存空间 b. 初始化
9.给Person对象开辟内存空间
[Person alloc] 代表给Person这个类发送了一个消息alloc
[ ]代表调用方法
10.Person *person1 = [Person alloc];
person1代表创建的对象 堆区中isa指针用来指向父类
每一个对象都有一个isa指针,用来指向他的父类,之所以能掉用父类的方法,完全是因为这个isa指针
11.初始化 如果没有赋值这时默认所有的实例变量都为空nil
Person *p = [[Person alloc]init];这条语句同时完成两件事,开辟内存空间并初始化
12.
@interface Person : NSObject
@intferface是接口 Person是类名 :继承的谁 NSObject是所有oc类中的基类
13.@public 实例变量被@public修饰后就能在类的外部访问到这些实例变量了
14.类的外部是��️:.h和.m其它文件就叫类的外部
15.类的内部是��️:.h和.m这对文件内
16.NSString *_name;NSString不是基本数据类型,所以那它定义变量的时候需要加*
17.NSTnteger _age; NSTnteger是基本数据类型,所以在定义变量的时候不需要加* CGFloat就是基本数据类型double
18.行为的声明
a.减号(—)修饰的方法属于对象方法,这个方法只有我们定义的这个类的创建出来的对象来调用
b.用加号(+)修饰的方法属于类的方法,这个方法只能有类来调用
19.重写了init方法
-(void)init;
20. - (void)talk:(NSString *)content;//一个冒号代表有一个参数 写一个带有参数的方法时的格式< :(参数类型)参数名>
21.如果写一个方法没写实现这种现象叫空实现
22. NSLog(@"Hello! 我是%@,年龄%ld,性别%@",_name,_age,_sex);//NSLog是oc自己的控制台输出函数
23.在.m中除了可以写多个类的实现部分,还可以把一个类的声明和实现部分都写在.m文件中,此时这个类就是一个私有的类,只能在.m文件中看到,其它任何文件都无法看到