开发小心得
文章平均质量分 66
Se7en丶潇洒哥
Professional iOS Developer
展开
-
Building for iOS Simulator, but the linked......错误的解决方案,Xcode 12
在更新Xcode版本之后,可能原本可以好好编译的工程,突然出现这样的错误。方案一:此时不要慌,打开工程设置,Build Settings,搜索 Excludeed 关键字,找到 Excluded Source File Names,在其 Debug (也就是模拟器运行的配置)中添加这样的字段Any iOS Simulator: xxx.framework yyy.framework每个 framework 用空格隔开,再 command + shift + k,clean 一下,再编译。如果失败可以原创 2020-12-18 14:37:03 · 5941 阅读 · 0 评论 -
iOS开发 - 利用SQLite和归档实现一个完美的数据持久化方案
iOS开发 - 利用SQLite和归档实现一个完美的数据持久化方案 数据持久化方案,可能很多人能想到,SQLite、CoreData、各种方案。有利有弊。我想到了一个比较完美的解决方案。要用到两个第三方:MJExtension (主要为了实现 NSCoding 协议)FMDB (主要为了方便操作SQLite)好,开始~现在创建一个 Model 遵循 NSCoding 协...原创 2018-08-09 15:49:26 · 828 阅读 · 0 评论 -
设置CALayer的delegate时需要注意的问题
设置CALayer的delegate时需要注意的问题 有很多像我这样的开发者在优化 App 性能的时候,很多情况会用 CALayer 代替 UIView 那么我们要让 CALayer 显示内容,可以创建一个类继承于 CALayer,然后重写 -drawInContext 方法。但是如果有很多,就要创建好多类,有点得不偿失。另一种方法就是实现 CALayer 的 delegate ...原创 2018-08-23 10:05:39 · 1197 阅读 · 2 评论 -
dispatch_sync() 的秘密!它一定会造成死锁吗?
dispatch_sync() 的秘密!它一定会造成死锁吗?平时我们可能很少用到 dispatch_sync ,只是知道,如果调用 dispatch_sync(dispatch_get_main_queue(), block) 的话,会阻塞主线程。但事实并非如此。另外,dispatch_sync() 和 dispatch_async() 可不仅仅是差了一个字母,也不仅仅是同步和异步的差别。...原创 2018-10-18 11:34:26 · 2449 阅读 · 0 评论 -
iOS开发 高性能添加圆角(支持4个不同半径)
在开发中,添加圆角似乎再常见不过了。不过它带来的性能问题以及离屏渲染问题,也受到部分开发者的注意。如何才能在不影响性能的前提下添加圆角呢?相信大家也看过很多博客,写得也很不错,都是这种解决办法。我随便列举几个通过设置 CALayer的 mask属性来切,这个无法避免离屏渲染,不推荐。通过 UIGraphicsBeginImageContextWithOptions()创建一个 Ima...原创 2018-10-25 14:21:28 · 6232 阅读 · 0 评论 -
iOS开发 组件化 Podfile 过大 或 内容太长 怎么办?
iOS开发 组件化 Podfile 过大 或 内容太长 怎么办?在日常的iOS开发中,我们通常会使用 Cocoapods 来管理各种第三方,或者组件化时,管理我们自己的组件。在项目逐渐复杂的情况下,Podfile 也变得臃肿,因此我们要把里面的内容分布到多个文件中。会显得更好维护一些。怎么办?大家其实都知道,Cocoapods 是使用 Ruby 语言编写的,所以,我们就来自己写一些脚本...原创 2019-09-09 11:50:16 · 749 阅读 · 0 评论 -
Xcode工程,蓝色文件夹、黄色文件夹以及 .bundle文件的区别
Xcode工程,蓝色文件夹、黄色文件夹以及 .bundle文件的区别 用过 Xcode 做过开发的应该都知道,在左边的目录索引中,有蓝色的文件夹,黄色的文件夹,还有 .bundle 文件。那么它们都有什么区别呢?先做总结,再详细解释:蓝色文件夹: 它本身会被自动添加到 Copy Bundle Resources 中,因此将会出现在 mainBundle 中 它里面的 .m ...原创 2018-08-09 15:20:00 · 4767 阅读 · 0 评论 -
一个iOS开发本地资源文件的加密方案
一个iOS开发本地资源文件的加密方案 在开发中,不可避免的要有一些本地资源文件要放在 mainBundle 里面,比如 plist 文件、json文件、视频、图片 等等这样的。那如果能拿到 ipa 文件,直接解包就可以看到我们 mainBundle 里面的文件。如此一来,这些资源就会暴露无遗。我大概在网上搜了一下,有用 AES 加解密的,各种,甚至还编写了简单的 MacApp 方便操...原创 2018-08-09 14:26:37 · 5585 阅读 · 3 评论 -
Block内部访问实例变量会出现的问题
最近开发中正好遇到了一个问题: 首先这是一个会引起循环引用的 Block 属性, 然后需要在 Block 中访问实例变量。ViewController#import "ViewController.h"#import "TestView.h"@interface ViewController (){ int _a;}@end@implementa原创 2018-01-11 10:51:46 · 1129 阅读 · 0 评论 -
RAC中监听通知的坑!
在很多文章里面都介绍了RAC的用法,其中对于NSNotificationCenter的介绍实在太少了。只说用RAC来处理的话不用removeObserver,但是其实不然。如果这个界面是被push过来的。 在viewDidLoad中,监听通知,使用RAC。 然后pop回去,再push进来。。。 结果就是这个通知被添加了多个观察者,而之前的已经被释放了。看似没问题,因为向nil发消息原创 2018-01-11 10:50:16 · 7255 阅读 · 4 评论 -
网络请求回调的Block中,到底是用weakSelf还是用self?
相信网络请求大家都会封装起来,有的封装成单例,有的封装成静态方法。[JRNetworkTool POSTRequest:CircleGetOpenUserURL params:@{@"OpenId": userId, @"OpenUserCategory":@0} succeed:^(JRResponse *response) { //这里处理你的response //那原创 2018-01-11 10:49:10 · 1647 阅读 · 0 评论 -
探讨OC的内存管理 以及防止循环引用retain cycle 代理为什么用weak block为什么用copy
首先声明OC的内存管理机制:引用计数。当一个对象的引用计数为0时,这个对象就会被释放。铭记以上两点,我们开始来探讨。换句话说,如果一个对象,没有强指针指向,就会被释放。举个很形象的例子,假如每一个对象都是一只狗,每一个强指针都是狗链子,狗链子的数量就是引用计数。那么情况就会变成这样:当一个狗没有被狗链子拴着的时候,它就跑了。哈哈~那么什么情况下又会造成循环引用呢?顾名思义,就是两个对象相互强引用原创 2016-10-26 15:17:50 · 2167 阅读 · 0 评论 -
探讨声明UI控件属性 什么时候用weak什么时候用strong
也许我们在学习的时候,有人会告诉我们,UI控件的属性用weak修饰,而且,从Storyboard中拖出来的控件也都是用weak来修饰的,所以在习惯上,我们总会用weak去修饰。然而,在某些情况下,这么做是会出问题的,这时我们必须用strong来修饰。探讨之前,首先要了解Objective C的内存管理机制,即引用计数。一个对象何时会被释放呢?答案是,当引用计数为0的时候。建立一个UIView,声原创 2016-10-26 14:33:35 · 4478 阅读 · 0 评论 -
XIB创建的cell中的已经适配过的控件如何动态改变高度?
在自定义cell时,无论是UITableView还是UICollectionView,我们都习惯于用XIB来自定义cell,并完成屏幕适配。若是用代码来动态调整某个控件的frame倒是不难,但是用XIB我们自己弄好的约束却怎么办呢?原创 2015-11-13 16:53:33 · 5468 阅读 · 0 评论 -
iOS多个弹框按顺序依次弹出
有时候会有这样的需求:App 运行完,加载 RootVC ,此时需要做一些操作,比如检查更新,之类的。此时可能会需要有2个甚至多个弹框依次弹出。本篇将以系统的 UIAlertController 作为示例,当然,如果是自定义的,也要看一下这篇文章,如何来处理多个弹窗。首先,如果就按照如下的默认写法:- (void)viewDidAppear:(BOOL)animated {...原创 2018-07-23 11:05:59 · 5199 阅读 · 3 评论 -
黑魔法到底有多强大?(二)融云会话列表Cell标题显示富文本、添加图片
黑魔法到底有多强大?第二篇 融云会话列表Cell标题显示富文本、添加图片 TIPS:我们可能都看过无数的文章,讲解在OC中如何实现Method Swizzling 交换方法,但是在实际应用中,好多人可能想不到这一点。所以我准备写一系列利用黑魔法才能实现的需求的文章。我的工程里接入了融云SDK,并使用了其界面,这样便于快速开发。 现在因为用户群体的区分,我们要求在昵称的后面...原创 2018-07-11 16:00:26 · 482 阅读 · 0 评论 -
Objective-C 黑魔法如何hook系统私有类?实现真正的Method Swizzling!
Objective-C 如何hook系统私有类?Tip:在读这篇文章之前,最好对 SEL、IMP 有一定的了解。否则很容易懵的,得不偿失哦~众所周知,OC中Runtime黑魔法的强大!也叫做Method Swizzling,在很多博客中,给了个例子,比如你要hook UIViewController的viewDidAppear:animated方法。通常就是创建一个UIViewCont...原创 2018-04-25 11:48:11 · 3899 阅读 · 1 评论