-
OC不是一门全新的语言,是c语言的基础上增加了一层最小的面向对象语法。
-
学习目标:
语法学习
建立面向对象思维能力
建立基本项目需求分析能力 -
Include和import区别:
-
include和import都是引入头文件
-
import引入的头文件,可以防止重复包含
-
include是使用预处理指令防止重复包含,如果没有写预处理指令,则无法防止重复包含问题
-
Foundation/Foundation.h是什么
-
头文件
-
头文件的位置
-
文件包含了其他的大量的头文件
作用:把foundation.h引入了,等于把OC的库文件都引过来了。
-
NSLog的介绍:
NSLog是cocoa的框架中提供的一个方法
NSLog的定义
NSLog定义在NSObjCRuntime.h中void NSLog(NSString*format, …);
基本上,NSLog很像printf,同样会在console中输出显示结果。 不同的是,传递进去的格式化字符是NSString的对象,而不是chat*这种字符串指针 -
NSLog与printf差距
-
NSlog会自动换行,而printf不会自动换行
-
NSLog会自动输出时间等项目信息,而printf不会
-
NSLog 函数的参数是一个NSString对象
Printf函数是一个字符串常量指针
-
NSLog(@"this isa test"); //打印一个字符串
NSString *str = @"hello itcast!";
NSLog(@"string is:%@",str);//使用占位符, %@表示打印一个对象, %@ OC特有的
NSLog(@"x=%d, y=%d",10,20);//使用多个占位符, %d表示整型数 -
OC中注释及@符号使用
1)@的使用方法:
在OC中“@”有特殊的用法
1)@""这个符号表示将一个C的字符串转化为OC中的字符串对象NSString.
2)@标识符OC中大部分的关键字都是以@开头的,比如@interface,@implementation,@end
@class等。
2) OC中注释
OC中的注释有两种:
1)单行注释://
2)多行注释:/* */
3)文档注释
/**
* 狗吃食物的方法
* *
@param foodName 参数描述
*/
程序编译时,不对注释做任何处理
注意可以出现在程序的大部分的位置。 -
C与OC的差别:
-
源文件对比:
C中.h .o .out .c
OC中.h(头文件) .m(类的实现文件,参与编译的文件,用来实现类中声明的方法)
-
数据类型:
3)变量的定义对比:
注意:1、c语言的关键字都可以在oc源程序中使用
2、oc新增的关键字在使用时,注意部分关键字以“@开头
4)流程控制语句对比:
Oc中并没有增加新的流程控制
Oc中提供一种增强型的for循环
NSArrau *arr=@[@”one”,@”two”,@”three”];
For(NSString *str in arr){
NSLog(@”%@”,str);
}
5)OC中函数的定义和声明的差异:
OC中把函数称之为方法:
+(void) test;
-(void) test;
-(int)max:(int)x and Y:(int) y;
10.OC新增的数据类型
1)逻辑性
(1)Boolean:指的是用于存储真值和假值的变量,一般用于程序流控制。
True 为1 false 为0
(2)BOOL:取值是YES和NO ,用作逻辑判断
YES 真 为1
NO 假 为0
-
异常捕捉方法:
@try .... @catch .... @finally
格式:
@try {
< #statements#>//此处放的是有可能出错的代码
}
@catch (NSException *exception){ //捕捉最具体的异常类型
< #handler#>//此处放出错以后,我们处理的代码
}
@catch (NSException *ne){ //捕获一个比较重要的异常类型。
}
@catch (id ue){ //再次掷出捕获的异常。
}
@finally { //不管有没有异常finally内的代码都会执行。
< #statements#>
}
-
编程的实质:思维转变成计算机能够识别的语言的一个过程。
11.面向对象编程
面向对象(object-oriented ;简称: OO) 至今还没有统一的概念,我这里把它定义为:
按人们认识客观世界的系统思维方式,采用基于对象(实体)的概念建立模型,模拟客观世
界分析、设计、实现软件的办法。通过面向对象的理念使计算机软件系统能与现实世界中的
系统一一对应。
面向对象编程( Object Oriented Programming-OOP)
是一种解决软件复用的设计和编程方法。这种方法把软件系统中相近相似的操作逻辑和操作
应用数据、状态,以类的型式描述出来,以对象实例的形式在软件系统中复用,以达到提高
软件开发效率的作用。
优点:
大幅度提高软件项目的成功率
减少维护费
提高可移植性和可靠性
面向对象设计四个个主要特征
封装性
面向对象和面向过程的区别:
面向过程
强调的是功能行为
关注的是解决问题需要哪些步骤
面向对象
将功能封装进对象,强调具备了功能的对象
关注的是解决问题需要哪些对象
面向对象是基于面向过程的。
12.类(class)和对象(object)
1)类:具有相似内部状态和运动规律的尸体的集合
2)对象:指显示世界中各种各样的尸体。可以指具体的食物,也可以指抽象的事物。
在面向对象概念中我们把对象的内部状态称为属性、运动规律称为方法或时间、
3)消息(message):指对象间相互联系和相互作用的方式、
Oc中描述事物通过类的形式体现,类是多个同种类型事物的抽象
13.类:一个类可以实例化多个对象:
例如:学生类可以有张三、李四。。。人
-
类和对象之间的关系
类(Class) 一个类由3个部分构成
类的属性:一组包含数据的属性
类的方法:允许对属性中包含的数据进行操作的方法
类的名称:类名
对象
是系统中的基本运行实体
对象就是类类型(class type)的变量
定义了一个类,就可以创建这个类的多个对象
一个类就是具有相同类型的对象的抽象 -
类的构成:
类名、属性、行为。
例如:人 身高、年龄 跑、代价
-
类的抽象:
拥有相同(或者类似)属性和行为的对象都可以抽象出一个类。、
方法:名词提炼法
14.关于类的几个名词
1)类:
.h类的声明文件,用于声明成员变量、方法
.m:类的实现文件,用于实现.h中声明的方法。类的实现使用关键字@implementation
和@end
2)方法
方法的声明和实现,都必须以 + 或者 - 开头
+ 表示类方法(静态方法)
- 表示对象方法(动态方法)
在.h中声明的所有方法作用域都是public类型,不能更改
3)成员变量(实例变量\属性)
成员变量的常用作用域有3种:
@public 全局都可以访问
@protected 只能在类内部和子类中访问
@private 只能在类内部访问
15.声明一个类:
1)声明类使用关键字 @interface
2)声明类,我们通常放到.h的头文件中
16.类的定义:
1)类的声明(规定当前类的:类名,属性,行为)
@interface 类名:父类名
{
//定义类的属性
}
//类的行为
@end
2)类的实现(实现具体行为)
@implementation类名
//行为的具体实现
@end
16.在oc中用已经存在的类,创建一个对象:
Car *car1=[Car new ];//做了三件事:1、向计算机申请内存空间 2、给类中的每一个成员初始化值3、返回//新申请的空间的首地址
Car *p = [ Car new];//理解方式1:定义了一个Car类型的指针变量,指针变量指向新申请的内存空间
//理解方式2:用Car类实例化了一个实例对象,对象名是p
17.无参方法声明及调用
@interface Car:NSObject
{
Int lunzi;
Int speed;
NSString *pp;
}
//行为
//车跑的方法 方法名是run
-(void)run;//定义了一个无参无返回值的方法
-(void)stop;
@end
//类的实现
@implementation Car
// 方法的具体的实现
-(void)run{
NSLog(@“车跑在达到上”);
}
-(void)stop{
NSLog(@“车停了!”);
}
@end
18.方法调用:
[ 类名或对象名 方法名 ];
例如:[car stop];//调用stop方法,向car对象发送stop消息
19.C的函数
Int sum(int x,i8nt y){
Return x+y;
}
OC的方法
-(返回值类型)方法名1:(参数类型)参数名;//有一个参数的方法
-(返回值类型)方法名1:(参数类型1)参数名1 and (参数类型2) 参数名2;//有2个参数的方法
// sum-àOC的方法
-(int) sum : (int) x and : (int)y;//方法的声明
//方法的实现
-(int) sum : (int) x and : (int)y{
Return x+y;
}
有参方法的使用注意:
-
方法的类型 (-)对象方法
-
方法的返回值:int 类型
-
方法的参数是:x y
-
参数的类型:第一个int 第二个int
-
方法名:sum: and: