Objective-C-基础知识

OC语言前期准备ios

1、OC简介c++

Oc语言在c语言的基础上,增长了一层最小的面向对象语法,彻底兼容C语言,在OC代码中,能够混用c,甚至是c++代码。编程

可使用OC开发mac osx平台和ios平台的应用程序。框架

拓展名:c语言-.c  OC语言.-m  兼容C++.-mm函数

注:其实c语言和oc甚至任何一门语言都只是咱们为了实现一些功能,达到一些效果而采用的工具,抛开语法的差异外,我想最重要的应该是在解决问题的时候考虑的角度和方法不同而已,然而这也构成了学习一门语言的重要性。工具

 

2、语法预览学习

(一)关键字测试

基本上全部的关键字都是以@开头的(为了与c语言的关键字区分开来),如@interface  @implementation  @public等,少部分没有以@开头,如id,_cmd等设计

 

(二)字符串以@开头3d

C语言字符串:“hello”

OC语言字符串:@“hello”

 

(三)其余语法

基本类型:5种,增长了布尔类型

Nil至关因而null,也就是0。

屏幕输出:NSLog(@“hello”);//自动换行

NSLog(@“age is %d”,2);

 

3、OC程序开发过程

#import预处理指令有两个做用:(1)与#include同样,拷贝文件内容(2)能够自动防止文件的内容被重复拷贝

程序编译链接过程:

源文件(.m)---(编译)---->目标文件(.0)-----(连接)---->可执行文件(.out)

 

Foundation框架。若是要使用框架中的全部头文件那么应该怎么办?包含框架的主头文件。主头文件是一个框架中最主要的头文件,每一个框架的主头文件名和框架名一致。

如#import<foundation/foundation.h>

运行过程以下:

(1)编写OC源文件  .m .c

(2)编译文件  cc -c xx.m  xxx.c

(3)连接  cc xx.o xxx.o  -framework Foundation

(4)运行 ./a.out

 

4、类型补充

Int main()

{

BOOL b=YES;

BOOL b1=NO;

BOOL b2=1;//  YES

BOOL b3=2;//  NO

NSLog(@“%i”,b);

}

 

BOOL类型与其余类型的用法一致,BOOL类型的本质是char类型的,定义以下:

Typedef signed char BOOL

宏定义:

#define YES  (BOOL)1

#define NO   (BOOL)0

布尔类型的输出通常当作整数来用。

 

 

5、面向对象

OC语言是面向对象的,c语言是面向过程的,面向对象和面向过程只是解决问题的两种思考方式,面向过程关注的是解决问题涉及的步骤,面向对象关注的是设计可以实现解决问题所需功能的类。

术语:OO面向对象、OOP面向对象编程

 

6、类

(一)关于类

类的设计只关注三个东西:类名、属性和方法

注意:通常名词都是类,拥有相同属性和行为的对象均可以抽象为一个类,类名是标识符的一种,须要符合规范,一般类名的第一个字母大写,且不能有下划线,若是有多个单词则使用驼峰标识。在对方法进行类的划分中,通常采起的作法是谁最熟悉这个方法那么就把这个方法划分给谁。在OC中,对象对方法的调用称为消息机制,即向既定的对象发送了什么消息。

 

(二)简单内存分析

类建立对象,每一个对象在内存中都占据必定的存储空间,每一个对象都有一份属于本身的单独的成员变量,全部的对象公用类的成员方法,方法在整个内存中只有一份,类自己在内存中占据一份存储空间,类的方法存储于此。

每一个对象内部都默认有一个isa指针指向这个对象所使用的类。

[p eat];表示给p所指向的对象发送一条eat消息,调用对象的eat方法,此时对象会顺着内部的isa指针找到存储于类中的方法,执行。

isa是对象中的隐藏指针,指向建立这个对象的类。

 

(三)类的声明和实现

1)类的声明:

这里声明了一个Person类,这个类拥有一个@public修饰的属性(成员变量),以及一个对象方法put。

2)类的实现:类的声明能够理解为类中的方法的实现

 

3)类的调用:在主函数首先建立了一个Person类型的对象(先调用alloc分配存储空间,后调用init方法初始化为0),并定义了一个Person类型的指针指向建立的这个对象,以后初始化对象成员变量_age的值为20,而后调用了对象的put方法,打印输出。

 

4)练习,建立一个Person类。

类的声明:

 

类的实现以下:

 

类的调用以下:

 

 

(四)常见错误

(1)@interface  @end和@implementation  @end不能嵌套包含

(2)只有类的声明没有类的实现

(3)漏写@end

(4)两个类的声明嵌套(能够把顺序打乱)

(5)成员变量没有写在{}里

(6)方法的声明写在了{}里面

(7)在声明时对类的成员变量进行初始化,请注意成员变量不能脱离对象而独立存在

(8)方法没法像函数那样的调用

(9)成员变量和方法不能用static等关键字修饰,不要和c语言混淆

(10)类的实现能够写在mian函数后面,在使用以前只要有声明就能够

 

7、OC对象与函数

OC对象与函数有着本质的区别:

(1)方法的实现只能写在@implementation··@end中,对象方法的声明只能写在@interface···@end中间

(2)对象方法都以-号开头,类方法都以+号开头

(3)对象方法只能由对象来调用,类方法只能由类来调用,不能当作函数同样调用

(4)函数属于整个文件,能够写在文件中的任何位置,包括@implementation··@end中,但写在@interface···@end会没法识别,函数的声明能够再main函数内部也能够在main函数外部。

(5)对象方法归类\对象全部

(6)函数调用不依赖与对象

(7)函数内部不能直接经过成员变量名访问对象的成员变量

 

8、类和方法的设计

工具类:基本没有任何的成员变量,里面的方法基本都是类方法。

注意:在对象方法中能够调用类方法。

需求:设计一个工具类:一个计算器类,要求(1)返回π,(2)计算两个整数的和,(3)计算某个整数的平方。

类的声明部分

 

类的实现部分

 

测试程序:

 

相关文章
相关标签/搜索