- OC语言是完全兼容C语言的,所以OC的程序入口也是main函数
- OC引入头文件的方式和C语言不同
- OC的引入头文件的预编译指令是#import
- C的引入头文件的预编编译指令是#include
- #import可以自动防止文件内容被重复定义
- #import的时候只要包含框架主头文件就可以使用整个框架的东西
OC语言的运行过程
- 编写OC源文件: .m , .c
- 编译:cc -c xxx.m, xx.c
- 链接:cc xxx.o,xxx.o -fraemwork Foundation(只有在用到了Foundation框架才需要加上-fraemwork Foundation)
- 运行: ./a.out
OC语言的输出语句是NSLog(@”“)
- 这个函数的输出内容会自动换行
- 在双引号前必须加上@
- OC的基本数据类型和C语言基本相同,唯一一点区别就是多了BOOL类型
- BOOL类型本质上是char类型
- BOOL类型有只有两个返回值YES和NO
- OC语言类的设计:
- 类名
- 类名的第一个字母必须是大写
- 不能有下划线
- 多个英文单词用驼峰标识
- 属性
- 行为(功能)
- 类名
- 类的声明
- 用来声明对象的属性、行为
- 用@interface 类名:NSObject @end
- 在声明成员变量的时候必须用大括号括起来,要让对象调用到成员变量必须写上@public
- 声明成员方法的时候必须以减号 - 开头;
- OC方法中任何数据类型都必须用小括号()扩住
- OC方法的小括号()扩住数据类型
@interface Car:NSObject
{
@public
int wheels;
int speed;
}
-(void) run;
@end
- 类的实现
- 用来实现@interface中声明的方法
- 类的实现用@implementation @end来实现
- 方法的实现(说清楚方法里面有什么代码)
@implementation Car
-(void) run
{
NSLog(@"车子跑起来了");
}
@end
- 在OC中,想要执行一些行为,就写上一个中括号[行为执行者 行为名称]
- 利用类来创建对象
- 创建一个对象:[类名 new],并且会返回对象本身(对象的地址)
- 类的实质是一个结构体
- 可以定义指针变量来指向类的对象
int main()
{
Car *p = [Car new];
Car *p2 = [Car new];
p2->wheels = 5;
p2->speed = 300;
//给p所指向对象的wheels属性赋值
p->wheels = 4;
p->speed = 250;
//给p所指向对象发送一条run消息
[p run];
NSLog(@"车子有%d个轮胎,时速为:%dkm/h",p->wheels,p->speed);
return 0;
}
一些常见的错误如下
/*
1.@interface和@implementation不能嵌套
2.方法声明在@interface,方法实现在@implementation
3.有对象的时候才能访问成员变量
4.在@interface的时候不允许给成员变量赋值,不能重复定义
5.在@interface定义变量是,不能随便将成员变量当做C语言中的变脸来使用
例: static int wheels;是不允许的
6.没有内部方法,static不能修饰成员变量和成员方法
7.程序运行从上往下,先声明后使用。
8.函数和方法的区别:
方法:
*对象方法都是以减号开头 -
*必须写在@interface和@implementation里
*对象方法只能由对象来调用
*对象方法归类\对象所有
函数:
*函数属于文件,可以写在文件的任意位置,但是不能写在@interface面
*函数不依赖于对象
*函数内部是不能直接通过成员变量名访问某个对象的成员变量
*/
- OC方法中一个参数对应一个冒号,其中冒号也是方法名的一部分