OC基础学习1

  1. Objective-C相对于C
    a. 简称obj-c 或 oc
    b. 是面向对象的c语言;本质是C语言,将C语言复杂的部分封装的更简单
    c. 完全兼容c语言,所以可以直接写c语言

    C优势:
    高级语言,可移植性高

  2. OC程序的源文件的后缀名是.m,m代表message 代表oc中最重要的一个机制 消息机制
    C程序的源文件后缀名是.c

  3. main函数仍然是OC程序的入口和出口
    int类型的返回值 代表程序的结束状态
    main函数的参数:仍然可以接收用户运行程序的时候传递数据给程序

  4. #import指令
    a. 以#开头,是1个预处理指令
    b. 作用:是#include指令的增强版,将文件的内容在预编译的时候拷贝到写指令的地方
    c. 增强:同1个文件无论#import几次,只会包含1次
    --------如果#include指令要实现这个效果 就必须配合条件编译指令来实现
    --------而#import指令只要直接包含就可以 ,其他什么都不用作
    d. 简要原理:#import指令在包含文件的时候,底层会先判断这个文件是否被包含,如果被包含就会略过 否则才会包含

  5. 框架
    a. 是1个功能集
    b. Foundation框架
    -------提供了一些最基础的功能 输入和输出 ,一些数据类型
    -------Foundation.h这个文件中包含了Foundation框架中其他所有的头文件,所以我们只要包含Foundation.h就相当于包含了Foundation框架中所有的头文件(自己制造静态库也是这样,弄一个.h文件暴露给外面,这个.h文件只是包含了其他所有的头文件)。那么Foundation框架中的所有的函数和类就可以直接使用

  6. @autoreleasepool自动释放池
    可以将代码写在自动释放池,或直接将自动释放池删掉 不会有任何影响

  7. NSLog函数
    a. #import <Foundation/Foundation.h>
    b. 作用:是printf函数的增强版,向控制台输出信息
    c. 语法:NSLog(@"格式控制字符串",变量列表);
    -------最简单的语法:NSLog(@"要输出的信息");
    d. 增强:
    --------输出一些调试相关信息:执行代码的时间、当前程序的名称、进程的编号PID、线程编号、输出的信息
    --------会自动换行
    --------OC中其实新增了一些数据类型,NSLog函数不仅可以输出C数据类型变量的值还可以输出OC新增的数据类型的变量值
    e. 用法和printf函数差不多,一样可以输出变量的值,并且占位符的用法一样
    f. 使用注意:
    --------NSLog函数的第1个参数前面必须加1个@符号
    --------如果手贱在字符串中末尾加了1个’\n’代表换行,那么函数自动换行功能就会失效

  8. 字符串
    a. c语言的字符串的存储方式
    --------使用字符数组存储
    --------使用字符指针
    b. OC中设计了1个更为好用的用来存储字符串的1个类型:NSString
    --------NSString 类型的指针变量 专门用来存储OC字符串的地址
    c. OC的字符串常量必须使用1个前缀@符号
    --------"jack"是1个C语言字符串
    --------@"jack"是1个OC字符串
    --------NSString类型的指针变量,只能存储OC字符串的地址
    --------NSString *str=@"jack";
    e. NSLog函数的第1个参数是1个oc字符串,所以NSLog函数的第1个实参应该以@符号开头
    --------如果要使用NSLog函数输出OC字符串的值,那么使用占位符%@

  9. NS前缀
    a. NextStep --> Cocoa --> Foundation框架之中

  10. @符号
    a. 作用:将C字符串转换为OC字符串
    --------“jack” @“jack”
    b. OC中绝大部分关键字都以@符号开头

  11. 注释
    和C一样,分单行注释和多行注释

  12. 函数
    与C一样,定义与调用

  13. OC程序的编译、连接、执行
    a. 在.m文件中写上符合OC语法规范的源代码
    b. 使用编译器将源代码编译成目标文件xx.o
    --------cc -c xx.m
    --------预处理 检查语法 编译
    c. 链接
    -------cc xx.o
    -------如果程序中使用到了框架中的函数或者类,那么在链接的时候,就必须告诉编译器去那1个框架中找这个函数或者类
    --------cc xx.o -framework 框架名称
    --------cc main.o -framework Foundation
    --------程序中用到了那1个框架中的功能,那么就再这个地方告诉编译器
    d. 链接成功以后,就会生成1个a.out可执行文件 执行就可以了
    我们点击运行按钮,Xcode会帮我们干上面这些事情
    e.OC程序和C程序各个阶段的后缀名对比

源文件 目标文件 可执行文件
c .c .o .out
oc .m .o .out
  1. OC 中的数据类型
    a. OC中支持c语言中的所有数据类型
    -------基本数据类型:int double float char
    -------构造类型:数组 结构体 枚举
    -------指针类型:int *p1;
    -------空类型:void
    -------typedef自定义类型
    b. BOOL类型(常用这个)
    --------可以存储YES或NO中任意1个数据
    --------一般情况下BOOL类型的变量用来存储条件表达式的结果,如果成立,结果是YES(注意是大写
    --------BOOL本质typedef signed char BOOL;实际上BOOL类型的变量,是1个有符号的char变量
    c. Boolean
    --------可以存储true或false
    --------一般情况下Boolean类型的变量用来存储条件表达式的结果,如果成立,结果是true
    --------本质typedef unsigned char Boolean;
    d. class类型 类
    e. id类型 万能指针
    f. nil 与NULL差不多
    g. SEL 方法选择器
    h. block 代码块

  2. OC与C
    OC支持c语言中的运算符,并且效果一致
    OC支持控制语句,并且效果一致
    OC支持关键字,并且效果一致,但新增了一些关键字
    OC与C语言函数的定义和调用一样
    OC语言完全兼容c语言,在oc中可以写任意的c代码,并且效果一致

发布了93 篇原创文章 · 获赞 29 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/ljl1015ljl/article/details/103079628