- Objective-C语言简称OC,是扩充C语言的面向对象编程语言。
- OC语言是苹果公司开发OS X和iOS操作系统使用的主要语言。
- OC时间进度:
1980年初发明了OC语言
1988年NeXT公司使用OC语言进行开发
1996年OC语言成为苹果公司主要编程语言 - OC语言的特点:
OC语言是C语言的超集,允许在OC代码中编写C语言代码,编译器能兼容C语言代码
具备完善的面向对象特性
包含一个运行时系统
包含丰富的类库
- 面向对象基本介绍
面向对象编程:OOP(Object Oriented Programming)
面向对象的语言:Java、C++、C#
概念:对象、类、封装、继承、组合等 - 面向对象与面向过程:
面向过程:分析解决问题的步骤,实现函数,依次调用
面向对象:分析问题组成的对象,协调对象间的联系和通信,从而解决问题
对象定义了解决问题中的步骤的行为,不可以完成一个步骤
面向对象是以对象为中心,面向过程是以过程为中心的
- 基本介绍:
类和对象是面向对象的核心
定义类,创建对象,使用对象
- 类有共同的特征(比如导演类,有姓名、性别、国籍)和共同的行为(拍电影、客串、潜规则。。。)。类就是相同特征和行为的事物的抽象。
- 对象就是类中具体的东西,对象是类的实例,类是对象的类型。
- 在OC中如何定义类?
面向对象编程中使用对象完成程序
开发中:先定义类,再创建对象,然后使用
定义类分为两个部分:接口部分(.h)和实现部分(.m)。
a.接口部分:对外声明类的特征和行为
b.实现部分:对内实现行为 - 接口部分:
接口部分的标志:@interface ... @end
作用:声明实例变量和方法,即特征和行为
包含内容:类名、父类名、实例变量、方法 - 实现部分:
实现部分的标志:@implementation ... @end
作用:实现接口部分声明的方法,即实现类的行为
包含内容:类名、实现的方法 - 类和文件的概念?
类:@interface ... @end@implementation ... @end
文件:(.h)文件称为接口文件或头文件。(.m)文件称为实现文件。
文件和类本质是没有关系的,只是为了方便管理、实现封装特性。 - 如何创建对象?
分为两步:分配内存空间和初始化
分配内存空间:调用父类的alloc方法分配内存空间,根据类中声明的实例变量为对象分配内存,返回首地址,将所有实例变量置为默认值0.
初始化:对创建的对象进行实例变量的的初始化设置。
代码:// 分开写Person *person = [Person alloc];
person = [person init];
// 通常合起来写
Person *person2 = [[Person alloc] init];
+(id)alloc; // +号表示方法属于类,只能类执行。id表示任意类型的对象,即创建好的对象。
-(id)init;// -号表示方法属于对象,只能对象执行。id表示初始化完成的对象。 - 使用对象:
指针存储对象的首地址,代指对象。OC中使用指针代指对象进行操作。
Person *person = [Person alloc];先执行等号右侧代码。
[Person alloc]; // 返回值是对象的首地址,即对象。
person是跟对对象同类型的指针变量,存储对象首地址,代指对象。
- 基本介绍:
实例变量在做初始化时只做少量设置,后期需要操作。
实例变量有区分可见度,分为三种。(@public / @protected / @private)
@public: 实例变量访问修饰符。
// @interface是声明,必须与@end配合使用
// Person表示类名
// ':'表示继承关系,':'后面的类名表示的是父类名
@interface Person : NSObject
{
}
// 声明方法
// 方法分为两种类型:
// 1. '-'号表示的是对象方法(实例方法),由对象来调用
// 2. ‘+’号表示的类方法,由类名类调用
// 方法声明中,类型需要使用小括号括起来
// 吃饭
- (void)eat;
// 打招呼
- (void)sayHi;
// @end必须要写,不能丢
@end
// @implementation...@end实现文件中的关键字
// Person表示的是实现哪个类中的方法
@implementation Person
// 实现方法
// 初始化方法
- (id)init
{
}
// 吃饭
- (void)eat
{
}
// 打招呼
- (void)sayHi
{
}
// @end,不能丢
@end
// 想使用,先引入
#import "Person.h"
int main(int argc, const char * argv[])
{
}