和我一起学习OC吧

OC基础

Xcold中.m文件包含了oc代码,由oc编译器处理,c编译器处理.c文件,c++编译器处理.cpp文件

Import和include的区别是确保文件制备包含一次

#import<Fundation/Fundation.h>告诉编译器查看fundation框架中的fundation头文件,框架是一个技术的集合体,包括头文件库,图像和声音,包含十个甚至上百个头文件,但是每个框架都有一个主头文件,包含了这个框架中所有的头文件

NSlog(@“hello o.c”);相当于c中的printf输出语句,@告诉编译器双引号中的字符串要当做NSString处理,

相关术语 

1 类:类是一种结构体,表示对象的类型

2 对象:对象是一种结构,包括数据和指向其父类的指针(也称消息)

3 消息:告知对象要执行什么操作

4 方法:是对象要执行操作的代码

Interface部分 

在创建类的时候,编译器需要有关类的一些信息,interface可以完成该任务

@interface Circle : NSObject   定义一个类,类的名称是Circle,父类是NSObject     

{ ShapeColor fillcolor;  定义了两个实例变量,颜色和边长,花括号内部是Circl                      ShapeRect bounds;        类对象所需要的数据信息,fillcoulor和bounds的值是

}      类的实例变量

-(void) setFillcolor:(ShapeColor )fillcolor; 定义了撒个实例方法,

-(void) setBounds:(ShapeRect) bounds;  在这里叫做方法声明

-(void) draw;

@end

@Implementation   指令,告诉编译器将为某个类提供代码

(void) setFillcolor :(ShapColor) c  重新定义方法

{

fillcolor = c;                   c为新的参数名

}

-(void)setRect:(ShapeRect) b

{

bounds = b;

}

- (void) draw 

{

NSlog(@“drawing a circle in (%d %d %d %d) in %@,bounds.x,bounds.y,bounds.width,bounds.height,ColorName(FillColor));

}

@end

实例化对象

当我们创建可爱你的图形,如红色的圆形和绿色的矩形,专业术语是实例化,实例化对象时需要分配内存空间,然后被初始化为一些默认值不同于刚分配空间时的一些随机值,分配空间结束和初始化后,就创建了一个新的对象实例。我们可以通过向类发送一个new消息来创建一个新的对象

在处理对象和类之间的关系时,要注意两个关系继承和复合

继承

继承可以减少大量的重复代码多次出现,避免在修改的时候忘记某一处的修改而导致奇怪的bug,

通过继承可以实现如下的转变

CircleRectangleshape的子类,继承了shape父类的

FillcorlorBounds方法

相关术语

超类(父类):是所继承的类

子类(孩子类):实施继承的类

改变方法的实现需要重写父类的方法,

方法调度的机制

当代码发送消息的时候,将在当前类中进行查找相应的方法,如果调度程序无法在当前类中找到该方法,就会到该对象的超类中查找,

实例变量

创建一个新的对象时,对象要先继承来自父类的实例变量,然后才可以添加自己的实例变量

每个方法调用都会有一个self指针,指向消息接受对象

Super关键字

为了调用父类的方法要用super作为方法调用的目标

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值