OC入门

331 阅读4分钟
  • 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;
      }