- 博客(15)
- 收藏
- 关注
转载 RunTime
前言runtime的资料网上有很多了,部分有些晦涩难懂,我通过自己的学习方法总结一遍,主要讲一些常用的方法功能,以实用为主,我觉得用到印象才是最深刻的,并且最后两个demo也是MJExtension的实现原理,面试的时候也可以多扯点。另外runtime的知识还有很多,想要了解更多可以看我翻译的官方文档(有点枯燥),本文的demo下载地址什么是runtime?runtim
2017-02-27 17:07:41 395
原创 数据存储方式IOS---归档与解档
一:归档与解档(1::::::)归档1:保存数据到模型类,如下:- (instancetype)initWithDic:(NSDictionary*)dic{ self = [superinit]; if (self) { // //转模型 for
2017-02-27 15:29:50 570
转载 NSCache
NSCache是系统提供的一种类似于集合(NSMutableDictionary)的缓存,它与集合的不同如下:1. NSCache具有自动删除的功能,以减少系统占用的内存;2. NSCache是线程安全的,不需要加线程锁;3. 键对象不会像 NSMutableDictionary 中那样被复制。(键不需要实现 NSCopying 协议)。NSCache的属性以及方法
2017-02-27 10:28:20 440
转载 关于头文件中的 static inline函数
内联函数有些类似于宏。内联函数的代码会被直接嵌入在它被调用的地方,调用几次就嵌入几次,没有使用call指令。这样省去了函数调用时的一些额外开销,比如保存和恢复函数返回地址等,可以加快速度。不过调用次数多的话,会使可执行文件变大,这样会降低速度。相比起宏来说,内核开发者一般更喜欢使用内联函数。因为内联函数没有长度限制,格式限制。编译器还可以检查函数调用方式,以防止其被误用。static inli
2017-02-27 10:16:17 2478
原创 既然设置了ARC,为什么还要使用@autoreleasepool
用@autoreleasepool是有用的。正常情况下,你创建的变量会在超出其作用域的时候被释放掉。而如果你的函数写的很长,在你函数运行过程中出现很多中间变量,占据了大量的内存,怎么办?用@autoreleasepool。在@autoreleasepool中创建的变量,会在@autoreleasepool结束的时候执行一次release,进行释放。其实@autoreleasepoo
2017-02-24 17:40:54 1243 1
转载 NSOperation
2016年03月29日10:42:36更新感谢@皮特尔 的提醒在iOS开发中,谈到多线程,大家第一时间想到的一定是GCD。GCD固然是一套强大的多线程解决方案,能够解决绝大多数的多线程问题,但是他易于上手难于精通且到处是坑的特点也注定了想熟练使用它有一定的难度。而且很多人嘴上天天挂着GCD,实际上对它的实际应用也不甚了解。再者说,在现在的主流开发模式下,能用到多线程的绝大多
2017-02-24 16:08:41 341
原创 __block 与__weak
1.__block不管是ARC还是MRC模式下都可以使用,可以修饰对象,还可以修饰基本数据类型。 2.__weak只能在ARC模式下使用,也只能修饰对象(NSString),不能修饰基本数据类型(int)。 3.__block对象可以在block中被重新赋值,__weak不可以。 4.__block对象在ARC下可能会导致循环引用,非ARC下会避免循环引用,__weak只在ARC下使用
2017-02-24 14:58:52 378
原创 NSMutableSet 与NSMutableArray
我们常常使用NSMutableSet与NSMutableArray来保存一些信息,但是有些细节经常的忘记,今天就随手记录下来:NSMutableSet是一个集合,它有几个特点:1、没有顺序,所有元素并非按照加入顺序排列2、重复元素只会添加一个,因此不用担心里面的元素有重复此处可以做一个测试,[plain] view plain copy
2017-02-24 14:20:18 764
原创 NS_ENUM和NS_OPTIONS
下面来简单的解释一下OC里枚举的两种类型.NS_ENUM和NS_OPTIONS本质上是一样的都是枚举.我举个例子. typedef NS_ENUM(NSInteger, UIViewAnimationTransition) { UIViewAnimationTransitionNone, UIViewAnimationTransitionFlipFromLeft,
2017-02-24 14:12:59 360
转载 tableView的性能优化
现在市场上的iOS应用程序界面中使用最多的UI控件是什么? 答案肯定是UITableView,几乎每一款App都有很多的界面是由UITableView实现的,所以为了做出一款优秀的App,让用户有更好的体验效果,如何做好tableView的优化将是很重要的一环.>1. 要保证滚动tableView时,让用户有良好的体验,需要确保刷新帧率应该在 50+/s 才可以!(instrument中Cor
2017-02-15 14:59:18 427
原创 MVVM解析
开篇MVC Model-View-Controller是一个用来组织代码的权威范式。Apple甚至是这么说的。在MVC下,所有的对象被归类为一个model,一个view,或一个controller。Model持有数据,View显示与用户交互的界面,而View Controller调解Model和View之间的交互。 MVVM MVVM的出现主要是为了解决在开发过程中Controller越来
2017-02-15 14:22:12 380
转载 tableViewCell中添加webView,cell自适应webView高度,解决死循环的简单办法
不管是使用代理还是使用通知传递高度的值,要改边tableviewcell的高度,都需要刷新表,但是这个表刷新,>又要导致webview代理方法的运行,这样形成一个死循环在cell.m文件里面这个方法是在webview请求成功的时候走的,(如果该方法不走,说明请求不成功)在此方法中获取webview的内容高度- (void)webViewDidFinishLoad:(UIWebV
2017-02-15 13:29:46 1217
转载 iOS 状态栏颜色更改
状态栏的字体为黑色:UIStatusBarStyleDefault状态栏的字体为白色:UIStatusBarStyleLightContent一、在info.plist中,将View controller-based status bar appearance设为NO状态栏字体的颜色只由下面的属性设定,默认为白色:// default is UIStatusBarStyleDefa
2017-02-10 09:26:05 263
原创 BLOCK循环引用
循环引用的原因众所周知,ARC下用block会产生循环引用的问题,造成泄露的原因是啥呢?最简单的例子,如下面代码:123[self.teacher requestData:^(NSData *data) { self.name = @"case";}];此种
2017-02-06 10:51:46 362
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人