oc语言--语法
一、OC简介
1.简介
它是C语言的基础上,增加了一层面向对象语法
OC完全兼容C语言
可以在OC代码中混入C语言代码,甚至是C++代码
可以使用OC开发mac OS X平台和IOS平台的应用程序
2.关键字
1> 基本上所有的关键字都是以@开头
2> 关键字
@interface、@implementation、@end
@public、@protected、@private、@selector
@try、@catch、@throw、@finally
@protocol、@optional、@required、@class
@property、@synthesize、@dynamic
self、super、id、_cmd、__block、__strong、__weak
3> 字符串以@开头
例如@"Hello"是OC中的字符串,而"Hello"则是C语言中的字符串
4> OC程序开发过程
5> 跟C语言一样,OC成粗的入口依然是main函数
终端指令也一样。编译cc –c main.m ;链接cc main.o ;运行./a.out
6> NSLog和printf的区别
① NSLog接收OC字符串作为参数,printf接收C语言字符串作为参数
② NSLog输出后会自动换行,printf输出后不会自动换行
③ 使用NSLog需要 #import <Foundation/Foundation.h>
④ 使用printf需要 #include <stdio.h>
7> #import的作用
① 跟#include一样,用来拷贝某个文件的内容
② 可以自动防止文件内容被拷贝多次,也就意味着头文件中不用加入下面的预处理指令了
#ifndef _STDIO_H_
#define _STDIO_H_
#endif
8> Foundation框架的作用
① 开发OC、iOS、Mac程序必备的框架
② 此框架中包含了很多常用的API(应用编程接口)
③ 框架中包含了很多头文件,若想使用整个框架的内容,包含它的主头文件即可
#import <Foundation/Foundation.h>
二、面向对象和面向过程的思想
OC是面向对象的,C是面向过程的。面向对象和面向过程只是解决问题的两种不同思想
1.面向对象和面向过程的区别
1>以用电脑看电影为例
a.面向过程
①打开电脑 ②播放电脑中的电影 ③关闭电脑
b.面向对象
①电脑 (开机、播放电影、关机)
2> 区别
① 面向过程关注的是解决问题需要哪些步骤;面向对象关注的是解决问题需要哪些对象
② 没有开发经验很难感受到它们的区别,两种思想都能达到解决问题的目的,但是解决思路不一样
三、类和对象的关系
1.OC中的面向对象
1> OC中的类相当于图纸,用来描述一类事物。也就是,要想创建对象,先有类
2> OC利用类来创建对象,对象是类的具体存在
3> 面向对象解决问题应该是先考虑需要设计哪些类,再利用类来创建多少对象
2.如何设计类
类的设计,只关注3样东西
1> 事物名称(类名):人(person)
2> 属性:身高(height)、年龄(age)
3> 行为(功能):跑(run)、吃饭(eat)
四、定义OC的类和创建OC对象
1.要拥有一个类,需要有两个步骤:类的声明和实现
1> 类的声明,声明对象的属性和行为
@interface Car : NSObject
{
int speed; //成员变量--速度
int wheels; //成员变量--车轮个数
}
- (void) run;// 跑的行为;方法的声明
@end
2> 类的实现,
@implementation Car // 类的实现
- (void) run // 方法的实现
{
NSLog(@"车跑起来了");
}
@end
2.创建对象
int main()
{
Car *c = [Car new]; // 创建车子对象,并且返回对象的地址,同时用指针保存对象地址
c->wheels = 3; //利用指针访问成员变量
c->speed = 300; //利用指针访问成员变量
[c run];// 对象调用方法,[行为执行者 行为名称];同时也是OC的消息机制,给指针所指向的对象发送一条消息
return 0;
}
3.常见错误和注意点
1> 常见错误
只有类的声明,没有类的实现
漏了@end
@interface和@implementation嵌套
两个类的声明嵌套
成员变量没有写在括号里面
方法的声明写在了大括号里面
2> 注意点
成员变量不能在{}中进行初始化、不能被直接拿出去访问
方法不能当做函数一样调用
成员变量、方法不能用static等关键字修饰,不要跟C语言混淆
类的实现可用写在main函数的后面,主要在声明后面就行了
五、OC方法和函数的区别
1.常见错误
OC方法只能声明在@interface和@end之间,只能实现在@implementation和@end之间。也就是说OC方法不能独立于类存在
C函数不属于类,跟类没有联系,C函数只归定义函数的文件所有
C函数不能访问OC对象的成员
易犯错误:方法有声明,但是实现的时候写成了函数
2.OC方法注意
方法只有声明,没有实现(经典错误)
方法没有声明,只有实现(编译器警告,但是能调用,OC的弱语法)
编译的时候:访问没有声明的成员变量直接报错,访问没有声明的方法,只是警告
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。