OC简介
1.是面向对象的语言
2.运行时非常灵活:dynamic binding 动态绑定 dynamic typing动态检查
dynamic linking 动态链接
3.#import<Foundation/Foundation.h>,告诉编译器找到并处理名为Foundation.h文件,这时一个系统文件,#import表示将该文件的信息导入到程序中
4.框架地址:
Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/
5.#import可以防止头文件重复包含问题
6.int main(int argc, const char * argv[ ]),这个方法是程序的入口。参数argc-参数数 目,argv-参数值.
7.@autoreleasepool{ }这是一个自动释放池,用于回收对象的存储空间
8.最后是return 0语句,它表示要终止main的执行,一般情况下0代表正常结束,非0代表异常情况, 这是沿用了C语言的习惯。
NSlog的介绍
1.NSlog是cocoa的框架中的提供的一个方式
2.定义:void NSlog(NSString *format,...)
NSlog与printf的区别:NSlog会自动换行,而printf不会
NSlog会自动输出时间等项目信息,
NSlog函数的参数是一个NSString 对象,printf是一个字符串常量指针
3.基本上,NSLog很像printf,同样会在console中输出显示结果。不同的是,传递进去的格式化字 符是NSString的对象,而不是chat *这种字符串指针
4.使用差异:
不能使用printf打印OC中的对象
NS前缀
1.前缀:在objective-c应用中的所有类名都必须是全局唯一的,由于很多不同的框架中会由一些相似的功能,所有在名字上也可能会有重复(users,views,requests/responses等等),所以苹果官方文档规定类名需要有2-3个字母作为前缀.
2.类前缀:NS为了避免命名冲突而给的前缀;OC不支持命名空间;使用3个或者更多的字母作为前缀去命名我们的类
*******************
1.访问OC源文件、C源文件中的函数
1).OC可以访问C源文件,C不能访问OC源文件
2.数据类型对比
3.OC与C基本语法对比
增强型的for循环,可以快速遍历数组、字典等集合
NSArray *arr=@[@"one",@"two",@"three"]
for(NSString *str in arr)
{
NSlof(@"%@",str);
}
4.OC中函数的定义和声明的差异
C语言中的函数
int max(int x,int y);//声明
int max(int x,int y)
{
return x>y?x:y;
}
OC中把函数称之为方法
+(int)sum:(int) a
-(int)b;//声明
-(int)sum:(int)a
+(int) b {return a+b;}
5.关键字对比
C语言的关键字都可以在OC源程序中使用
OC新增的关键字在使用时,注意部分关键字义@开头
6.OC新增数据类型
1)Boolean(布林)
作用:用来存放逻辑值--真(1) 假(0),用来做判断
存储的值:true(真) false(假)
2)BOOL
作用:用来保存逻辑值
取值:YES(真 1) NO(假 0)
3)异常:程序运行的时候有bug
捕捉机制:排除错误
@try
{
<#statements#>
}
@catch(NSException *exception)
{ //捕捉最具体的异常类型
<#handler#>
}
@catch(NSException *ne)
{
//捕捉一个比较重要的异常类型
}
@catch(id ue)
{
//再次掷出捕获的异常
}
@finally
{ //不管有没有异常finally内的代码都会执行
<#statements#>
}
*********************
面向对象编程概念
1.编程的实质是将我们的思维转变成计算机能够识别的语言的过程
2.是按人们认识客观世界的系统思维方式,采用基于对象(实体)的概念建立模型,模拟客观世界分析、设计、实现软件的方法。通过面对对象的理念使计算机软件系统能与现实世界中的统一一对应
3.面向对象编程:是一种解决软件复用的设计和编程方法。这种方法把软件系统中相近相似的操作逻辑和操作应用数据、状态,以类的形式描述出来,以对象实例的形式在软件系统中复用,以达到提高软件开发效率的作用。优点:大幅度提高软件项目的成功率,减少维护费,提高可移植性和可靠性
4.三个主要特征:封装,继承,多态
5.面向过程强调的是功能行为,关注的是解决问题需要哪些步骤
面向对象将功能封装进对象,强调具备了功能的对象,关注的是解决问题需要哪些对象,面对象是基于面向过程的
类和对象
1.类:是具有相似内部状态和运动规律的实体的集合(或统称、抽象)。
2.对象:即指现实世界中各式各样的实体,它可以指具体的事物也可以指抽象的事物。
3.消息:指对象间相互联系和相互作用的方式。五部分:发送消息的对象,接受消息的对象,消息传递的方法,消息类容(参数),反馈
4.类的构成:事物名称,属性,行为
5.用有相同(或者类似)属性和行为的对象都可以抽象出一个类,一般名词都是类
先考虑需要设计哪些类,再利用类创建多个对象
哪个对象最清楚这个行为,就把这个行为写到哪个对象中去
类的声明和实现
1.类
1).声明:.h文件,用于成名成员变量、方法。类的声明使用关键字@interface和@end
2).实现:.m文件,类的实现文件,用于实现.h中声明的方法
2.方法
方法的声明和实现,都必须以+或者-开头
+表示类方法(静态方法)
-表示对象方法(动态方法)
在.h中声明的所有方法作用域都是public类型,不能更改
3.成员变量(实例变量\属性)
成员变量的常用作用域有三种:
@public 全局都可以访问
@protected 只能在类内部和子类中访问
@private 只能在类内部访问
声明一个类
1)声明类使用关键字@interface
2)声明类,我们经常放到.h的头文件中
@inerface Car(类名称) :NSObject(父类名称)//让Car这个类具备创建对象的能力
{ @public //可以让外部的指针间接访问对象内部的成员变量
//类的属性 --->成员变量--->实例变量
int count;
id data; ------成员变量声明
NSString *name;
}
//类的行为--->成员方法
@end
实现一个类
1)实现一个类,使用关键字:@implementation
2)实现一个类通常放到.m文件中
3)实现类主要是对方法的具体实现
@implementation 类名
{
//行为的具体实现
}
@end
创建一个对象
1.[Car new]; 1)向计算机申请内存空间(栈区,先进后出);2)给类中的每一个成员初始化值;
3)返回新申请的空间的首地址
Car *p=[Car new]; 创建一个对象
无参方法声明实现及调用
对象方法
1)对象方法以“-”开头
2)对象方法只能由对象来调用
3)对象方法中可以访问当前对象的成员变量
4)调用格式 [对象名 对象方法]
类方法
1)类方法以“+”开头
2)类方法只能由类来调用
3)类方法中不能访问实例(成员)变量,因为类方法由类来调用,并没有创建存储空间来存储类中的成员变量
4)调用格式 [类名 类方法名]
5)类方法的好处和使用场合:
不依赖于对象,执行效率更高
能用类方法解决的问题,尽量使用类方法
场合:当方法内部不需要使用到成员变量时,可以改为类方法
不带参数的方法
声明:
- (void) pi
(方法类型) (返回值类型) (方法名)
方法的调用
1)[类名或者对象名 方法名]
不带参数的方法调用:[c pi] --->[指针变量名 方法名]
2)对象名.方法名
-(void)run;--->[car run]
+(void) fly;--->[Car fly] |
|