oc是面向对象的语言;
遵从ANSI C 标准C语法,使用了Smalltalk的方法
第一个oc程序;
#import <Foundation/Foundation.h> | 告诉编译器找到并处理名为Foundation.h的文件,这是一个系统文件; #import表示将该文件信息导入到程序中 |
int main(int argc, const char * argv[]){ | 这是程序的入口 参数argc-参数数目 argv - 参数值 |
@autoreleasepool { | 自动释放池,用于回收对象的存储空间 |
NSLog(@"我要装逼!"); | NSLog是Foundation框架提供的输出函数,可以格式化输出 |
}
return 0; | 安全退出 |
}
NSLog的介绍
NSLog是cocoa的框架中提供的一个方法
NSLog定义在NSObjCRuntime.h中
基本上,NSLog很像printf,同样会在console中输出显示结果。不同的是,传递进去的格式化字符是NSString 的对象,而不是chat *这种字符串指针
用法:
NSLog(@"this is a test"); //打印一个字符串
NSString *str = @"hello world!";
(@"string is:%@",str);//使用占位符,%@表示打印一个对象,%@ OC特有的
NSLog(@"x=%d, y=%d",10,20);//使用多个占位符,%d表示整型数
不能使用Printf打印OC中的对象 (%@占位符不能用),没有结果。
@的使用
在OC中“@”有特殊的用法
1)@"" 这个符号表示将一个C的字符串转化为OC中的字符串对象NSString.
2)@标识符 OC中大部分的关键字都是以@开头的,比如@interface,@implementation,@end
2、OC中注释 OC中的注释有两种:
1)单行注释:
//
2)多行注释:
/* */
3)文档注释
/**
* 狗吃食物的方法
@class等。
*
* @param foodName 参数描述
*/
程序编译时,不对注释做任何处理
注意可以出现在程序的大部分的位置。
源文件对比
扩展名 | 含义 |
.h | 头文件 |
.c | c语言源文件 |
.cpp .c | c++语言的源文件 |
.m | OC的源文件 |
.mm | OC++的源文件 |
oc中常用文件有两种:
.h | 头文件,头文件包含方法,属性的声明 |
.m | 类的实现文件,参与编译的文件,用来实现类中声明的方法 |
oc的基本数据类型
类型 | 描述 |
BOOL | 字面常量值是YES或者NO |
NSObject * | OC中的对象类型 |
id | 动态对象类型,万能指针 |
SEL | 选择器数据类型 |
block | 代码块数据类型 |
方法
函数(方法)定义和声明对比
C语言中函数的声明和实现
函数声明:
nt sum(int a,int b);
函数定义
int sum(int a,int b){
return a+b; }
OC语言中函数习惯称之为“方法”
方法声明:
-(int)sum:(int) a and:(int) b;
方法定义
-(int)sum:(int) a and:(int )b{
return a+b; }
Boolean
Boolean 类型指的是用于存储真值和假值的变量,一般用于程序流程控制.
Boolean类型数据允许取值true 或 false, 也可以是0或非0的整数替代true和false ,这点和java语言不同.
int main(int argc , const char * argv[] ){
@autoreleasepool{
//逻辑型,用于存放true(真) 或者fales(假)
Boolean flag = true;
if(flag==1){
NSLog(@"xxxxxx");
}
}
return 0;
}
BOOL也是用作逻辑判断
OC 中的新增异常捕捉方法
@try .... @catch .... @finally
格式:
@try {
< #statements#>
}
@catch (NSException *exception) { //捕捉最具体的异常类型 < #handler#>
}
@catch (NSException *ne) { //捕获一个比较重要的异常类型。
}
@catch (id ue) { //再次掷出捕获的异常。
}
@finally { //不管有没有异常finally内的代码都会执行。 < #statements#>
}
代码有可能抛出有可能抛出的异常是封闭在一个@ try块。 @catch()块包含为@ try 块抛出的 异常的异常处理逻辑。一个@ finally块包含代码必须执行是否引发异常与否。您可以使用@throw指令抛出一个异常,这基本上是一个对Objective – C对象的指针。你可以使用NSException对象 但不限于他们