
一些总结
文章平均质量分 93
想名真难
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
MVC的一个常见的误用
APP的各种架构,其实所想要解决的问题本质在于,是把 “用户操作,数据变更,UI反馈”, 这部分代码分成不同的职责类,每个类负责一部分工作。分多少类,每个类的职责有何差异,就是不同框架的区别。根据数据驱动,数据流动的方式就产生了不同的框架,MVC,MVVM,VIPER等。如何避免把 Model View Controller 写成 Massive View Controller 已经是老生常谈的问题了。转载 2023-08-13 14:40:26 · 120 阅读 · 0 评论 -
APP在后台被系统杀死的六种主要原因
概要主要介绍在APP在后台被系统杀死的六种主要原因,并且告诉你怎么使用MetricKit框架去发现和减少程序被强制杀死的概率;怎么防止崩溃;怎么使用后台机制,怎么找到潜在的问题并采取行动去修复。app在后台被终止的原因崩溃(Crashes) CPU资源限制(CPU resource limit) 看门狗(Watchdog) 内存超出系统限制(Memory limit exceeded) 内存自动清理(Memory pressure exit) 后台任务超时(Background task tim转载 2021-09-18 17:30:03 · 8707 阅读 · 0 评论 -
iOS架构:MVC, MVP, MVVM以及VIPER
在这里可以看到幻灯片你可能在阅读这篇文章之前已经问过自己一些问题,比如说:谁应该拥有联网请求:Model还是Controller, 或者viewModel, presenter?谁该处理数据(包括服务器数据,本地数据),谁该处理展示逻辑?针对这些问题的不同回答就产生了不同的架构.为什么要纠结选择什么架构呢?假如有一天,你在调试一个实现了几十种功能的庞大的类时,你会发现自己很难找到并修复你的类中的任何错误。并且,很难把这个类作为一个整体来考虑,因此,你总会忽略一些重要的细节。如果你的应用程转载 2021-08-24 23:42:11 · 996 阅读 · 0 评论 -
iOS VIPER 框架的应用实践
MVC 的 "不实"谈起iOS框架,我们会下意识的谈起MVC,这个经典框架。但是仔细想想我们并没有做到真正的MVC 的低耦合。 它们之间不断的混用,导致我们的代码不断的增加混乱一直调理不清。我们习惯在model上面写上属性,View上面只是视图控件放在上面。所有的交互基本全部放controller上面,这样会导致我们控制器代码量大大增加,并且逻辑混乱, 难以维护。MVPMVP 架构拥有三个真正独立的分层,所以在组装的时候会有一些问题,而 MVP 也成了第一个披露了这种问题的架构。因为我们不想让转载 2021-04-11 21:51:56 · 460 阅读 · 0 评论 -
再也不怕问动态库,静态库了
库与可执行文件在链接器可操作的元素这一节中我们提到,链接器可以操作的最小单元为目标文件,也就是说我们见到的无论是静态库、动态库、可执行文件,都是基于目标文件构建出来的。目标文件就好比乐高积木中最小的零部件。给定目标文件以及链接选项,链接器可以生成两种库,分别是静态库以及动态库,如图所示,给定同样的目标文件,链接器可以生成两种不同类型的库,接下来我们分别介绍。静态库假设这样一个应用场景,基础设计团队设计了好多实用并且功能强大的工具函数,业务团队需要用到里面的各种函数。每次新添加其中一.转载 2020-08-03 15:37:34 · 274 阅读 · 0 评论 -
iOS 使用TestFlight公链测试、内测升级
如何使用TestFlight公链发布内测版本进行测试TestFlight公链 通过公开链接添加外测人员,无需收集用户信息用户点击公开链接后如果下载了TestFlight则直接调起TestFlight,点击安装即可安装App进行测试,如果没有安装TestFlight则Safari打开一个提示页包含下载TestFlight,以及测试邀请码,下载TestFlight后,点redeem即可安装测试What平时或多或少都在常用的APP中见过如下弹窗,这种就是使用了TestFlight公链的featur转载 2020-05-21 21:14:10 · 2824 阅读 · 0 评论 -
SSZipArchive的使用详解
一、使用详解:我们在开发app的时候,有时会需要对文件进行压缩和解压的操作,这个时候我们就必须要用到一个第三方的开源库,SSZipArchive ,来对目标文件进行压缩和解压的操作。使用了DDLog记录日志 , DDLog的日志按天存在不同的文件中(设置的保存7天的日志) , 以前的上传会用NSData循环读取这7个文件生成一个大的NSData上传解压之后成为了一个文件. 但是我们找某一天...转载 2020-02-27 14:42:55 · 6334 阅读 · 0 评论 -
ios 生僻小技巧和总结
2、隐藏某行cell- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{// 如果是你需要隐藏的那一行,返回高度为0 if(indexPath.row == YouWantToHideRow) return 0; retur原创 2017-11-02 13:51:04 · 1366 阅读 · 0 评论 -
ios 生僻小技巧的总结2
链接:http://www.jianshu.com/p/9fcd37c0ea057、播放一张张连续的图片// 加入现在有三张图片分别为animate_1、animate_2、animate_3// 方法一 imageView.animationImages = @[[UIImage imageNamed:@"animate_1"], [UIImage imageNamed:@"an原创 2017-11-02 15:59:43 · 447 阅读 · 0 评论 -
解决问题的一般思路
逻辑问题:有些时候会遇到很恶心的逻辑当想不明白或者想不通的时候,我会试着一步一步把逻辑写在纸上,写写画画,非常有助于思考,这样就会很清晰,如果在某一步被卡住了,那么问题的关键也找到了。做一些其他无关的事,去接杯水,上个厕所,或者这里先放一下,等一下在重新思考,重新审视这个问题,换个角度百度,bing,SCDN,请教前辈,先百度,百度是个好老师。百度解决不了的再bing搜索一下,我遇到很多次都是在转载 2016-07-18 14:45:23 · 1395 阅读 · 0 评论 -
Xcode 用工具让重构更简单
原文 : http://www.cocoachina.com/ios/20160127/15097.htmlXcode提供了以下几个重构功能:RenameExtractCreate SuperclassMove UpMove DownEncapsulate在菜单栏中的位置如下图:原创 2017-08-15 16:17:05 · 723 阅读 · 0 评论 -
ios内存优化
1. 用ARC管理内存ARC(Automatic ReferenceCounting, 自动引用计数)和iOS5一起发布,它避免了最常见的也就是经常是由于我们忘记释放内存所造成的内存泄露。它自动为你管理retain和release的过程,所以你就不必去手动干预了。忘掉代码段结尾的release简直像记得吃饭一样简单。而ARC会自动在底层为你做这些工作。除了帮你避免内存泄露,ARC还可以帮你原创 2016-03-12 10:13:32 · 384 阅读 · 0 评论 -
用反射机制做组件化路由
看了很多网上的组件化路由 , 不太理解为什么这么做 , 仿照他们的接口和调用 , 自己做了一个 , 先说下需要解决什么问题 .在一个比较复杂的类中 , 常常某个ViewController会引入大量的其他ViewController,例如:FirstViewController会引入SecondViewController、ThirdViewController ,FourViewContr...原创 2019-01-15 15:01:23 · 342 阅读 · 0 评论 -
iOS检测手机是否越狱了,GDB防护,自建https证书
git地址 :https://github.com/guochaoshun/breakPrison如何检测越狱手机。在应用开发过程中,我们希望知道设备是否越狱,正以什么权限运行程序,好对应采取一些防御和安全提示措施。一般我们通过一些常规的防御性代码,去做这种检测,当然,这样的检测有一定的误报概率,但是对于APP的开发者来讲,需要确定一个原则,哪怕是越狱手机检测成未越狱,也不能将未越狱的手...原创 2019-04-23 18:56:56 · 1790 阅读 · 1 评论 -
人月神话---观点摘录
<人月神话> 为什么想看这本书呢? 因为以前的公司虽然名气不大, 但是管理流程都挺规范的 , 没有觉察到管理混乱带来的灾难 , 临时到了一家比较有名气的公司 , 但是在开发过程中, 深深感到了管理的混乱 , 流程上的不规范 , 需求上的来回反复 , 所以萌生了想看下正确的流程是什么样的. 于是找到了<人月神话>学习下. 下面是看的时候的观点摘录 , 有的地方,由于资历不够,...原创 2019-05-09 18:23:37 · 370 阅读 · 0 评论 -
忽略performSelector警告
iOS开发中, 在使用performSelector方法时, Xcode会发出警告, 这是因为不确定方法调用者是否实现了将要调用的方法, 通过以下代码可以忽略警告#pragma clang diagnostic push#pragma clang diagnostic ignored "-Warc-performSelector-leaks" [self performSelec...转载 2019-06-28 15:24:52 · 324 阅读 · 0 评论 -
iOS用脚本打ipa包
打ipa包, 最传统的从xcode中archive 就不说了 ,写点省事的,脚本打包. 脚本打包前还是需要手动配置好工程的,脚本只能代替你完成点击archive 到生成ipa的过程, 证书配置是做不到的.说实话,第一次接触脚本,费了很多时间,看了2个小时视频,在加上看了点博客,懂了一点点语法,终于能看懂并且能运行了. 视频链接http://study.163.com/course/c...原创 2016-12-13 13:28:34 · 829 阅读 · 0 评论 -
怎么写简历,怎么面试
原文 : http://blog.youkuaiyun.com/u012260672/article/details/48549723 简化版 :我主要想分享的内容包括:简历的页数不要超过两页(最好一页) , 如果你实在太牛逼,最多写 2 页 , 删掉不必要的信息 重要的信息写在最前面 , 你的联系方式 , 你最重要的工作经历 , 不要简单罗列工作经历 , 列出你的转载 2017-10-09 15:48:12 · 1179 阅读 · 0 评论 -
iOS 一些总结
二、 给navigation Bar 设置 title 颜色UIColor *whiteColor = [UIColor whiteColor];NSDictionary *dic = [NSDictionary dictionaryWithObject:whiteColor forKey:NSForegroundColorAttributeName];[self.navigationCo转载 2016-09-27 11:19:36 · 586 阅读 · 0 评论 -
代码好习惯
从代码看一个程序员的笔力从代码的整洁度上就可以看出一个程序员的实力,规范其实就是让你养成一种良好习惯的标杆,在此面前我们应该顺从。本篇我们以OC为例,统计了一些在编写程序中需要注意的事项,共有20条,当然还有更多的规范,此处只是做个示例。单页代码最好控制在800行以内,每个方法最好不要超过100行,过多建议对代码进行重构. 见过一个2000+行的类,这酸爽相转载 2016-10-28 10:02:31 · 3279 阅读 · 0 评论 -
我写的小代码链接
比较low的下拉刷新,有2个版本,此处取最新版 : http://code.cocoachina.com/view/133184简单的滤镜处理图片: http://code.cocoachina.com/view/133185引导页 --- 可自定义动画, 右滑进入APP,支持转屏http://code.cocoachina.com/view/133448对Timer改进,不需要再 viewW...原创 2016-10-25 09:46:10 · 281 阅读 · 0 评论 -
OC load 和 initialize 方法
OC中有两个特殊的类方法,分别是load和initialize。先来看看NSObject Class Reference里对这两个方法说明:+(void)loadTheloadmessage is sent to classes and categories that are both dynamically loaded and statically linked, but o...原创 2016-12-02 11:33:40 · 629 阅读 · 0 评论 -
清理无效的工程文件和无效图片,linkMap查看类大小
原文很杂,截取比较有用的部分点击打开链接1)删除项目中没有使用的图片。查找XCode工程中没被使用的图片资源2)删除项目中没有用到的class 和 xib 及storyboard。分析工程中没有用到class安装 fui 工具sudo gem install fui -n /usr/local/binfui usage:https://gith转载 2017-02-17 09:47:21 · 708 阅读 · 0 评论 -
程序员技术练级攻略
删了很多东西 ,原文 点击打开链接 .不要乱买书,不要乱追新技术新名词,基础的东西经过很长时间积累而且还会在未来至少10年通用。回顾一下历史,看看历史上时间线上技术的发展,你才能明白明天会是什么样。一定要动手,例子不管多么简单,建议至少自己手敲一遍看看是否理解了里头的细枝末节。一定要学会思考,思考为什么要这样,而不是那样。还要举一反三地思考。启蒙入门1、 学习一门脚本语言,例如转载 2017-01-23 15:03:47 · 628 阅读 · 0 评论 -
杂谈: MVC/MVP/MVVM
原文,下有代码,博客代码格式太差,建议下载看.原文代码前言本文为回答一位朋友关于MVC/MVP/MVVM架构方面的疑问所写, 旨在介绍iOS下MVC/MVP/MVVM三种架构的设计思路以及各自的优缺点.MVCMVC的相关概念MVC最早存在于桌面程序中的, M是指业务数据, V是指用户界面, C则是控制器. 在具体的业务场景中, C作为M和V之间的连接, 负责转载 2017-03-14 13:14:01 · 280 阅读 · 0 评论 -
ios 简单的单元测试
原文 简书看到文章标题的时候,你也许会问,测试不是测试妹子干的事吗?的确,测试妹子能帮助我们测试出软件的很多问题(不符合业务的问题),但是代码的测试还得靠我们自己啊。因此,代码自测也变成了一个项目重要的一环。是的,今天我要聊的就是我们程序员对自己代码的测试,而不是测试妹子的测试。在iOS开发中我们用单元测试来保证我们的代码可靠性,什么是单元测试,请看在维基百科上的解释:在计算机编程中,...转载 2017-03-03 17:14:39 · 1362 阅读 · 0 评论 -
好好搜索
原文搜索,是互联网的入口,每个人都离不开搜索,更何况程序员?程序员最离不开的有两样东西,一个是 GitHub ,一个是搜索引擎。离开这两样东西,我相信大部分程序员都不会编程了。所以,一个好的程序员利用好的搜索技巧不仅可能提高自己的能力,还可以提高开发效率。今天,我们就来讲一讲利用 Google 或者让人讨厌,而国内人又不得不用的百度进行有效的搜索。咱就简单讲几个比较常用的搜索技转载 2017-04-25 17:11:00 · 334 阅读 · 0 评论 -
NSNotificationCenter深入研究
原文 : http://www.jianshu.com/p/26323f5b823d 原文有关于另一种通知的用法, addObserverForName, 但是这个我没用过,就没摘抄 http://www.cocoachina.com/ios/20170426/19124.html因为通知的接收所在的线程是基于发送通知所在的线程,如果通知是在主线程发出的,通知的接收转载 2017-06-22 14:07:06 · 510 阅读 · 0 评论 -
宏 用法进阶
原文 : https://onevcat.com/2014/01/black-magic-in-macro/入门如果您完全不知道宏是什么的话,可以先来热个身。很多人在介绍宏的时候会说,宏嘛很简单,就是简单的查找替换嘛。嗯,只说对了的一半。C中的宏分为两类,对象宏(object-like macro)和函数宏(function-like macro)。对于对象宏来说确实相对简单,但却也不转载 2017-06-27 14:20:53 · 569 阅读 · 0 评论 -
ios NSLog内容,崩溃日志,重定向到本地
主要参考的原文 :http://www.jianshu.com/p/8222a8b24129最简单的方式就是用iOS自带的首先是日志输出,分为c的printf和标准的NSLog输出,printf会向标准输出(sedout)打印,而NSLog则是向标准出错(stderr),我们需要同时让他们都将日志打印到一个文件中。下面2句是最核心的内容 .//写入 freopen([logFi...原创 2017-08-04 13:27:04 · 1179 阅读 · 0 评论 -
线上崩溃的几个原因
原文随着公司嘟嘟牛app用户数量多了起来,崩溃的问题也多了起来,最近这几天终于得空,集中时间处理了一下崩溃的问题,现总结一下,希望对大家有所帮助。杀手 NO.1:NSInvalidArgumentException 异常出现这个crash的原因有很多,选取了崩溃次数较多的crash。crash 日志1-11-[__转载 2017-01-23 13:40:36 · 3194 阅读 · 0 评论 -
LLDB 调试进阶
LLDB是XCode内置的为我们开发者提供的调试工具,它与LLVM编译器一起,存在于主窗口底部的控制台中,能够带给我们更丰富的流程控制和数据检测的调试功能。在调试过程中熟练使用LLDB,可以让你debug事半功倍。转载 2017-08-28 16:50:28 · 11296 阅读 · 0 评论 -
使用instrument->Time Profiler进行性能优化
在开始进行应用程序性能分析的时候,一定要使用真机,模拟器运行在Mac上,然而Mac上的CPU往往比iOS设备要快。相反,Mac上的GPU和iOS设备的完全不一样,模拟器不得已要在软件层面(CPU)模拟设备的GPU,这意味着GPU相关的操作在模拟器上运行的更慢,尤其是使用CAEAGLLayer来写一些OpenGL的代码时候. 这就导致模拟器性能数据和用户真机使用性能数据相去甚运.另外在开始性能分...原创 2017-09-17 15:09:02 · 2663 阅读 · 0 评论 -
OC高度总结
在面试中,我们经常会遇到一些原理性的问题,很常识但很难用通俗的语言解释清楚,这也是大部分业务级程序员经常失误的地方。虽然写了多年代码,但是核心思想不清,导致自己的后续发展受限,这是一个优秀的程序员和普通程序员的分水岭。要知其然而知其所以然!这也是整理这篇文章的初衷。文中结合了之前的一些文章,条理更清晰,内容更深入。本文包括:OC的面向对象运行时Runtime转载 2016-08-23 20:08:51 · 758 阅读 · 0 评论