------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
一.举例
1.OC程序的入口:main函数
int main()
{
printf("第一个OC程序\n")
return 0;
}
2.#import的用途:
1>跟#include一样拷贝文件的内容
2>可以防止文件的内容被重复拷贝
3.举例
#import<Foundation/Foundtion.h>
int main()
{
//NSLog输出内容会自动换行
NSLog(@"第二个OC程序!!!");
return 0;
}
4.主头文件
1>主头文件:最主要的头文件名字一般跟框架名称一样,包含了框架中的所有其他头文件
2>Foundation框架的主头文件名称就是Foundation.h
3>只需要包含Foundation框架主头文件就可以使用整个框架的东西
5.运行过程
1>编写OC的源文件:m.c
2>编译:cc -cxxx.m xxx.c
3>链接:cc xxx.o xxx.o---framework Foundation
4>运行 ./a.out
6.补充:BOOL(yes/no)
1>举例
#import<Foundation/Foundtion.h>
int main()
{
BOOL b = YES;
BOOL b2 = NO;
BOOL b3 = 1;
BOOL b4 = 0;
NSLog(@"%i",b);
return 0;
}
二.面向对象和面向过程
1.类的设计
1>类名
*类名的第一个字母必须是大写
*不能有下划线
*多个英文单词用驼峰标识
2>属性
3>行为
2.植物大战僵尸的僵尸
*类名:Zoomibie
*属性:life,speed,gongjili
*行为:walk,bite,die
三.类的声明和实现
1.举例
<pre name="code" class="objc">/*类名:car
属性:轮胎个数,时速
行为:跑 */
#import<Foundation/Foundtion.h>
//完整的写一个函数:声明和定义(实现)
//完整的写一个类:类的声明和实现
//1.类的声明:声明对象的属性和行为
@interface Car:NSObject
{
//用来声明对象属性或成员变量
@public
int wheels;
int speed;
}
-(void)run
@end
//类的实现:用来实现@interface中声明的方法
@implementation car
-(void)run
{
NSLog("@车子跑起来了");
}
@end
int main()
{
car *p = [car new];
p->wheels = 4;
p->speed = 50;
[p run]
NSLog("@车子有%个轮子,时速为:%km/h",p->wheels,p->speed);
return 0;
}
2.注意
1>只要是OC对象的方法,必须以减号—开头
2>OC方法中任何数据类型都必须用小括号()括住
3>OC方法中的小括号():括住数据类型
四.方法与成员变量
1.举例
/*类名:person
属性:体重,年龄
行为:走路 */
#import<Foundation/Foundtion.h>
//完整的写一个函数:声明和定义(实现)
//完整的写一个类:类的声明和实现
//1.类的声明:声明对象的属性和行为
@interface Person:NSObject
{
//用来声明对象属性或成员变量
@public
int age;
double weight;
}
-(void)walk;
@end
//类的实现:用来实现@interface中声明的方法
@implementation person
-(void)walk
{
NSLog(@"%d岁,%d公斤的人走了一段路",age,weight);
}
@end
int main()
{
Person*p = [person new];
p->age = 20;
p->weight = 50.0;
[p walk]
return 0;
}
2.解释
1>@interface就好像暴露在外面的时钟表面
2>@implementation就好像内部的构造实现
3.常见错误
1>int wheels = 4;不允许在这里初始化
2>static int wheels;不能随便将成员变量当做C语言中的变量来使用
4.OC方法的区别
1>对象方法都是以减号—
2>对象方法的声明必须写在@interface和@end之间,对象方法的实现必须写在@implementation和@end之间
3>对象方法只能由对象调用,对象方法归类所有
5.函数的区别
1>函数能写在文件中的任意位置,函数归文件所有
2>函数调用不依赖于对象
3>函数内部不能直接访问某个对象的成员变量
6.类的合理设计
/*类名:学生
属性:性别,生日,体重
行为:吃,跑步,遛狗,喂狗 */
typedef enum{
sexMan,
sexWoman
}Sex;
typedef struct{
int year;
int month;
int day;
}Date;
#import<Foundation/Foundtion.h>
@interface Student:NSObject
{
sex sex;
Date birthday;
double weight;
}
-(void)eat;
-(void)run;
@end
@implementation student
-(void)eat
{
weight += 1;
NSLog(@"吃完这次后的体重是%f",weight);
}
-(void)run
{
weight -= 1;
NSLog(@"跑完这次后的体重是%f",weight);
}
@end
int main()
{
Student*s = [student new];
s->weight = 50;
s->sex = SexMan;
Date d = {2011,9,10};
s->birthday = d;
return 0;
}
五.方法的声明和实现
/*计算器类
方法:
1>返回π
2>计算某个整数的平方
3>计算两个整数的和 */
#import <Foundation/foundation.h>
@interface JiSuanQI:NSObject
-(double)pi;
@end
@implementaton JiSuanQi
-(double)pi;
{
return 3.14;
}
@end
int main()
{
return 0;
}