摘要: 1.使用场景:一般在一个函数的前面和后面都是重复性的东西,只有中间变化,一般使用block 2.注意事项 01:可以访问外面的变量(作用域问题) 02.里外变量同名的时候,访问里面那个(就近原则) 03.可以访问外面的变量,但是不能改外面的值,因为不是同一个地址(只是copy了一份,值传递) 04. 阅读全文
posted @ 2018-01-26 00:24 gaogaihui 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 1. block是oc特有的一种数据类型(数据类型:定义变量,做行参,做返回值,需要声明和初始化) 2. 功能与函数类似,用于保存一段代码,实现一个功能(需要调用) 3. 可以有返回值,有参数 需要声明,初始化,调用 4. 书写格式: void (^ sumblock)(int , int ); / 阅读全文
posted @ 2018-01-26 00:23 gaogaihui 阅读(211) 评论(0) 推荐(0) 编辑
摘要: 线程的显式,隐式 管理线程的生命周期方面 共享数据的安全问题 使用的场景方面 NSThread: 是一种轻量级的线程,显式的线程创建方法,很直白的创建了一个线程,可以对线程做一下详细的处理,比如说名称,优先级 缺点:需要对共享数据做加锁处理 需要自己管理线程的生命周期(比如说创建) GCD: 是基于 阅读全文
posted @ 2018-01-26 00:21 gaogaihui 阅读(724) 评论(0) 推荐(0) 编辑
摘要: 把字典里面的内容直接转换为数据模型的属性,加载数据源的时候会经常需要这样做 方法名:setValueForKeysWithDictionary 使用这个方法就可以直接转换为模型的属性了 对于模型里面属性比较简单,没有嵌套的都可以直接使用字典转模型,有多层嵌套的是否能用,未研究 创建一个模型对象 直接 阅读全文
posted @ 2018-01-26 00:18 gaogaihui 阅读(211) 评论(0) 推荐(0) 编辑
摘要: 在UITablview里面滑动的时候,返回cell的那个方法会不断的被重复调用,导致数据多次被下载,并且每次下载都需要加载网络数据,耗时太多,卡顿 2个问题: 重复下载:每次滑动,重复调用 卡顿:每次调用都发送网络请求,耗时 内存缓存:创建一个临时字典用于保存数据,也就是做内存缓存(内存缓存在程序每 阅读全文
posted @ 2018-01-26 00:17 gaogaihui 阅读(199) 评论(0) 推荐(0) 编辑
摘要: 在处理多个图片下载、缓存的问题上: 首先是判断缓存里面是否有,没有的话,发送网络请求,为了保证界面不卡顿,在子线程里面发送请求,并且把数据处理好,同时存储一份在缓存里面(发请求,处理数据,存储数据都在子线程里面做) 子线程:创建一个队列(主、非主),创建一个操作,把操作添加到队列里面 存储:利用NS 阅读全文
posted @ 2018-01-26 00:16 gaogaihui 阅读(232) 评论(0) 推荐(0) 编辑
摘要: 当前控制器自己设置自己界面导航条想要的样式 导航条的内容由栈顶控制器的navagationitem 决定,每一个子控制器利用navagationitem设置当前自己页面导航条的样式 但其实导航条只有一个,只是在每一个界面,按照自己界面的样式显示 导航条里面一般由5个属性可以设置:标题,标题控件,左右 阅读全文
posted @ 2018-01-26 00:13 gaogaihui 阅读(299) 评论(0) 推荐(0) 编辑
摘要: #import 会把@interface的内容拷贝到当前的位置 并且@interface里面的内容但凡发生改变,就会无休止的重新拷贝 所以,当两个类相互使用的时候,如果用#import,其中的一个内容会一直变化,它也会一直拷贝,所有就会造成死循环(a中的interface被拷贝到b中,b中的发生变化 阅读全文
posted @ 2018-01-26 00:12 gaogaihui 阅读(101) 评论(0) 推荐(0) 编辑
摘要: 数组会对它里面的每一个元素进行一次强引用,保证不会释放 initwithrootview 但凡是通过initwithroot,add加载的东西也都是强引用了一次 所以,说把局部变量的导航控制器赋值给窗口的根视图时候,导航控制器(局部变量)依然存在,不会销毁 但是,子定义窗口的时候用局部变量就不信行 阅读全文
posted @ 2018-01-26 00:11 gaogaihui 阅读(270) 评论(0) 推荐(0) 编辑