1.源文件对比
文件扩展名 |
源类型 |
.h |
头文件,用于存放函数声明 |
.c |
C语言源文件,用于实现头文件中声明的方法 |
文件扩展名 |
源类型 |
.h |
头文件,头文件包含类、方法、属性的声明。 |
.m/.mm |
类的实现文件,参与编译的文件,用来实现类中声明的方法 |
2.关键字对比
- C语言的关键字都可以在OC源程序中使用
- OC新增的关键字在使用时,注意部分关键字以"@"开头
3.数据类型对比
类型 |
描述 |
BOOL |
只有两个取值真和假 |
NSObject * |
OC中的对象类型 |
id |
动态对象类型,万能指针 |
SEL |
选择器数据类型 |
block |
代码块数据类型 |
- OC中的类
- Objective-C是一种面向对象的语言,定义类是它的基本能力。
- 那什么是类呢?类是用来描述对象的,它是一系列方法和属性的集合
- Objective-C的类声明和实现包括两个部分:接口部分和实现部分。
- 想要定义方法也就C语言中的函数,那么就必须先有类的存在
4.流程控制语句对比
if 语句
switch语句
while语句
do while语句
for语句
break关键字
continue关键字
- 增强for循环,用于快速迭代数组或者集合
- C语言for循环
for (int i = 0; i < 10; i++){
printf(“%d”,i);
}
for (NSString *name in NSArray){
NSLog(@”%@”,name);
}
5.函数(方法)定义和声明对比
- C语言中函数的声明和实现
- 函数声明:int sum(int a,int b);
- 函数实现:int sum(int a,int b){ return a+b; }
- OC中的方法
- 方法声明:- (int)sum:(int) a andB:(int) b;
- 方法实现:- (int)sum:(int) a andB:(int )b{ return a+b; }
- 注意: 方法只能写在类里面, 而函数可以写在任何地方
- 对象方法,使用对象调用的方法
- 类方法,使用类名调用的方法
对象方法
- (id)initWithString: (NSString *)name;
类方法
+ (MyClass *)createMyClassWithString: (NSString *)name;
6.面相对象特性
7.面向对象新增语法
//声明属性
@property (nonatomic,strong)NSString *name;
//合成属性
@synthesize name = _name;
@interface NSString (MyNSString)
- (NSString *) encryptWithMD5;
@end
- 协议
- 使用协议声明方法
- 协议类似于C#,java中的接口
@protocol MyProtocol
- (void)myProtocolMethod;
@end
- Fundation框架
- 创建和管理集合,如数组和字典
- 访问存储在应用中的图像和其他资源
- 创建和管理字符串
- 发布和观察通知
- 创建日期和时间对象
- 操控URL流
- 异步执行代码
8.新增异常处理
- 用于处理错误信息
- 格式:
- @try .... @catch .... @finally
- 示例
//创建对象car
Car *car = [Car new];
@try {
//调用一个没有实现的方法
[car test];
}@catch (NSException *exception) {
NSLog(@"%@",exception.name);
}@finally {
NSLog(@"继续执行!\n");
}
9.#import和#include区别
-
#import与#include的类似,都是把其后面的文件拷贝到该指令所在的地方
-
#import可以自动防止重复导入
-
#import <> 用于包含系统文件
-
#import""用于包含本项目中的文件
-
#import , 告诉编译器找到并处理名为Foundation.h文件,这是一个系统文件,#import表示将该文件的信息导入到程序中。
-
框架地址: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneO S.sdk/System/Library/Frameworks/
10.NSLog 和printf区别
NSLog(@“this is a test”); //打印一个字符串
NSString *str = @"hello xiaomage!”;
NSLog(@"string is:%@",str);//使用占位符,%@表示打印一个对象,%@ OC特有的
NSLog(@"x=%d, y=%d",10,20);//使用多个占位符,%d表示整型数
11.“@”的使用方法
- 在OC中“@”有特殊的用法
- @"" 这个符号表示将一个C的字符串转化为OC中的字符串对象NSString.
- @符号 OC中大部分的关键字都是以@开头的,比如@interface,@implementation,@end @class等。
12.NS前缀
- NS来自于NeXTStep的一个软件 NeXT Software
- OC中不支持命名空间(namespace)
- NS是为了避免命名冲突而给的前缀
- 看到NS前缀就知道是Cocoa中的系统类的名称