稳定性排序与不稳定性排序:
稳定性排序(冒泡排序):被排序的数中如果有相同的数,那么排序前和排序后两者的位置不会调换
不稳定性排序(选择排序):被排序的数中如果有相同的数,那么排序前和排序后两者的位置会发生变换
选择排序:选取一个元素(第一个),依次和其他元素作比较,不符合条件调整元素位置
#define 定义宏的命令 + 宏的名字(一般都是大写字母) + 你想替换的内容
闰年:(year%4==0 && year%100 != 0) || (year%400 == 0)
oc类中,<>代表导入系统库文件,””代表导入自定义头文件
首字母需要大写:工程名,类名
首字母需要小写:方法名,变量名
for-in语句遍历字典的时候,遍历的是key值
数组排序:sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)
数组排序:sortedArrayUsingSelector:@selector(compare:)
自动释放池:类似一个栈结构,当对象调用autorelease时,但是调用的对象没有立即释放,当自动释放池销毁时,调用对象释放
内存管理的特殊情况
1.成员变量是指针变量时,init中开辟空间,dealloc中释放(析构方法)
2.如果对象发生指针转移,需要release旧对象,retain新对象
3.从数据结构中取出对象,如长时使用,需要retain
数组存储的是对象的引用,(被放入数组的元素的引用计数+1)
__strong是强引用关键字:强引用关键字修饰的对象,指向某块内存空间时,计数器+1,当对象不指向此内存空间时,引用计数-1
__weak是弱引用关键字:弱引用关键字修饰的对象,仅仅指向内存空间,不持有内存的引用计数(不+1),当指向这块内存空间所有的强引用的对象离开此内存后,弱引用对象自动指向nil
__unsafe_unretained 此关键字修饰的对象,指向内存空间是也不做内存计数加1,当指向此内存空间的所有的强引用移除后,此对象不会自动的置nil,而是继续指向这块被释放的内存
__autoreleasing 一般在函数需要传入地址时,用其修饰
把类和数据结构,转换成二进制的过程,称为归档
解档,反归档
在解档和归档的过程中,如果用到了自定义的类,就必须实现NSCoding协议
稳定性排序(冒泡排序):被排序的数中如果有相同的数,那么排序前和排序后两者的位置不会调换
不稳定性排序(选择排序):被排序的数中如果有相同的数,那么排序前和排序后两者的位置会发生变换
选择排序:选取一个元素(第一个),依次和其他元素作比较,不符合条件调整元素位置
#define 定义宏的命令 + 宏的名字(一般都是大写字母) + 你想替换的内容
闰年:(year%4==0 && year%100 != 0) || (year%400 == 0)
oc类中,<>代表导入系统库文件,””代表导入自定义头文件
首字母需要大写:工程名,类名
首字母需要小写:方法名,变量名
for-in语句遍历字典的时候,遍历的是key值
数组排序:sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)
数组排序:sortedArrayUsingSelector:@selector(compare:)
自动释放池:类似一个栈结构,当对象调用autorelease时,但是调用的对象没有立即释放,当自动释放池销毁时,调用对象释放
内存管理的特殊情况
1.成员变量是指针变量时,init中开辟空间,dealloc中释放(析构方法)
2.如果对象发生指针转移,需要release旧对象,retain新对象
3.从数据结构中取出对象,如长时使用,需要retain
数组存储的是对象的引用,(被放入数组的元素的引用计数+1)
__strong是强引用关键字:强引用关键字修饰的对象,指向某块内存空间时,计数器+1,当对象不指向此内存空间时,引用计数-1
__weak是弱引用关键字:弱引用关键字修饰的对象,仅仅指向内存空间,不持有内存的引用计数(不+1),当指向这块内存空间所有的强引用的对象离开此内存后,弱引用对象自动指向nil
__unsafe_unretained 此关键字修饰的对象,指向内存空间是也不做内存计数加1,当指向此内存空间的所有的强引用移除后,此对象不会自动的置nil,而是继续指向这块被释放的内存
__autoreleasing 一般在函数需要传入地址时,用其修饰
把类和数据结构,转换成二进制的过程,称为归档
解档,反归档
在解档和归档的过程中,如果用到了自定义的类,就必须实现NSCoding协议