------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
一、基本语法
1、第一个oc程序:
#import的用途:和#include一样,拷贝文件内容。可以自动防止文件内容被重复拷贝
#import(Foundation/ Foundation.h)
int main()
{
// NSLog输出内容会自动换行
NSLog(@"第二个oc程序!");
return 0;
}
如果要链接两个.o文件,方法和c语言中一样。一个c一个oc也可以一起,例如:cc one.mtwo.c
如果里面用到Foundation框架则:cc one.m two.c –framework Foundation
BOLL类型的使用:
<span style="font-size:18px;">#import<Foundation/Foundation.h>
BOOL test()
{
return NO;
}
int main()
{
BOOL b = YES;
BOOL b2 = NO;
BOOL b3 = 1; // 也就是YES
NSLog(@"%i", b);
NSLog(@"%d", test()); // 调用函数
return 0;
}</span><span style="font-size:24px;">
</span>
类和对象:
类:对所有对象共同属性的概括,相当于房子的图纸。
对象:相当于房子
如何设计类:
1、类名(第一个手写字母必须大写,且不能有 _ 下划线)
2、属性
3、行为(功能)。
例如植物大战僵尸的僵尸类:
1、僵尸 类名:Zoobie
2、属性:(生命值)life, gongjili
3、行为:walk ,bite(咬),die
雷电中的飞机:
类名:Plane
属性:life,gongjili ,speed
行为:fly ,bomb(放炸弹),shoot
第一个oc的类
<span style="font-size:18px;">// 1、类的声明:声明对象的属性、行为
</span>
<span style="font-size:18px;">// 因为使用了NSObject
#import<Foundation/Foundation.h>
// : NSObject目的是:让Car这个类具备创建对象的能力
</span>
<span style="font-size:18px;">@interface Car : NSObject
{ // 声明对象属性(即成员变量/实例变量,默认为0)
@public // 可以让外部指针间接访问内部成员变量
int wheels; // 轮胎个数
int speed; // 时速
}
</span>
<span style="font-size:18px;">// 方法(行为):方法名、参数、返回值(声明和实现),和函数类似
// 这里只做简单声明
- (void) run; //只要是oc对象的方法 必须以“减号”开头;
<span style="white-space:pre"> </span>// 任何数据类型都必须用小括号括住。作用:只是括住数据类型,run后没有传数据类型,所以不加括号
@end</span><span style="font-size:24px;">
</span>
<span style="font-size:18px;">// 2、类的实现
</span>
<span style="font-size:18px;">// 用来实现@interface 中声明的方法
</span>
<span style="font-size:18px;">@implementation Car <span style="white-space:pre"> </span> // 方法的实现:说清楚方法里面有什么代码
-(void) run
{
NSLog(@"车子跑起来了");
}
@end
</span>
<span style="font-size:18px;">// 主函数
</span>
<span style="font-size:18px;">int main()
{
<span style="white-space:pre"> </span>// 利用类创建对象。在oc中想执行行为,就写一个中括号[ 行为执行者 行为名称];
<span style="white-space:pre"> </span>// 定义一个指针变量p,p将来指向的是Car类型的对象
<span style="white-space:pre"> </span>// [Car new];会创建一个新对象,并且会返回新对象本身(新对象的地址)
Car *p = [Car new]; <span style="white-space:pre"> </span>// 执行了Car这个类的new行为来创建新对象,固定写法(new)
Car *p2 = [Car new]; // 又创建一个新对象
p->wheels = 4; <span style="white-space:pre"> </span>// oc中只能用指针间接赋值
p->speed = 250;
[p run ];<span style="white-space:pre"> </span>// 给p所指向对象发送一条run消息,这句有输出的(车子跑起来了)
NSLog(@"车子的轮胎%d, 时速:%dkm/h", p->wheels, p->speed);
return 0;
}</span>
类与对象
第二个类:
/*
类名:Person
属性(成员变量/实例变量):体重、年龄
行为(方法):走路
*/
/*1、类的生命
*成员变量
*方法的声明
*/
#import <Foundation/Foundation.h>
// 加上NSObject才能创建对象
@interface Person :NSObject
{
@public // 这样才能调用变量
<span style="white-space:pre"> </span>// 成员变量
int age:
double weight;
}
// 方法声明
- (void)walk;
@end
// 2、类的实现
@implementation 类名
//实现@interface中声明的方法
- (void) walk
{
NSLog(@"%d岁、%f斤的人走了一段路", age, weight);
}
@end
int main()
{
// 在使用创建对象之前会将类加载进内存,类内只有对方法的声明
Person *p = [Person new ];
p->age = 20;
p->weight = 50.0;
// 调用方法
[p walk];
Person *p2 = [Person new ];
p2->age = 30;
p2->weight = 60.0;
[p2 walk];
return 0; // 运行 输出20岁、50.000000斤的人走了一段路
// 30岁、60.000000斤的人走了一段路
}