1、[UIImage imageWithName:@"xxx.png"] 和 [[NSBundle mainBundle] pathForResource:xxx ofType: xxx] 两种加载图片方式比较
a、[UIImage imageWithName:],把图片加载到系统内存cache中,系统不定时清理内存,正是不定时如果图片过多过大还没有
清理会导致内存溢出,但是它只需要加载图片一次,以后调用直接从缓存中取,只有频繁使用的小图片使用它来加载效率更高
b、[[NSBundle mainBundle] path...],直接从磁盘加载图片,图片下次加载的时候会自动释放第一次的图片,你也可以手动释放内存
2、static NSString * const
static:
a、局部静态变量 :初始化一次,下次调用不进行初始化
b、外部静态变量/函数:用于作用域限制,仅在本文件使用
c、静态数据成员/成员函数(c++):针对类而不是某个特定对象来说,比如:类中计数
const:
a、定义const常量: const double pi=3.1415
b、保护被修饰的东西,防止被意外修改: const int i {i = 1; // 修改报错}
c、如果const位于*的左边,用来修饰指针所指向的变量,表示指针指向为常量;如果const位于*右边,用来修饰指针本身,
表示指针本身是常量
如: const int * a;
int const * b;
int * const c;
这里的话,const int 和 int const是一样的,const都位于*的左边,修饰的是*a,*b,表示*a是常量,不能被更改
比如赋值:*a = 10和*b = 10 这个都是错误的
而第三个const位于*的右边,修饰的是c,表示c是常量,不能被修改
比如赋值:int age = 10; c = &age 这里的c赋值是错误的
static NSString *const:
仅声明一次的不能修改的指针,常用语定义常量
3、数组乱序:
1 NSArray *array = @[@1,@5,@9,@2,@6,@8]; 2 3 4 array = [array sortedArrayUsingComparator:^NSComparisonResult(NSNumber *no1, NSNumber *no2) { 5 6 int seed = arc4random_uniform(2); // 随机产生0和1 7 8 if (seed){ // 为1时候 9 10 return [no1 compare:no2]; 11 }else{ // 为0时候 12 13 return [no2 compare:no1]; 14 } 15 }]; 16 17 NSLog(@"%@",array);
4、类方法load和initialize的调用
1 // 当程序加载进内存时候调用 2 + (void)load 3 { 4 5 } 6 7 // 当第一次使用此类的时候调用 8 + (void)initialize 9 { 10 11 }