#pragma mark - #import 指令
1.问题:什么是#import 指令?
是OC中的一个预处理指令,用来导入一个.h的头文件
2.怎么用?
#import + 要导入的头文件的名字.h
3.有什么特点
是防止重复包含同一个文件的#include,可以理解为#include的增强版。
#pragam mark - NSLog 函数
1.NSLog是什么?
是一个函数,但不是C语言中的函数,是OC的foundation框架中提供的一个函数,
在<Foundation/foundation.h>
2.有什么用?
用来在控制台上输出信息,就是OC中用来取代C语言中的printf函数的
3.怎么用
和printf用法一致
4.NSLog函数的特点
1>NSLog是printf的增强版拥有printf不具备的功能
1)输出当前应用程序的状态
2)自动换行
如果给NSLog函数手动添加一个换行这个换行会失效,添加多个就有效了
2>NSLog不能打印C语言中的中文字符串,如果强行打印,连这个字符串中的非中文字符也都无法打印
3>NSLog的格式: NSLog的格式控制字符串一定用@""括起来
4>NSLog还能打印OC中新增的数据类型
#pragam mark - BOOL 类型变量
1>
//BOOL类型就是有符号的char类型的别名。
typedef signed char BOOL;
//BOOL类型的变量内部储存的就是1 和 0,分别定义了宏名 YES NO
#define YES ((BOOL)1)
#define NO ((BOOL)0)
2>记住一句话,YES就是1,NO就是0,BOOL变量用来表示真假
#pragam mark - Boolean 类型
1.Boolean类型是什么?
//是无符号的char类型的别名
typedef unsigned char Boolean;
//Boolean变量中存储的就是1 或 0这两个整数,并分别起了宏名 true false
#define true 1
#define false 0
2.记住一句话,true就是1,false就是0,Boolean变量用来表示真假
"为什么OC中又有BOOL又有Boolean呢?
因为苹果为了吸引其他编程语言的开发者使用OC开发,于是把其他编程语言中(javascript/C++)表示真假的类型如Boolean,也给实现了.
#pragam mark - 类加载
当我们创建对象的时候,肯定要访问这个类,因为只有访问了类才知道类中有哪些成员
如果只是声明类的指针的时候,也会访问这个类.以确定这个类是否存在.
1>当类第一次被访问的时候,会将类存储到代码段之中.这个过程叫做类加载
将类的代码存储在代码之中
将类的代码以字符串的形式存储在代码段中
2>只有类第一次被访问的时候,才会有类加载.
一旦类被加载到代码区.直到程序结束的时候才会被回收
#pragam mark - 对象在内存中的存储细节
"问题
为什么对象中不存储方法,只存储属性?
1.不同的对象内部属性是不同的
2.不同的对象调用的方法的内容是相同的
3.所以对象中不存储方法,只存储属性,可以节省内存
#pragma mark - nil值
1.C语言中的NULL
1>是一个地址,这个地址的值就是0,表示不指向任何空间
2>NULL的底层实现:就是说0,表示不指向任何空间
#define NULL ((void*)0)
"nil
1.nil就是OC中表示一个地址为0的地址,完全等价于NULL
2.nil的底层实现就是NULL-->0
#define nil __DARWIN_NULL
#define __DARWIN_NULL ((void *)0)
3.建议
1>由于NULL是C语言的,如果不希望C语言中的指针指向任何数据,给这个指针赋值为NULL
2>由于nil是OC语言的,如果不希望OC语言中的指针指向任何数据,给这个指针赋值为nil
4.注意
1>如果一个指向OC对象的指针赋值为nil,表示这个指针吧不指向任何对象,此时访问属性编译不报警告,运行崩溃
2>如果一个指向OC对象的指针赋值为nil,表是这个指针不指向任何对象,此时访问方法编译不报警告,没有任何反应
#pragam marl - 方法与函数
"问题:OC中函数使用有什么注意点
1.函数是C语言的,因为OC兼容C,所以可以在OC中书写函数
2.方法是属于OC的,只能定义在类中
3.函数在OC中定义的位置
1>函数的声明除了类的声明中的花括号中不能写,其他任何地方都可以写.
2>函数的实现除了类的声明部分不能写,函数的内部不能写,其他地方都可以写
|
|