自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Se7en丶潇洒哥 的博客

iOS开发工程师

  • 博客(28)
  • 问答 (1)
  • 收藏
  • 关注

原创 Xcode 16 上传AppStore遇到第三方库 bitcode 的问题

Xcode16 bitcode

2024-09-24 16:47:12 709

原创 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 5934

原创 iOS开发 组件化 Podfile 过大 或 内容太长 怎么办?

iOS开发 组件化 Podfile 过大 或 内容太长 怎么办?在日常的iOS开发中,我们通常会使用 Cocoapods 来管理各种第三方,或者组件化时,管理我们自己的组件。在项目逐渐复杂的情况下,Podfile 也变得臃肿,因此我们要把里面的内容分布到多个文件中。会显得更好维护一些。怎么办?大家其实都知道,Cocoapods 是使用 Ruby 语言编写的,所以,我们就来自己写一些脚本...

2019-09-09 11:50:16 744

原创 iOS开发 高性能添加圆角(支持4个不同半径)

在开发中,添加圆角似乎再常见不过了。不过它带来的性能问题以及离屏渲染问题,也受到部分开发者的注意。如何才能在不影响性能的前提下添加圆角呢?相信大家也看过很多博客,写得也很不错,都是这种解决办法。我随便列举几个通过设置 CALayer的 mask属性来切,这个无法避免离屏渲染,不推荐。通过 UIGraphicsBeginImageContextWithOptions()创建一个 Ima...

2018-10-25 14:21:28 6217

原创 dispatch_sync() 的秘密!它一定会造成死锁吗?

dispatch_sync() 的秘密!它一定会造成死锁吗?平时我们可能很少用到 dispatch_sync ,只是知道,如果调用 dispatch_sync(dispatch_get_main_queue(), block) 的话,会阻塞主线程。但事实并非如此。另外,dispatch_sync() 和 dispatch_async() 可不仅仅是差了一个字母,也不仅仅是同步和异步的差别。...

2018-10-18 11:34:26 2439

原创 设置CALayer的delegate时需要注意的问题

设置CALayer的delegate时需要注意的问题 有很多像我这样的开发者在优化 App 性能的时候,很多情况会用 CALayer 代替 UIView 那么我们要让 CALayer 显示内容,可以创建一个类继承于 CALayer,然后重写 -drawInContext 方法。但是如果有很多,就要创建好多类,有点得不偿失。另一种方法就是实现 CALayer 的 delegate ...

2018-08-23 10:05:39 1192 2

原创 iOS开发 - 利用SQLite和归档实现一个完美的数据持久化方案

iOS开发 - 利用SQLite和归档实现一个完美的数据持久化方案 数据持久化方案,可能很多人能想到,SQLite、CoreData、各种方案。有利有弊。我想到了一个比较完美的解决方案。要用到两个第三方:MJExtension (主要为了实现 NSCoding 协议)FMDB (主要为了方便操作SQLite)好,开始~现在创建一个 Model 遵循 NSCoding 协...

2018-08-09 15:49:26 819

原创 Xcode工程,蓝色文件夹、黄色文件夹以及 .bundle文件的区别

Xcode工程,蓝色文件夹、黄色文件夹以及 .bundle文件的区别 用过 Xcode 做过开发的应该都知道,在左边的目录索引中,有蓝色的文件夹,黄色的文件夹,还有 .bundle 文件。那么它们都有什么区别呢?先做总结,再详细解释:蓝色文件夹: 它本身会被自动添加到 Copy Bundle Resources 中,因此将会出现在 mainBundle 中 它里面的 .m ...

2018-08-09 15:20:00 4760

原创 一个iOS开发本地资源文件的加密方案

一个iOS开发本地资源文件的加密方案 在开发中,不可避免的要有一些本地资源文件要放在 mainBundle 里面,比如 plist 文件、json文件、视频、图片 等等这样的。那如果能拿到 ipa 文件,直接解包就可以看到我们 mainBundle 里面的文件。如此一来,这些资源就会暴露无遗。我大概在网上搜了一下,有用 AES 加解密的,各种,甚至还编写了简单的 MacApp 方便操...

2018-08-09 14:26:37 5571 3

原创 iOS多个弹框按顺序依次弹出

有时候会有这样的需求:App 运行完,加载 RootVC ,此时需要做一些操作,比如检查更新,之类的。此时可能会需要有2个甚至多个弹框依次弹出。本篇将以系统的 UIAlertController 作为示例,当然,如果是自定义的,也要看一下这篇文章,如何来处理多个弹窗。首先,如果就按照如下的默认写法:- (void)viewDidAppear:(BOOL)animated {...

2018-07-23 11:05:59 5190 3

原创 黑魔法到底有多强大?(二)融云会话列表Cell标题显示富文本、添加图片

黑魔法到底有多强大?第二篇 融云会话列表Cell标题显示富文本、添加图片 TIPS:我们可能都看过无数的文章,讲解在OC中如何实现Method Swizzling 交换方法,但是在实际应用中,好多人可能想不到这一点。所以我准备写一系列利用黑魔法才能实现的需求的文章。我的工程里接入了融云SDK,并使用了其界面,这样便于快速开发。 现在因为用户群体的区分,我们要求在昵称的后面...

2018-07-11 16:00:26 478

原创 关于 UINavigationItem 和 UINavigationBar

关于 UINavigationItem 和 UINavigationBar TIPS:在日常开发中,我们经常会自定义导航控制器的一些东西。今天我们来说说导航控制器中很重要的两个类UINavigationBar 是一个视图,它属于导航控制器,所以说当修改它的属性,会影响到导航控制器管理的所有视图控制器。UINavigationItem 是一个模型,它属于当前视图控制器,当修改它的属...

2018-07-11 15:58:40 646

原创 黑魔法到底有多强大?(一)各种第三方SDK的导航条

黑魔法到底有多强大?第一篇 各种第三方SDK私有控制器的导航条 TIPS:我们可能都看过无数的文章,讲解在OC中如何实现Method Swizzling 交换方法,但是在实际应用中,好多人可能想不到这一点。所以我准备写一系列利用黑魔法才能实现的需求的文章。我们在集成一些第三方SDK时,尤其是带有UI界面的第三方。它的导航条风格跟我们App中的不一样,我们当然希望以我们App...

2018-07-11 15:11:54 653

原创 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 3885 1

原创 Block内部访问实例变量会出现的问题

最近开发中正好遇到了一个问题: 首先这是一个会引起循环引用的 Block 属性, 然后需要在 Block 中访问实例变量。ViewController#import "ViewController.h"#import "TestView.h"@interface ViewController (){ int _a;}@end@implementa

2018-01-11 10:51:46 1122

原创 RAC中监听通知的坑!

在很多文章里面都介绍了RAC的用法,其中对于NSNotificationCenter的介绍实在太少了。只说用RAC来处理的话不用removeObserver,但是其实不然。如果这个界面是被push过来的。 在viewDidLoad中,监听通知,使用RAC。 然后pop回去,再push进来。。。 结果就是这个通知被添加了多个观察者,而之前的已经被释放了。看似没问题,因为向nil发消息

2018-01-11 10:50:16 7244 4

原创 网络请求回调的Block中,到底是用weakSelf还是用self?

相信网络请求大家都会封装起来,有的封装成单例,有的封装成静态方法。[JRNetworkTool POSTRequest:CircleGetOpenUserURL params:@{@"OpenId": userId, @"OpenUserCategory":@0} succeed:^(JRResponse *response) { //这里处理你的response //那

2018-01-11 10:49:10 1644

转载 iOS App 的完整启动过程

解析 Info.plist 加载相关信息,例如闪屏。沙箱(SandBox)建立、权限检查。Mach-O 加载 如果是胖二进制文件,寻找合适当前 CPU 类别的部分。加载所有依赖的 Mach-O 文件(递归调用 Mach-O 加载的方法)。定位内部、外部指针引用,例如字符串、函数等。执行声明为 __attribute__((constructor)) 的C函数。加载分类(Categ...

2018-01-11 10:47:26 1526

原创 深入理解@property的关键字:weak,strong,copy,assign,unsafe_unretained

深入理解属性中的关键字

2017-06-19 15:03:27 666

原创 iOS开发中结构体的另一种“初始化方法”

结构体的另类“初始化方法”

2017-06-19 10:26:55 3297

原创 Unity与iOS相互调起、交互

Unity与iOS相互切换、交互上一篇我们已经实现了将Unity导出的工程集成到原生iOS项目中,接下来我们来实现Native与Unity相互切换、调起。

2017-05-16 17:45:31 12418 12

原创 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 5742 21

原创 探讨OC的内存管理 以及防止循环引用retain cycle 代理为什么用weak block为什么用copy

首先声明OC的内存管理机制:引用计数。当一个对象的引用计数为0时,这个对象就会被释放。铭记以上两点,我们开始来探讨。换句话说,如果一个对象,没有强指针指向,就会被释放。举个很形象的例子,假如每一个对象都是一只狗,每一个强指针都是狗链子,狗链子的数量就是引用计数。那么情况就会变成这样:当一个狗没有被狗链子拴着的时候,它就跑了。哈哈~那么什么情况下又会造成循环引用呢?顾名思义,就是两个对象相互强引用

2016-10-26 15:17:50 2160

原创 探讨声明UI控件属性 什么时候用weak什么时候用strong

也许我们在学习的时候,有人会告诉我们,UI控件的属性用weak修饰,而且,从Storyboard中拖出来的控件也都是用weak来修饰的,所以在习惯上,我们总会用weak去修饰。然而,在某些情况下,这么做是会出问题的,这时我们必须用strong来修饰。探讨之前,首先要了解Objective C的内存管理机制,即引用计数。一个对象何时会被释放呢?答案是,当引用计数为0的时候。建立一个UIView,声

2016-10-26 14:33:35 4475

原创 使用友盟分享,出现linker command failed with exit code 1

当你在工程中使用了友盟分享,编译的时候没问题,模拟器运行也没问题。但是呢!一旦准备上传项目, Archive 的时候就提示 linker command failed with exit code 1

2015-11-13 17:10:26 1117

原创 XIB创建的cell中的已经适配过的控件如何动态改变高度?

在自定义cell时,无论是UITableView还是UICollectionView,我们都习惯于用XIB来自定义cell,并完成屏幕适配。若是用代码来动态调整某个控件的frame倒是不难,但是用XIB我们自己弄好的约束却怎么办呢?

2015-11-13 16:53:33 5465

原创 将时间戳转换为时间,并输出“刚刚”、“昨天”、“XX小时前”等

我们在开发iOS程序中需要有接口,有时候借口提供的时间是NSNumber类型的并且是时间戳。比如说:1447375370 其实这个意思就是1970年0点到当前时间的秒数。

2015-11-13 15:59:50 2482

原创 动态调整UILabel的高度或宽度

动态调整UILabel的高度或宽度。保持宽不变或者高不变,另一个给出最大的MAXFLOAT即可

2015-11-13 15:18:34 819

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除