-
OC相对于C
-
在C的基础上新增了一小部分面向对象的语法;
-
将C中复杂的、繁琐的语法封装的更为简单;
-
OC完全兼容C语法;
-
OC程序的源文件的后缀名是.m,m代表message,代表OC中最重要的一个机制 -> 消息机制
-
C程序的源文件后缀名是.c
-
main函数仍然是OC程序的入口和出口
-
int类型的返回值,代表程序的结束状态;
-
main函数的参数,仍然可以接受用户的在运行程序的时候传递数据给程序中,当然参数可以不要;
-
#import指令
-
以#号开头,是一个预处理指令,预处理指令的执行时机是在编译之前;
-
作用:是#include指令的增强版,将文件的内容在预编译的时候拷贝到写指令的地方;
-
增强的内容:
-
同一个文件无论#import多少次,只会包含一次;
-
如果#include指令要实现这个效果,就必须要配合条件编译指令来实现,而#import指令只需要直接包含就可以,其他什么都不用做;
-
简要原理:#import指令在包含文件的时候,底层会先判断这个文件是否被包含,如果被包含就会略过,否则才会包含;
-
框架
-
是一个功能集,苹果或者第三方事先将一些经常用到的功能写好,把这些功能封装在一个个类或者函数中,这些函数和类的集合就叫做框架,类似于C语音的函数库;
-
Foundation框架
-
Foundation:基础,基本的意思,这个框架中提供了一些最基础的功能,包括输入和输出,以及一些数据类型;
-
Foundation.h这个文件中包含了Foundation框架中的其他的所有头文件,所有,只需要包含Foundation.h,就相当于包含了Foundation框架中所有的头文件,那么Foundation框架中的所有的函数和类就可以直接使用;
-
@autoreleasepool是自动释放池
-
可以将代码写在自动释放池中,或者直接把这个自动释放池删除,不会有任何影响
-
NSLog函数
-
作用:是printf函数的增强版,向控制台输出信息
-
语法:
-
NSLog(@"格式控制字符串",变量列表);
-
最简单的语法:NSLog(@"要输出的信息");
-
增强内容:
-
输出一些调试相关信息
-
2022-10-19 19:35:27.698332+0800 Day01-OC基础语法[35625:1525582] Hello, World!
-
执行这段代码的时间 程序的名称 进程编号 线程编号 输出的信息
-
自动换行,在输出完信息之后,会自动换行
-
OC中新增了一些数据类型,NSLog函数不仅仅可以输出C数据类型变量的值,还可以输出OC新增的数据类型的变量的值
-
用法和printf函数差不多,一样可以输出变量的值,并且占位符和用法都一样
-
注意事项
-
NSLog函数的第一个参数前面必须要加一个@符号;
-
如果再字符串末尾加了一个”/n“代表换行,则函数的自动换行功能就回失效;
-
字符串
-
C语言的字符串的存储方式
-
使用字符数组储存
-
使用字符指针
-
OC中设计了一个更为好用的用来存储字符串的类型:NSString
-
NSString类型的指针变量,专门用来存储OC字符串的地址
-
OC的字符串常量必须要使用一个前缀@符号
-
"zrm":这是一个C语言的字符串
-
@"zrm":这是一个OC的字符串常量
-
NSString类型的指针变量,只能存储OC字符串的地址
-
NSString *str = @"zrm";指针变量str前必须加”*“
-
总结
-
在OC中专门设计了一个NSString类型来存储字符串
-
字符串分为C字符串和OC字符串
-
字符串如果没有@前缀,那么这个字符串常量就是一个C字符串
-
字符串如果有@前缀,那么这个字符串常量就是OC字符串
-
注意
-
NSLog函数的第一个参数是一个OC字符串,所以NSLog函数的第一个实参应以@符号开头
-
如果要使用NSlog函数输出OC字符串的值,那么使用占位符%@
-
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { // insert code here... NSString *name = @"zhourm"; NSLog(@"my name is:%@", name); } return 1; }