- 博客(78)
- 收藏
- 关注
原创 runtime methedSwizzling方法交换深入浅出,深刻分析NSArray的safe方法能否替换系统方法
1.声明: 学习底层的过程不止是装逼,更多的是学以致用,举一反三。 本文观点均为个人观点,不对之处,欢迎指教。一:什么是方法交换。1.图中我们假设这是ViewController类的数据结构图,中分别解释下图中的A,B,C.A:就是ViewController类。B: 里面藏着ViewController分类的方法列表。C:ViewController宿主类(不是分类...
2018-05-16 15:37:48 1220
原创 iOS runloop的深入浅出,runloop的理解看这里就够了
一:什么是runloop事件循环,绝对不止是死循环这么简单的一个回答。实质上就是runloop内部状态的转换。1.用户态:应用程序都是在用户态,平时开发用到的api等都是用户态的操作2.内核态:系统调用,牵涉到操作系统,底层内核相关的指令。实际上是计算机内部进行的资源调度操作。1.等待:其实就是用户态-内核态的转换。事件循环不是while死循环,而是状态转换,切记。二:runloop的数据结构NS...
2018-04-27 18:17:56 7527
原创 iOS开发 在图片上添加文字,图片合成文字,图片上添加富文本,美图秀秀,美颜相机文字编辑
一:前言 1.0 :在图片上增加文字,是图片编辑中非常常见的需求。 1.1 :无demo说话不硬气,上github地址:https://github.com/horisea/PictureWhitening 欢迎star,你的星星是我持续创作的动力二:上一下效果图下面我们看一下功能: 1.首先文字的颜色是
2017-04-21 17:32:08 9717
原创 手把手教你iOS如何调用React Native,即是iOS与RN的交互,将推送数据传递RN
RN调用iOS本文要做的事情:iOS将推送数据,调用RN方法,进行数据传递。按步骤来,一定能成功的。。权威,文章会一直更新。疑惑:不了解RN怎么办,没事,RN代码自有前端人员写。。介绍:至于RN的介绍这里不多说了,,就为什么会出现iOS与RN的交互场景,这里阐述下。。RN出现的目的就是 1.能快速迭代产品 2.有原生的用户体验 核心就是调用原生的API 但是他也不是无所不能的,总有需要...
2017-01-07 18:16:48 16429 1
原创 iOS开发 最新的NSURLProtocol之webView的离线缓存,缓存webView,离线加载
一:前言:项目中整个一tab页因为需求变成了加载webView,没网情况下会一片白。。很多APP无网显示的是一张图片,笔者强迫症,坚决做到最好的用户体验,于是缓存了整个webview; 1. 想通过加载HTMLSting字符串缓存webView是不可行, [self.webView loadHTMLString:HTMLSting baseURL:nil];想走这条路的哥们这里说下,肯定是不
2016-12-22 17:22:09 7236
原创 iOS webView的高级用法之JS交互,js与oc的相互调用(JavaScriptCore)
重要的事情放前面 github地址:https://github.com/horisea/JSCallOCTest 欢迎star 前言:说起JS交互,很多童鞋会黯然色变,感觉很高深的样子。大部分小伙伴只知道一种,哪一种我也说说吧。 1.在webView中将要请求的时候,拦截URL,进行重定向,然而该场景实用有限,网上资料也很多下面说说另一种交互方式。- (BOOL)webV...
2016-08-12 15:24:43 22782 1
原创 iOS中自定义输入文本框的cell(UITextFieldCell)的使用技巧
一:开篇介绍 1.在iOS项目开发中,容易遇到各种个人信息填写。比如微信中设置个人信息,等。这种方式是尽兴控制器跳转,代理或者block传值,这种比较容易,符合常规的cell的应用场景。请继续往下看,后面更精彩!!!2.但也有很多场景是这种方式,如图所示,这是微信中个人中心的收货地址信息的填写,那么相比较这种cell就相比较难了一点。 2.1:先说一
2016-07-10 20:38:46 10112
原创 iOS 之应用性能调优的25个建议和技巧
注意:每在优化代码之前,你都要注意一个问题,不要养成”预优化”代码的错误习惯。时常使用Instruments去profile你的代码来发现需要提升的方面。Matt Galloway写过一篇很棒的如何利用Instruments来优化代码的文章。还要注意的是,这里列出的其中一些建议是有代价的,所建议的方式会提升app的速度或者使它更加高效,但也可能需要花很多功夫去应用或者使代码变得更加复杂,所
2016-02-23 12:48:46 2625
原创 runtime super和superClass的区别调用super方法深入浅出
如何使用super我们都知道。现在的问题是,它是如何工作的呢?首先我们需要知道的是super与self不同。self是类的一个隐藏参数,每个方法的实现的第一个参数即为self。而super并不是隐藏参数,它实际上只是一个”编译器标示符”,它负责告诉编译器,当调用viewDidLoad方法时,去调用父类的方法,而不是本类中的方法。而它实际上与self指向的是相同的消息接收者。为了理解这一点,我们先来...
2018-04-02 17:15:43 795
原创 关于OC和Swift混编MJExtension第三方库莫名出错问题Property has a previous declaration
一:概述。 项目中用了MJExtension第三方库,今天合并了同事的代码,突然就报错了。上图 说属性重新定义了。二:解决思路; 1.MJExtension里的内容我肯定事没动的,那么怎么会出问题。源码不能动。 2.查资料,都是MJExtension的用法。三:解决办法 将项目中#import "MJExtension.h"的部分,全部替换成
2018-01-24 17:18:12 5959
原创 程序员们,你想过以后不敲代码的日子吗(下)
25岁小吗,即使你没成家立业,但是,你真的不小了。 25岁的时候你不多想想,等到30岁后再去想吗。 25岁你不开始慢慢走出来,非要等到30随后吗。 最近大家都说35岁中年危机,说的你20多岁很成功一样。人家成功人士遇到中年危机都怕。我们这些小喽啰难道不应该多想想吗。 穷真的不怕,怕你还没脑子。不
2018-01-05 11:30:43 4730 6
原创 UILabel设置属性字符串,可以增加点击事件点击
1.首先啊,label可以设置属性字符串,设置不同的字体颜色,字体大小,但是要增加点击事件,不好操作。2.所以文章是设置textView来完成的。- (UITextView *)textView { if (!_textView) { _textView = [[UITextView alloc] init];// NSMutableAttr
2017-12-29 11:46:06 5970
原创 iOS开发屏幕截屏,超出屏幕截屏处理
/// 根据一个View生成一个image+ (UIImage *)imageFromSnapShotView:(UIView *)view { UIImage *image = nil; if ([view.classisSubclassOfClass:[UIScrollView class]]) { UIScrollView *scrool
2017-12-28 17:56:33 1603
原创 程序员们,你想过以后不敲代码的日子吗(上)
打工是不可能打工的,做生意又不会。那就只能靠手艺吃饭了,我就偷电动车咯。 打工是必须要打得,但是总不能打一辈子的工。 前不久在贴吧,看到个贴子,内容大致是这么写的。 王哥,34岁。离职前职位:北京市某街道办副主任;
2017-12-28 16:24:28 7631
原创 iOS开发打包的种类,我的理解
1.个人账号,公司账号打包。 1. 介绍: 这些都是用来上传APPStore用的。99刀。区别是公司账号会有一些相关资质。 比如公司账号有金融资质,就能上架金融相关的产品。而个人账号泽不行。 2. 用途: 当然是打包咯:一般打两种包。 前提: 1.创建C
2017-12-05 17:21:46 1062
原创 Swift和Objective-C混编桥接文件设置
1.桥接文件的设置stockiosoc/SCYRegistAndLogin/View/stockiosoc-Bridging-Header.h路径 :工程目录/所在路径 注意:名字是工程目录-Bridging-Header 该文件下,存放swfit中需要访问的OC的文件2. Objective-C Generated
2017-11-24 11:26:06 1050
原创 iOS 无开发者账号怎么打包项目 供别人下载
前言:1.你没有开发者账号,于是就不能创建描述文件打包到蒲公英 2.需要安装的人不在你旁边,你不能真机调试。 辣么,该怎么办。。 1.编译你的项目,commod+R一下 2.找到项目的Products目录,找到下面的xxx.app, show in finder,如下图。3.在桌面上,新建文件夹(名字自己起),将finder中的选中
2017-10-09 16:38:58 13542
原创 ipad开发中UIAlertController使用奔溃问题
加上红色部分的代码就ok了,具体原因,参考下面的博客,写的很详细。 [alertController addAction:sureAction]; [alertController addAction:cancelAction]; alertController.popoverPresentationController.sourceView = self.view;
2017-09-17 17:16:12 630
原创 iOS通过链接,应用内打开APP或者跳转APPStore对应下载
开文:很急着实现的话,请按照最后一句话操作。一:有一种是替换协议头,即是将 http:// 替换为 itms:// 或者 itms-apps:// 然后通过 [[UIApplicationsharedApplication] openURL: itms:// 或者 itms-apps://后面跟上一堆]; 但是这种应用场景比较有限
2017-08-31 10:47:17 26680
原创 swift3.0 如何优雅的自定义tableViewcell,最简单的自定义cell,闭包事件传递,代码封装。
一:最近在自学swift3.0,故而把OC中最简单自定义cell的方法,照搬到swift试试。 下面说下设计思想。 1.设计原理,提供接口。下面贴上控制器的代码 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { //
2017-08-31 09:53:43 3314
原创 程序员那么努力,到底是为了什么
一:生活不只是眼前的苟且,还有诗和南方一年前逃离了帝都北京,现在又扎进了很多人拼命挤进又奋力逃离的上海。 我为什么要来上海,最近我一直再问自己。 我喜欢江南,所以我喜欢上海。 喜欢上海的理由太多,但更多的是来自骨子里散发的那种对南方的喜欢。。20多年前,我出生在上海。。8岁之前,我都生活在上海,杭州,又或者是湖州。。也就是环太湖这一块,那个苏湖熟,
2017-08-10 17:42:15 1583
原创 Swift3.0 类似OC中#pragma mark 和 #waring的用法,大注释和警告的设置
一、swift代码实现OC中#pragma mark的效果,这个事系统自带的,不需要单独设置二:下面我们看下#waring的设置,这个需要手动添加脚本,如图标注三步走下面看下效果最后写下内容,复制粘贴即可TAGS="TODO:|waring:"echo "searching ${SRCROOT} fo
2017-08-10 17:29:00 777 1
原创 Swift3.0 Swift中cell分割线靠左对齐,cell基类封装
一:如OC一样,swift中cell的分割线也是默认缺了左边一点,那么如何让分割线左对齐呢 1.那么我们在自定义cell的基类中设置下,那么以后的cell都继承基类,以后都不会有分割线问题了 import UIKitclass SCYBaseTableViewCell: UITableViewCell { override func awakeFromNib(
2017-08-10 10:58:09 553
转载 Swift3.0——Swift中下划线的妙用,_的用法
在Swift中,下划线有很多妙用,这里将已经看到的妙用进行总结,希望可以帮助更多学习Swift的朋友。 @Author: twlkyao转载或者引用请保留此行。 1.格式化数字字面量 通过使用下划线可以提高数字字面量的可读性,例如:[plain] view plain copy print?let paddedD
2017-08-09 15:30:48 595
原创 【军师联盟】--鬼才(军师祭酒)郭嘉郭奉孝(如何成为领导最信任的人)
引言: 郭嘉(170年-207年),字奉孝,颍川阳翟(今河南禹州)人。东汉末年曹操帐下著名谋士。 后人多称鬼才郭奉孝,更是有很多郭吹着,流行一句话, 郭嘉不死,卧龙不出。 笔者愚见,我认为郭嘉的待遇一生比诸葛亮好太多了。诸葛心太累。 曹操对郭嘉的信任永远是无人能敌的。对郭嘉可谓是言听必从。。相反,刘备最信任的谋士,永远都不是诸葛亮。。(法正第一,庞统第二),只是弥
2017-07-18 11:09:05 2676
原创 iOS 最简单解决事件冲突的思路,深入浅出cancelsTouchesInView属性
引言:其实在手势解决问题,根据笔者经验,一般用好UITapGestureRecognizer 的cancelsTouchesInView属性,很多问题就能解决了。。问题:在一个tableView的布局上,有点击tableView收回键盘操作,点击cell的事件,自定义cell可能有按钮的点击事件。。那么当这些问题都同时存在的时候,你想过怎么解决问题吗。。或者根据需求,设置不同的事件优先
2017-07-18 10:27:46 5987 1
原创 iOS开发 UITableview的registerClass : forCellReuseIdentifier:的用法
1.控制器中写入代码。- (void)viewDidLoad { [super viewDidLoad]; [self.tableView registerClass:[yourCustomCell class] forCellReuseIdentifier:ruleCellidentifier];}那么在布局cell的方法中就可以省略 static NSSt
2017-07-17 10:55:50 645
原创 【三国风云】-刘备的艰苦创业发家之路
前言:在这个创业巨难的时代,(你可以百度下败家排行榜,卖房创业第一,卖房炒股第二,炒股第三,创业第四)。不禁想起1千多年前,刘老板白手起家的历程.下面我们已时间为节点。一:首先要脸皮厚。 刘备,刘老板,姓刘。小时候靠卖草鞋卖草席为生。。然而呢,他自称是中山靖王之后,(中山靖王刘胜喜好酒色,生有一百二十多个儿子),看到没有,选了一个生了120多个儿子的,然后又经历那么多代,鬼知道他
2017-07-06 18:31:51 1113
原创 2017年中总结-小海
2017年中总结-小海 不管你是做什么的,那么多读书多写作总归事件好事。记录下太多事情,回头看时,才能更好的比较,更好的反思。哪些值得骄傲,哪些值得深思。 先把16年年底写出的17年奋斗目标贴出来,然后一条条过。 二逼青年欢乐多。 一.第一条,没完成。今年也不可能完成,以后也不可能完成。10年后我再做这件事。
2017-07-05 16:35:54 587
转载 iOS应用架构谈(5) 组件化方案
简述前几天的一个晚上在infoQ的微信群里,来自蘑菇街的Limboy做了一个分享,讲了蘑菇街的组件化之路。我不认为这条组件化之路蘑菇街走对了。分享后我私聊了Limboy,Limboy似乎也明白了问题所在,我答应他我会把我的方案写成文章,于是这篇文章就出来了。另外,按道理说组件化方案也属于iOS应用架构谈的一部分,但是当初构思架构谈时,我没打算写组件化方案,因
2017-07-05 10:33:59 634
转载 iOS应用架构谈(4) 本地持久化方案及动态部署
前言嗯,你们要的大招。跟着这篇文章一起也发布了CTPersistance和CTJSBridge这两个库,希望大家在实际使用的时候如果遇到问题,就给我提issue或者PR或者评论区。每一个issue和PR以及评论我都会回复的。持久化方案不管是服务端还是客户端,都是一个非常值得讨论的话题。尤其是在服务端,持久化方案的优劣往往都会在一定程度上影响到产品的性能。然而
2017-07-05 10:31:20 474
转载 iOS应用架构谈(3) 网络层设计方案
前言网络层在一个App中也是一个不可缺少的部分,工程师们在网络层能够发挥的空间也比较大。另外,苹果对网络请求部分已经做了很好的封装,业界的AFNetworking也被广泛使用。其它的ASIHttpRequest,MKNetworkKit啥的其实也都还不错,但前者已经弃坑,后者也在弃坑的边缘。在实际的App开发中,Afnetworking已经成为了事实上各大App的标准配置。
2017-07-05 10:26:58 361
转载 iOS应用架构谈(2) view层的组织和调用方案
当我们开始设计View层的架构时,往往是这个App还没有开始开发,或者这个App已经发过几个版本了,然后此时需要做非常彻底的重构。一般也就是这两种时机会去做View层架构,基于这个时机的特殊性,我们在这时候必须清楚认识到:View层的架构一旦实现或定型,在App发版后可修改的余地就已经非常之小了。因为它跟业务关联最为紧密,所以哪怕稍微动一点点,它所引发的蝴蝶效应都不见得是业务方能够hold
2017-07-05 10:18:59 446
转载 iOS-应用架构谈(1)开篇
缘由之前安居客iOS app的第二版架构大部分内容是我做的,期间有总结了一些经验。在将近一年之后,前同事zzz在微信朋友圈上发了一个问题:假如问你一个iOS or Android app的架构,你会从哪些方面来说呢?当时看到这个问题正好在乘公车回家的路上,闲来无聊就答了一把。在zzz在微信朋友圈上追问了几个问题之后,我觉得有必要开个博客专门来讲讲一些个人见解。
2017-07-04 17:30:07 309
原创 iOS,论代码的整洁性,可读性,可修改性。
我也不知道从什么时候开始,对待编程,有了非常大的强迫症,对于不整齐整洁的代码,反正就是心理不爽。下面开始随便说说把。一.论代码的可读性。先上图,这是2016年5月份之前,在北京的一家公司上班的homeController代码片段,项目的最开始是有一位腾讯大牛写的代码。此项目15年起的,我曾经一度怀疑,这是腾讯写的代码,亦或者腾讯的人能允许同事写这样的代码。来我们
2017-07-04 16:43:31 645
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人