OC的简介
Objective-C,通常写作ObjC或OC和较少用的Objective C或Obj-C,是扩充C的面向对象编程语言。它主要使用于Mac OS X和GNUstep这两个使用OpenStep标准的系统,而在NeXTSTEP和OpenStep中它更是基本语言。
1980年代初布莱德·考克斯(Brad Cox)在其公司Stepstone发明Objective-C。随后被苹果赶出的乔布斯创立的的NextStep买下版权,最终NextStep被苹果收购,老乔被召回了苹果并被称为Cocoa被苹果使用至今。
一.OC相对于C
- 在C的基础之上新增了一小部分面向对象的语法。
- 将C的复杂的,繁琐的,可恶的语法封装的更为简单。
- OC完全兼容C语言。
二.文件后缀
- OC程序的源文件的后缀名是 .m ,m代表message代表的是OC中最重要的一个机制——消息机制。
- C程序的源文件的后缀名是 .c 。
三.主函数
- main函数仍然是OC程序的入口和出口。
- int类型的返回值代表程序的结束状态。
- main函数的参数: 仍然可以接收用户在运行程序的时候传递数据给程序,参数也可以不要。
例如:
int main(void) {
return 0;
}
或者
int main(int grac, char* grav[]) {
return 0;
}
四.#import指令
1.以#开头,是一个预处理指令
2.作用:是#include指令的增强版,将文件的内容在预编译的时候拷贝在写指令的地方。
3.增强:同一个文件无论#import多少次,都只会包含一次。
如果#include指令要实现这个效果,就必须要配合条件编译语句指令来实现,而#import指令只需要直接包含就可以,其他的什么都不用做。
4.简要原理:#import指令在包含文件的时候,底层会先判断这个文件是否被包含,如果被包含则会略过,否则才会包含。
五.框架
1.框架的概念:是一个功能集。
苹果或者第三方事先将一些程序在开发程序的时候经常要用到的功能事先写好,把这些功能封装在一个一个的类或者函数中,有点像C语言的函数库。
2.Foundation框架
Foundation的翻译为:基础,基本。
这个框架中提供了一些最基础的功能,输入,输出,一些数据类型等等。。。
Foundation.h这个文件中包含了Foundation框架中的其他所有的头文件,所以,我们只要包含Foundation.h就相当于包含了Foundation框架中所有的头文件,那么Foundation框架中的所有的函数和类就可以直接使用。
六.@autoreleasepool
@autoreleasepool是自动释放池。
你可以将代码写在自动释放池之中,或者干脆把这个自动释放池删除,对于我们学习OC不会有任何影响。
int main(int grac, char* grav[]) {
@autoreleasepool {
//代码
}
return 0;
}
七.NSLog函数
1.作用:向控制台输出信息,是printf函数的增强版。
2.语法:
NSLog(@"格式控制字符串", 变量列表);
最简单的语法:
NSLog(@"输出信息");
3.增强:
a.输出一些调试相关信息:
- 执行这段代码的时间
- 程序的名称
- 进程的编号
- 线程的编号
- 输出的信息
例如:
int main(int grac, char *grav[]) {
@autoreleasepool {
float a = 11.11;
NSLog(@"a = %.2f", a);
}
return 0;
}
输出:
2021-05-22 13:56:32.957601+0800 OC基础学习[774:24585] a = 11.11
2021-05-22 13:56:32.957601+0800 是 执行这段代码的时间
OC基础学习 是 程序的名称
774 是 进程的编号
24585 是 线程的编号
a = 11.11 是 输出的信息
b.会自动换行
在输出完信息之后会自动换行。
c.可以使用OC中新增了一些数据类型
NSLog函数不仅仅可以输出C语言数据类型变量的值,还可以输出OC新增的数据类型的值。
4.用法和printf函数差不多,一样可以输出变量的值,并且占位符和用法都一样。
5.使用注意:
- NSLog函数的第一个参数前面必须要加一个@符号。
- 如果手贱在字符串的末尾加了一个’\n’代表换行,那么函数的自动换行功能就会失效。
八.字符串
1.C语言的字符串的存储方式:
- 使用字符数组存储。
- 使用字符指针。
2.OC中设计了一个更为好用的用来存储字符串的一个类型——NSString类型
NSString类型的指针变量专门用来存储OC字符串的地址。
3.OC字符串常量必须使用一个前缀@符号
例如:
"jack"这是一个语言的字符串
@"jack"这是一个OC的字符串
NSString类型的指针变量只能存储OC字符串的地址。
例如:
NSString* str = @"jack";
4.总结:
- 在OC中专门设计了一个NSString类型来存储字符串
- 字符串分为C字符串和OC字符串
字符串如果没有@前缀,那么这个字符串常量就是C字符串
字符串如果有@前缀,那么这个字符串常量就是OC字符串
所以,OC字符串常量前面必须要加一个@符号
- NSString类型的指针变量只能存储OC字符串
5.注意:
- NSLog函数第一个参数是一个OC字符串,所以NSLog函数的第一个实参应该以@符号开头
- 如果要使用NSLog函数输出OC字符串的值,那么使用占位符%@
九.NS前缀
乔布斯的NextStep当年买下了OC的版权,之后被苹果收购并创立了Cocoa,把其中的语法都放在Foundation框架之中,为了区分乔布斯当时收购OC的相关语法和后面自己创立的语法所以加了前缀NS。
十.@符号
- 将C字符串转换为OC字符串
- OC中的绝大部分的关键字都是以@符号开头的
十一.注释
和C语言一模一样
十二.函数的定义和使用
和C语言函数的定义和调用一模一样