-
关于抱怨和不满
二十过半的我经常能听到这样的声音:我这工作怎么怎么不好了、当初要是选择那个又怎样怎样了、以后我应该干嘛呢…等等确实,我们这个年龄段的绝大部分人仍然是迷茫的。许多人的家庭都很普通,没权没钱没势,不可能像国民老公那样先从老爹那儿拿个5亿练练手,又由于父母的社会地位在那儿,遇到事情别人多少都会给点面子,所以比较一下后默默放下了“先赚他一个亿”的小目标。但我们这代人基本都受过高等教育,不愿像上一代一样普普通通,总想搞出一番事业(搞事情),却发现不知道第一步怎么走。但在我看来却是我们不敢走这第一步,...…
-
关于截取app页面长图
前几天听朋友说他们项目准备加一个功能,就是将页面所有的内容截取出来生成一张长图,我想这是什么需求,有页面分享为嘛要分享长图o(╯□╰)o。后来某天在公司浏览简书的文章的时候无意发现了简书居然有这个功能,然后赶紧打开简书的app,果然app也有这个截长图的功能,事实证明我毕竟不是产品经理的料。后来就开始研究这个东西,查了一些绘图的资料后终于找到方法了,试验后果然可行。普通截图CALayer类有个方法renderInContext:,这个方法用来截取layer层的图像,传入一个图形上下文,最后...…
-
关于取消网络请求
今天猛地一下突然想到很久以前遇到的一个面试问题,如果一个网络请求已经发送,但是请求还没有完成,这时我想取消这个请求怎么办?刚刚查了查资料,自己也想了想,下面就从这个需求说起。这个需求有何意义?如果说这只是一个单纯地面试题,那么它将毫无意义,那如果不是呢?一个完整的网络请求是由客户端向服务器发起http请求,再由服务器发送responseObject给客户端(中间的其他关于握手传送的数据包我们暂且不论),这就包含了上行流量和下行流量,这些都是会包含在用户总流量中的(说到这儿大家是不是开始有自...…
-
iOS开发调试总结
软件开发工作,调试是必备技能,重要性不多说。而调试方法在不同的平台和语言中大部分都是可以互相迁移借鉴的。不同语言、不同IDE、不同平台的调试,有同性也有个性。本人iOS开发,语言就用OC,IDE就用Xcode,来唠唠开发调试一、NSLog打印NSLog打印是最常用的调试方法,也是初学者最喜欢最简单的调试方法,通过打印信息来查看运行路径和数据等。但打印出的信息比较少,NSLog本身效率也较低,但也不失为一种方法。用下面的宏做NSLog的优化,可以打印类名、所在方法名、详细时间和行号等信息。#...…
-
RunTime方法交换
项目中使用下面这个方法很常见:[UIImage imageNamed:@"img1"];这个方法在图片不存在是会引起崩溃,这里先提供两种简单点的方法。继承+ (UIImage *)imageNamed:(NSString *)name { // 恢复系统做法 UIImage *image = [super imageNamed:name]; if ( image == nil ) { NSLog(@"加载失败"); return [UIImag...…
-
RunTime动态添加方法和属性
动态添加方法面试的时候面试官可能会问用过performSelector方法么,那就请注意了,他百分之百问的是跟runtime有关的知识,不要傻乎乎的以为他就是问你有没有用过这个方法了,然后你还跟他扯可以延迟调用方法啥的,这些都是OC封装好的,相信我他不是在考你这个。performSelector方法区别于直接调用,直接调用时假如你方法没实现,编译直接报错,而performSelector只会报警告,所以人家是问你runtime动态添加方法的东西。动态添加方法是一个很有意义的事情,因为程序在...…
-
xib作为cell时的复用问题
apple鼓励大家使用图形化界面开发,这样效率更高,但我们在使用xib新建cell的时候会遇到问题,xib新建时是没有initWithStyle: reuseIdentifier:这个方法的,但为了效率cell还是需要复用,所以就需要用下面方法来新建cell了:- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{MyCustomCell ...…
-
WKWebKit介绍
苹果在iOS8推出了一个新的框架WKWebKit,更好地内存优化、更快的加载速度和更丰富的接口让它成为了开发者手中的香馍馍,替代UIWebView就变得顺理成章。UIWebView&UIWebDelegate这两个东西在WKWebKit中被重构成16个类、3个协议Classes:WKBackForwardList:历史记录列表,可以通过后退和前进动作访问到;(- itemAtIndex: 该类中唯一方法,用于返回项目在指定的距离当前项目。还有backItem、currentItem...…
-
emoji表情作为单字符长度的处理
我们知道emoji表情是一些特殊格式的字符串,因此我们在计算其长度的时候直接用“xxx.length”即可,但有时候产品经理会要求你把所有的emoji表情都当做一个字符处理,别问我怎么知道的😭😭😭,这里写下来希望大家不要跟我一样到处跳坑还是直接上代码1.获取emoji个数(我这里写到了NSString的类方法中)+ (NSInteger)emojiCountInString:(NSString *)string{ __block NSInteger num = 0; [stri...…
-
block中weakSelf和strongSelf的简化
我们知道在block中使用全局变量需要考虑到循环引用问题,这时就会引入weakSelf和strongSelf,具体用法不多说,网上很多介绍的文章,比如深入研究Block用weakSelf、strongSelf、@weakify、@strongify解决循环引用 但是频繁的书写weakSelf和strongSelf会让人觉得代码重复,但是这个东西又不好抽取。经过多方打探,找到一个特别简便的方法,你不用再考虑weakSelf和strongSelf的书写,直接使用self代替即可。在文件中加入...…