iOS开发实用小知识
文章平均质量分 66
主要发布一些日常开发中的小技巧以及容易被忽略的细节。用最简单最合理的办法解决需求。
Se7en丶潇洒哥
Professional iOS Developer
展开
-
一个iOS开发本地资源文件的加密方案
一个iOS开发本地资源文件的加密方案 在开发中,不可避免的要有一些本地资源文件要放在 mainBundle 里面,比如 plist 文件、json文件、视频、图片 等等这样的。那如果能拿到 ipa 文件,直接解包就可以看到我们 mainBundle 里面的文件。如此一来,这些资源就会暴露无遗。我大概在网上搜了一下,有用 AES 加解密的,各种,甚至还编写了简单的 MacApp 方便操...原创 2018-08-09 14:26:37 · 5701 阅读 · 3 评论 -
Xcode工程,蓝色文件夹、黄色文件夹以及 .bundle文件的区别
Xcode工程,蓝色文件夹、黄色文件夹以及 .bundle文件的区别 用过 Xcode 做过开发的应该都知道,在左边的目录索引中,有蓝色的文件夹,黄色的文件夹,还有 .bundle 文件。那么它们都有什么区别呢?先做总结,再详细解释:蓝色文件夹: 它本身会被自动添加到 Copy Bundle Resources 中,因此将会出现在 mainBundle 中 它里面的 .m ...原创 2018-08-09 15:20:00 · 4912 阅读 · 0 评论 -
iOS开发 - 利用SQLite和归档实现一个完美的数据持久化方案
iOS开发 - 利用SQLite和归档实现一个完美的数据持久化方案 数据持久化方案,可能很多人能想到,SQLite、CoreData、各种方案。有利有弊。我想到了一个比较完美的解决方案。要用到两个第三方:MJExtension (主要为了实现 NSCoding 协议)FMDB (主要为了方便操作SQLite)好,开始~现在创建一个 Model 遵循 NSCoding 协...原创 2018-08-09 15:49:26 · 863 阅读 · 0 评论 -
设置CALayer的delegate时需要注意的问题
设置CALayer的delegate时需要注意的问题 有很多像我这样的开发者在优化 App 性能的时候,很多情况会用 CALayer 代替 UIView 那么我们要让 CALayer 显示内容,可以创建一个类继承于 CALayer,然后重写 -drawInContext 方法。但是如果有很多,就要创建好多类,有点得不偿失。另一种方法就是实现 CALayer 的 delegate ...原创 2018-08-23 10:05:39 · 1246 阅读 · 2 评论 -
iOS多个弹框按顺序依次弹出
有时候会有这样的需求:App 运行完,加载 RootVC ,此时需要做一些操作,比如检查更新,之类的。此时可能会需要有2个甚至多个弹框依次弹出。本篇将以系统的 UIAlertController 作为示例,当然,如果是自定义的,也要看一下这篇文章,如何来处理多个弹窗。首先,如果就按照如下的默认写法:- (void)viewDidAppear:(BOOL)animated {...原创 2018-07-23 11:05:59 · 5286 阅读 · 3 评论 -
iOS Xcode原生项目集成Unity导出的工程
Xcode原生项目集成Unity导出的工程注:成功的前提:Unity导出的Xcode工程可以编译。1、 创建好工程之后,将Unity导出的Xcode工程的以下文件夹复制到我们新建的工程中。Unity导出: 新建工程:复制到我们新建的工程中(Command + C,Command + V)2、 搜索Class/Native目录下的所有.h文件,如下图 之后新建一个文件夹,随便起名,然后将原创 2017-05-16 16:20:41 · 5847 阅读 · 21 评论 -
Unity与iOS相互调起、交互
Unity与iOS相互切换、交互上一篇我们已经实现了将Unity导出的工程集成到原生iOS项目中,接下来我们来实现Native与Unity相互切换、调起。原创 2017-05-16 17:45:31 · 12767 阅读 · 12 评论 -
iOS开发中结构体的另一种“初始化方法”
结构体的另类“初始化方法”原创 2017-06-19 10:26:55 · 3361 阅读 · 0 评论 -
黑魔法到底有多强大?(一)各种第三方SDK的导航条
黑魔法到底有多强大?第一篇 各种第三方SDK私有控制器的导航条 TIPS:我们可能都看过无数的文章,讲解在OC中如何实现Method Swizzling 交换方法,但是在实际应用中,好多人可能想不到这一点。所以我准备写一系列利用黑魔法才能实现的需求的文章。我们在集成一些第三方SDK时,尤其是带有UI界面的第三方。它的导航条风格跟我们App中的不一样,我们当然希望以我们App...原创 2018-07-11 15:11:54 · 696 阅读 · 0 评论 -
关于 UINavigationItem 和 UINavigationBar
关于 UINavigationItem 和 UINavigationBar TIPS:在日常开发中,我们经常会自定义导航控制器的一些东西。今天我们来说说导航控制器中很重要的两个类UINavigationBar 是一个视图,它属于导航控制器,所以说当修改它的属性,会影响到导航控制器管理的所有视图控制器。UINavigationItem 是一个模型,它属于当前视图控制器,当修改它的属...原创 2018-07-11 15:58:40 · 672 阅读 · 0 评论 -
XIB创建的cell中的已经适配过的控件如何动态改变高度?
在自定义cell时,无论是UITableView还是UICollectionView,我们都习惯于用XIB来自定义cell,并完成屏幕适配。若是用代码来动态调整某个控件的frame倒是不难,但是用XIB我们自己弄好的约束却怎么办呢?原创 2015-11-13 16:53:33 · 5520 阅读 · 0 评论 -
探讨声明UI控件属性 什么时候用weak什么时候用strong
也许我们在学习的时候,有人会告诉我们,UI控件的属性用weak修饰,而且,从Storyboard中拖出来的控件也都是用weak来修饰的,所以在习惯上,我们总会用weak去修饰。然而,在某些情况下,这么做是会出问题的,这时我们必须用strong来修饰。探讨之前,首先要了解Objective C的内存管理机制,即引用计数。一个对象何时会被释放呢?答案是,当引用计数为0的时候。建立一个UIView,声原创 2016-10-26 14:33:35 · 4530 阅读 · 0 评论 -
探讨OC的内存管理 以及防止循环引用retain cycle 代理为什么用weak block为什么用copy
首先声明OC的内存管理机制:引用计数。当一个对象的引用计数为0时,这个对象就会被释放。铭记以上两点,我们开始来探讨。换句话说,如果一个对象,没有强指针指向,就会被释放。举个很形象的例子,假如每一个对象都是一只狗,每一个强指针都是狗链子,狗链子的数量就是引用计数。那么情况就会变成这样:当一个狗没有被狗链子拴着的时候,它就跑了。哈哈~那么什么情况下又会造成循环引用呢?顾名思义,就是两个对象相互强引用原创 2016-10-26 15:17:50 · 2221 阅读 · 0 评论 -
网络请求回调的Block中,到底是用weakSelf还是用self?
相信网络请求大家都会封装起来,有的封装成单例,有的封装成静态方法。[JRNetworkTool POSTRequest:CircleGetOpenUserURL params:@{@"OpenId": userId, @"OpenUserCategory":@0} succeed:^(JRResponse *response) { //这里处理你的response //那原创 2018-01-11 10:49:10 · 1678 阅读 · 0 评论 -
RAC中监听通知的坑!
在很多文章里面都介绍了RAC的用法,其中对于NSNotificationCenter的介绍实在太少了。只说用RAC来处理的话不用removeObserver,但是其实不然。如果这个界面是被push过来的。 在viewDidLoad中,监听通知,使用RAC。 然后pop回去,再push进来。。。 结果就是这个通知被添加了多个观察者,而之前的已经被释放了。看似没问题,因为向nil发消息原创 2018-01-11 10:50:16 · 7656 阅读 · 4 评论 -
Block内部访问实例变量会出现的问题
最近开发中正好遇到了一个问题: 首先这是一个会引起循环引用的 Block 属性, 然后需要在 Block 中访问实例变量。ViewController#import "ViewController.h"#import "TestView.h"@interface ViewController (){ int _a;}@end@implementa原创 2018-01-11 10:51:46 · 1156 阅读 · 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 · 3994 阅读 · 1 评论 -
黑魔法到底有多强大?(二)融云会话列表Cell标题显示富文本、添加图片
黑魔法到底有多强大?第二篇 融云会话列表Cell标题显示富文本、添加图片 TIPS:我们可能都看过无数的文章,讲解在OC中如何实现Method Swizzling 交换方法,但是在实际应用中,好多人可能想不到这一点。所以我准备写一系列利用黑魔法才能实现的需求的文章。我的工程里接入了融云SDK,并使用了其界面,这样便于快速开发。 现在因为用户群体的区分,我们要求在昵称的后面...原创 2018-07-11 16:00:26 · 517 阅读 · 0 评论