2017年iOS提高

来源:互联网 发布:java 英文 编辑:程序博客网 时间:2024/06/06 17:46

1.全局常量正规写法:全局变量不能定义在自己类中,开发中便于管理所有的全局变量,通常搞一个GlobeConst文件,里面专门定义全局变量,统一管理,要不然项目文件多不好找。

这里写图片描述

image

2.类方法中调用实例方法

[[[self class] alloc] 实例方法];

3.alert的取消注意点

 [_alert dismissViewControllerAnimated:YES completion:^{        _alert = nil;    }];

其实这个代码可以这样写,完成消失视图后,把这个alert赋kong,这个内存优化了一点

 [_alert dismissViewControllerAnimated:YES completion:nil]; // 一般我们是这样,但其实这时候的_alert没有赋空,还是占着内存的

1.对于NSLog,有时候我们测试,确实需要打上很多,但是有时候只需要哪里输出就可以,所以就会出现这些不太专业的,所以在测试完建议去掉,留下有信息量的输出

                    NSLog(@"------")

补充,对于系统的nslog我是比较少用的,我用的是第三方的NSLogger,不懂先github再百度看看是怎么回事,主要优点就是有单独的客户端输出系统,这样大面积的看输出比较爽

2.高封装,比如我有两个数组A和B,然后需要处理这个两个数组变成C数组,一般人的做法就是写个方法,方法里面直接调用A数组和B数组,返回C数组,然后控制器就这样直接调用这个方法了,
我的想法是,要有可复用性,封装性,所以这个方法应该是传两个参数,参数就是A数组和B数组

Snip20170427_1.png

3.循环语句注释问题

    while (i<n && q<m) {        if (q == -1 || T[i] == P[q]) {            i++;            q++;        }else {            q = next[q];        }    }// end while

补充:可以在

if(){ // begin if}// end if// 多层嵌套if() { //begin one if    if() { // begin two if    } // end two if}// end one if

4.为了防止block的循环引用,我们一般在block里面不会直接用self,
我们是用

__weak typeof(self) weakSelf = self;

但是每次我们要用这个,就得声明一下,好麻烦,这个变量又没法声明成全局,所以我们的解决方法是声明成宏

在宏文件中写

#define WeakSelf __weak typeof(self) weakSelf = self;

使用

- (void)loadNet {//    __weak __typeof(self) weakSelf = self;    // 加载网络课表数据    [_schoolTimeData loadSchoolTimeTable:^(id  _Nullable resultData) {        WeakSelf;        // 加载coll视图//        [weakSelf setUpCollectionView];        [weakSelf setUpCollectionView];    }];}
1 0
原创粉丝点击