您的位置:首页 > 移动开发 > IOS开发

IOS学习---OC基础学习1

2014-10-20 22:23 405 查看
OC:

在C的基础上增加了一层最好的面向对象语法

扩展名.m

基本语法:

1、关键字:

基本上所有的关键字都是以@开头

2、字符串一@开头

其他与法:

引进了bool类型(yes,no)

nil 相当于C语言中的NULL,也是0

NSLog(@"hello");NSLog(@"%d",27);

//@与“”之间无空格,且输出之后自动换行

开发过程

.m源文件->.o目标文件->a.out可执行文件

#import的用途

1、跟include一样,拷贝文件内容

2、可以防止文件内容被拷贝多次

Foundation 框架

NSObjCRuntime.h中有声明NSLog的函数声明

#import <Foundation/NSObjCRuntime.h>

编译时相同

链接时如果用到Foundation框架,要标明

cc xx.m -framework Foundation

每一个框架都有自己的主头文件,要想使用这个框架中的所有.h文件就要import 这个框架下的这个.h文件(主头文件)

因此 要使用NSLog()函数需要

#import <Foundation/Foundation.h>

引入Foundation.h这个主头文件后,就可以使用整个Foundation框架中的东西

Foundation框架头文件的路径

1、右击Xcode.app->显示内容

2、Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.sdk/System/Library/Frameworks/Foundation.framework

运行过程:

1、编写OC源文件:.m,.c

2、编译:cc -c xxx.m,xxx.c

3、链接:cc xxx.o xxx.o -framework Foundation

(只有用到Foundation框架才需要加上-frameworkFoundation)

4、运行:./a.out

BOOL布尔型

本质:

typedef signed char BOOL;

取值范围: YES,NO

#define YES (BOOL)1

#define NO (BOOL)0

输出:

当做整型来输出

NSLog(@"%d",YES)

注意:必须要大些

面向过程(Procedure Oriented):关注解决问题的步骤

面向对象(Object Oriented):关注解决问题所需要的对象

面向对象编程(Object Oriented Programing)简称OOP

1、类的设计

①、类名 类名的第一个字母必须大写,不用下划线

②、属性

③、行为(功能)

2、植物大战僵尸

僵尸:

*类名:Zoombie

*属性:life(生命值)、speed(速度)、gongjili(攻击值)

*行为:walk(行走)、bite(咬)、die(死亡)

3、雷电飞机

*类名:Plane

*属性:life、gongjili、speed、bombcount、

*行为:fly、bomb、shoot、die

4、电脑

*类名:Computer

*属性:price、band(牌子)、expiredate(保质期)

*行为:open、close

具体例子:

类名:car

属性:轮胎个数、时速

行为:跑

//完整的写一个函数:函数的声明和定义(实现)

//完整的写一个类:类的声明和实现

//1、类的声明:用来声明对象的属性、行为

//:NSObject 目的是:让Car这个类具备能创建对象的能力

@interface Car :NSObject//开始

{

//用来声明对象属性(wheels称作实例变量或者成员变量)

//@public可以让外部指针间接访问类的成员变量

@public

int wheels;//轮胎个数 默认初始化为0

int speed;//时速 默认初始化为0

}

//方法(行为):方法名、参数、返回值(声明、实现)不//能放在{}之中

//只要是OC对象的方法,必须以-开头

//OC方法中任何数据类型,都必须用()扩住

//OC方法中()的作用就是扩住数据类型

- (void) run;//run()中无数据类型,不需要()

@end//结束

//2、类的实现

@implementation Car

//方法的实现(说清楚方法里面有什么代码)

-(void)run

{

NSLog(@"车子跑起来了");

}

@end

int main()

{

//在OC中,向执行一些行为,就写上一个

[行为执行者 行为名称]中括号

//利用类创建对象

//执行了Car 这个类型new行为创建新对象

//定义了一个指针变量p,将来指向Car类型的对象

//[Car new]会创建一个新对象,并且会返回新对

//象本身(新对象的地址)

Car * p = [Car new];

Car *p2 = [Car new];

p2->wheels = 4;

p2->speed = 250;

[p2 run]

//给p所指向的wheels属性赋值

p->wheels = 4;

p->speed = 250;

//给p所指向对象发送一条run消息

[p run];

return 0;

}

/*



类名:Person

属性(成员变量\实例变量):体重、年龄

行为(方法):走路、吃

*/

//1、类的声明(写成员变量、写方法的声明)

@interface Person :NSObject

{

//成员变量、实例变量

//int age = 20;不允许在这里进行初始化

//static int wheels;不能随便将成员变量当做c
//语言中的变量来使用

@public

double weight;//体重

int age;//年龄

}

- (void) walk;

@end

//2、类的实现

@implementation Person

//实现@interface中声明的方法

- (void)walk

{

//直接使用不需要通过参数传递

NSLog(@"%d岁%f公斤的人走了一段路",age,weight);

}

@end

int main()

{

//在使用类创建对象之前,会将类加载进内存

Person p = [Person new];

p->age = 20;

p->weight = 65.7;

[p walk];//调用方法

return 0;

}

注意:

1、interface与implementation不能嵌套

2、方法的实现必须写在implementation里面

3、成员变量不允许在定义时赋值

OC方法和函数的区别:

方法:

1、对象方法都是以减号-

2、对象方法的声明必须写在@interface和@end之间,对象方法的实现必须写在@implementation和@end之间

3、对象方法只能由对象来调用

4、对象方法归类\对象所有

函数

1、函数能写在文件中的任意位置(除@interface与@end之间),函数归文件所有

2、函数调用不依赖于对象

3、函数内部不能直接成员变量名访问某个对象的成员变量

/*

计算器类

方法:

1、返回π

2、计算两个整数的和

3、计算两个整数的和

*/

带参数的方法名(方法名:claculator: 类中可出现名为claculator 的另一个方法 不带:)

OC方法中一个参数对应一个冒号,该冒号也是方法名的一部分

- (int)claculator:(int)num;

- (int)sum:(int)num1(加空格) :(int)num2;//一定加空格

- (int)sumWithNum1:(int)num1 andNum2:(int num2);

- (int)sumWithNum1:(int)num1 andNum2:(int num2) andNum3:(int)num3;

相当于C中的

int claculator(int num){}

主函数中的调用:

[jsq calculator:10];//计算10的平方,调用方法+参数传递
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: