iOS开发
星仔20180409
IOS开发人员
展开
-
iOS开发:使用shell脚本更改工程版本号和build号
iOS开发:使用shell脚本更改工程版本号和build号。原创 2023-02-02 15:49:37 · 412 阅读 · 0 评论 -
判断Emoji在当前系统版本能否正常显示
【代码】判断Emoji在当前系统版本能否正常显示。原创 2022-11-05 12:59:13 · 150 阅读 · 0 评论 -
iOS本地存储
iOS本地存储有几个不同的方式,如下所示:NSUserDefaults:存储基本数据类型数据和二进制数据,只适用于存储比较微量的数据,例如配置项,登录信息等,不适合存储大量的数据,因为程序冷加载启动时也会加载这个,如果比较大的话会明显增加app启动耗时。NSKeyedArchiver/NSKeyedUnarchiver:可将数据归档后生成二进制数据然后写入文件中,如果是自定义模型类,必须先实现NSCoding协议,才可以进行归档/反归档操作。jsonString直接写入文件:比较适用于后台更新的原创 2022-02-22 19:19:38 · 1617 阅读 · 0 评论 -
iOS开发中多线程的应用
一、前言iOS开发中可以使用的多线程方案有:pthread:纯C语言实现的跨平台多线程解决方案,使用难度大。在iOS平台不推荐使用。 NSThread:iOS平台下面向对象的线程对象,使用相对容易,但需要开发者来管理其生命周期,而且多个线程同步需要配合NSLock等锁一起使用。 Grand Central Dispatch (GCD):iOS平台下纯C的API的多线程解决方案,隐藏了很多技术细节,比如不用手动创建线程,不用管理线程生命周期,不用使用各种锁,让开发人员可以专注于业务逻辑本身。 N原创 2022-02-21 02:19:04 · 1637 阅读 · 0 评论 -
基于UIScrollView实现一个可复用的TableView
一、前言UITableView的功能比较复杂和全面,因此本文只实现部分UITableView的功能。二、实现目标实现一个可重用,以及可以简单显示数据列表的功能。三、设计思路首先UITableView是由依次排列的单元格组成的(不考虑表头和表尾),那么可以先创建个自定义的cell继承自UIView,它的作用就是代替UITableViewCell作为表格视图的一个显示单元。它应该具有以下几个特点:可重用标识 可以显示数据那么由此可以仿照UITableViewCell创建一个可重用标识原创 2022-02-16 18:56:33 · 584 阅读 · 0 评论 -
iOS开发中OC对象内存管理小记
在MRC时代,遵循着“谁创建,谁释放”的原则,创建方法包括alloc, new, copy, mutableCopy以及以它们为前缀的构造方法例如allocWithXXX, copy等,原创 2021-06-17 18:29:50 · 116 阅读 · 0 评论 -
OC中创建唯一单例的保险做法
OC中创建唯一单例的保险做法// XZNotification.h@interface XZNotification : NSObject<NSCopying, NSMutableCopying>/** * @brief 创建一个通知中心单例,请不要自己通过alloc和init创建,而是调用此方法 * @return 唯一通知中心实例变量 */+ (XZNotification *)notification;@end// XZNotification.m@implement原创 2021-06-08 10:49:18 · 102 阅读 · 0 评论 -
Xcode中Build Setting的“Other C Flags”和“Preprocessor Macros”有什么区别
Preprocessor Macros:顾名思义,就是预处理的宏,例如debug ## 相当于#define debug还可以赋予任何初始值,例如debug=1Other C Flags:编译选项,如果用过g++命令的肯定看过这样的命令:g++ -D Debug HelloWorld.cpp这个命令就代表了编译链接之前先定义一个叫做Debug的宏,这样在HelloWorld.cpp文件中就可以使用#ifdef预处理命令了。在Other C Flags中也有类似的用法:上面的原创 2021-04-01 11:45:47 · 932 阅读 · 0 评论 -
开源框架提供对CocoaPods的支持
前言一般而言,大多数开源框架都是托管在GitHub上,然而光是托管上去,并不能直接使用CocoaPods提供版本支持,所以需要开发人员通过一系列操作来提供支持。正文假设已有一个开源框架在GitHub上,名称姑且称之为HelloWorldFramework,首先在将代码clone到本地:git clone [email protected]:fangzhenxing/HellloWorldFramework.git然后在GitHub上创建一个release版本:然后在工程主目录下.原创 2020-05-27 10:53:25 · 145 阅读 · 0 评论 -
objective-c中的copy关键字
前段时间突然被问到copy关键字的作用以及产生的效果,现在就来讨论讨论。首先阐述两个概念:深复制:就是说复制时除了指针本身,对象内容也被复制了一份浅复制:就是说只是复制了指针本身,对象内容并没有被复制一.集合对象的复制以数组类型为例,假设现在有一个数组:NSArray *array =[NSArray arrayWithObjects:[Person new]...原创 2020-04-21 17:51:19 · 186 阅读 · 0 评论 -
iOS13适配UITableViewCell的选中颜色
在iOS13以前,UITableViewCell的选中颜色设置一般是设置为:UIView *bgColorView = [[UIView alloc] init];bgColorView.backgroundColor = UIColor.redColor;self.selectedBackgroundView = bgColorView;在iOS13以后,发现该设置失效了,原因是U...原创 2019-12-25 11:17:00 · 869 阅读 · 0 评论 -
UITableView的头视图重用问题
小编前段时间接到需求需要实现一个类似于QQ好友列表展开关闭的表视图,实现后debug模式测试发现在滚动列表的时候以及收到通知刷新表视图数据的时候一直在新建headerView,并没有达到重用的效果。小编在排查各种原因无果后,差点都要放弃了。。。今天一个偶然的机会,我把之前练手的项目QQ好友列表打开开始调试。打开其中一个分组之后,再次滚动表视图则不会再新建headerView了。如下图所示:...原创 2019-11-05 16:52:35 · 250 阅读 · 0 评论 -
XCode11辅助功能小记
Xcode11之前在辅助窗口打开文件一般是使用快捷键command+鼠标左键就可以了。然而在Xcode11之后这个快捷键已经无效了,取而代之的是command+shift+鼠标左键。这里记录一个小坑点:这个小加号图标的按钮如果是这样置灰了的话,上面的快捷键是无效的。一开始我以为是Xcode11的bug,后面才发现是这个focus-on功能的原因。点击一下这个按钮,退出focus-on功能,...原创 2019-10-12 10:17:05 · 557 阅读 · 0 评论 -
【CoreData】使用命令查看数据
最近在使用CoreData的过程中,想要查看项目中的保存方法是否有效写入磁盘。于是就找到了模拟器沙盒中的文件:发现这其中有三个文件,实际数据目前只是先存放在wal后缀文件中。WAL机制的原理是:修改并不直接写入到数据库文件中,而是写入到另外一个称为WAL的文件中;如果事务失败,WAL中的记录会被忽略,撤销修改;如果事务成功,它将在随后的某个时间被写回到数据库文件中,提交修改。(参考来源:S...原创 2019-06-03 11:19:11 · 1141 阅读 · 0 评论 -
iOS模态视图小结
一开始,我觉得iOS模态视图只不过和push&pop差不多,都是为了实现跳转而生的。而且它比push更方便的是它不需要UINavigationController,直接使用代码: ModalViewController *mvc = [[ModalViewController alloc] init]; [self presentViewController:mvc ...原创 2019-05-30 15:03:04 · 631 阅读 · 0 评论