自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 收藏
  • 关注

原创 使用IPSW文件将iOS系统从Beta恢复到稳定正式版教程

有些朋友Mac电脑上很可能已经没有Itunes这个软件了,没关系不用下载。用USB连接手机到电脑,找到访达,找到访达侧边栏上您设备的标识,点击进去,按住option键不放,找到“恢复iPhone(或iPad / iPod)”按钮并单击,选择下载好的IPSW文件,根据系统提示,即可完成安装。

2023-06-09 21:28:55 2363

原创 iOS开发:使用shell脚本更改工程版本号和build号

iOS开发:使用shell脚本更改工程版本号和build号。

2023-02-02 15:49:37 399

原创 判断Emoji在当前系统版本能否正常显示

【代码】判断Emoji在当前系统版本能否正常显示。

2022-11-05 12:59:13 149

原创 cocoapods更新远程索引没有反应解决办法

1.从浏览器下载https://github.com/CocoaPods/Specs.git的内容2.git clone --bare https://github.com/CocoaPods/Specs.git3.把下载好的内容复制到对应的位置

2022-03-04 12:54:04 313

原创 终端下载GitHub相关资源提示connect refused等错误解决办法

HomeBrew和Oh My Zsh都是托管于GitHub上的工具,但是使用它们官网的终端命令安装却很可能发生错误。究其原因,还是资源服务器太远了造成的。

2022-03-04 12:14:29 885

原创 C语言算法题之二叉树的路径和

思路二叉树顾名思义就是一个最多有两个子节点的数据结构,如下图所示。其中像数字7和8,5和6这四个节点都叫做叶子节点,其他的节点都是叫做根节点。路径有:1-2-4-7(路径和为1+2+4+7=14) 1-2-4-8(路径和为1+2+4+8=15) 1-2-5(路径和为1+2+5=8) 1-3-6(路径和为1+3+6=10)给定一个二叉树和指定值,那么如何便利路径和并比较是否等于指定值呢?可以将路径和看作是一个算式,算式左边等于各路径上的节点之和,算式右边等于指定值。然后通过移相的...

2022-02-27 01:07:18 849

原创 iOS本地存储

iOS本地存储有几个不同的方式,如下所示:NSUserDefaults:存储基本数据类型数据和二进制数据,只适用于存储比较微量的数据,例如配置项,登录信息等,不适合存储大量的数据,因为程序冷加载启动时也会加载这个,如果比较大的话会明显增加app启动耗时。NSKeyedArchiver/NSKeyedUnarchiver:可将数据归档后生成二进制数据然后写入文件中,如果是自定义模型类,必须先实现NSCoding协议,才可以进行归档/反归档操作。jsonString直接写入文件:比较适用于后台更新的

2022-02-22 19:19:38 1617

原创 iOS开发中多线程的应用

一、前言iOS开发中可以使用的多线程方案有:pthread:纯C语言实现的跨平台多线程解决方案,使用难度大。在iOS平台不推荐使用。 NSThread:iOS平台下面向对象的线程对象,使用相对容易,但需要开发者来管理其生命周期,而且多个线程同步需要配合NSLock等锁一起使用。 Grand Central Dispatch (GCD):iOS平台下纯C的API的多线程解决方案,隐藏了很多技术细节,比如不用手动创建线程,不用管理线程生命周期,不用使用各种锁,让开发人员可以专注于业务逻辑本身。 N

2022-02-21 02:19:04 1633

原创 iOS开发中ARC的本质

一、产生背景ARC(Auto Reference Counting)技术是苹果公司在设计XCode Static Analysis(静态分析工具)时产生的灵感,苹果公司想既然这个工具可以检测到内存泄漏,那么应该也可以帮助开发者做好内存管理工作。于是ARC在2011年iOS5发布的时候就推出了。它在苹果文档中是这样介绍的:在Objective-C中采用ARC机制,让编译器来进行内存管理。在新一代Apple LLVM 编译器中设置ARC为有效状态,就无需再次键入retain或者release代码,这在

2022-02-17 14:08:24 1118

原创 基于UIScrollView实现一个可复用的TableView

一、前言UITableView的功能比较复杂和全面,因此本文只实现部分UITableView的功能。二、实现目标实现一个可重用,以及可以简单显示数据列表的功能。三、设计思路首先UITableView是由依次排列的单元格组成的(不考虑表头和表尾),那么可以先创建个自定义的cell继承自UIView,它的作用就是代替UITableViewCell作为表格视图的一个显示单元。它应该具有以下几个特点:可重用标识 可以显示数据那么由此可以仿照UITableViewCell创建一个可重用标识

2022-02-16 18:56:33 582

原创 iOS开发中OC对象内存管理小记

在MRC时代,遵循着“谁创建,谁释放”的原则,创建方法包括alloc, new, copy, mutableCopy以及以它们为前缀的构造方法例如allocWithXXX, copy等,

2021-06-17 18:29:50 113

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

原创 git同步本地分支和远程分支以及同步Tag

一、同步分支#/user/bingit fetch origin -p

2021-05-28 16:34:30 442

原创 shell命令自动更新所有工作目录的远程文件

#! /bin/bashfunction read_dir(){for file in `ls $1` #注意此处这是两个反引号,表示运行系统命令do echo $1/$file cd $1/$file if [[ $(git rev-parse --show-toplevel 2>/dev/null) = "$PWD" ]] then git restore . #慎用!!!如果有本地代码还没提交就别用这句了 git clea...

2021-04-02 11:18:12 161

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

原创 Mac装机终端插件和应用建议

Mac装机时有时候总是想不起电脑安装过哪些软件和终端插件,故而利用此文记录一下Mac装机过程

2020-11-12 17:39:53 293

原创 开源框架提供对CocoaPods的支持

前言一般而言,大多数开源框架都是托管在GitHub上,然而光是托管上去,并不能直接使用CocoaPods提供版本支持,所以需要开发人员通过一系列操作来提供支持。正文假设已有一个开源框架在GitHub上,名称姑且称之为HelloWorldFramework,首先在将代码clone到本地:git clone [email protected]:fangzhenxing/HellloWorldFramework.git然后在GitHub上创建一个release版本:然后在工程主目录下.

2020-05-27 10:53:25 144

原创 objective-c中的copy关键字

前段时间突然被问到copy关键字的作用以及产生的效果,现在就来讨论讨论。首先阐述两个概念:深复制:就是说复制时除了指针本身,对象内容也被复制了一份浅复制:就是说只是复制了指针本身,对象内容并没有被复制一.集合对象的复制以数组类型为例,假设现在有一个数组:NSArray *array =[NSArray arrayWithObjects:[Person new]...

2020-04-21 17:51:19 182

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

原创 网络流程浅析

上图展示了本地计算机使用浏览器访问网页时的网络流程,其中不同局域网之间的网络通信需要知道的内容包括有:目标计算机的域名 目标计算机的IP地址 目标计算机的Mac地址 目标计算机应用程序的端口号接下来先按本人理解以软硬件的角度来说明:第一步,我们只是知道一个网址,通常这个网址就是一个域名,然后我们就会像上图所示流程通过DNS服务器去将域名解析成对应的IP地址和端口号,这个IP地址...

2019-11-29 03:10:32 164

原创 浅析IOS中isa指针的作用

在objective-c语言中,isa指针看名称指的是“是一个”的意思。isa指针是一个指针,具体到代码中,如果是对象,对象中的isa指针是指向的它的类对象。/// An opaque type that represents an Objective-C class.typedef struct objc_class *Class;/// Represents an instance...

2019-11-27 00:42:29 1059

原创 XCode11上传ipa到App Store所遇到的问题

在出现该问题之前,小编一直以为只要证书正确了,其他的就是等着就可以了。然而,在upload file的过程中,过了四十多分钟还是没有半点响应。一直卡在与App Store进行认证中(authenticating with the app store),所以小编开始觉得有些不对劲了。在网上收罗相同的问题,因为没法翻墙,小编在百度上查的。找到的解决方法之一是去找到application loade...

2019-11-19 10:15:12 1503

原创 UITableView的头视图重用问题

小编前段时间接到需求需要实现一个类似于QQ好友列表展开关闭的表视图,实现后debug模式测试发现在滚动列表的时候以及收到通知刷新表视图数据的时候一直在新建headerView,并没有达到重用的效果。小编在排查各种原因无果后,差点都要放弃了。。。今天一个偶然的机会,我把之前练手的项目QQ好友列表打开开始调试。打开其中一个分组之后,再次滚动表视图则不会再新建headerView了。如下图所示:...

2019-11-05 16:52:35 249

原创 XCode11辅助功能小记

Xcode11之前在辅助窗口打开文件一般是使用快捷键command+鼠标左键就可以了。然而在Xcode11之后这个快捷键已经无效了,取而代之的是command+shift+鼠标左键。这里记录一个小坑点:这个小加号图标的按钮如果是这样置灰了的话,上面的快捷键是无效的。一开始我以为是Xcode11的bug,后面才发现是这个focus-on功能的原因。点击一下这个按钮,退出focus-on功能,...

2019-10-12 10:17:05 555

原创 【CoreData】使用命令查看数据

最近在使用CoreData的过程中,想要查看项目中的保存方法是否有效写入磁盘。于是就找到了模拟器沙盒中的文件:发现这其中有三个文件,实际数据目前只是先存放在wal后缀文件中。WAL机制的原理是:修改并不直接写入到数据库文件中,而是写入到另外一个称为WAL的文件中;如果事务失败,WAL中的记录会被忽略,撤销修改;如果事务成功,它将在随后的某个时间被写回到数据库文件中,提交修改。(参考来源:S...

2019-06-03 11:19:11 1138

原创 iOS模态视图小结

一开始,我觉得iOS模态视图只不过和push&pop差不多,都是为了实现跳转而生的。而且它比push更方便的是它不需要UINavigationController,直接使用代码: ModalViewController *mvc = [[ModalViewController alloc] init]; [self presentViewController:mvc ...

2019-05-30 15:03:04 628

原创 iOS制作framework时遇到的一个坑

第一次制作framework封装项目里的业务库,然后就遇到了一个容易被自己忽视的坑比如我的framework里面有这样一个类供外部调用:public class Hello { public var message = ""}我将framework打包,然后新建一个Test Tartget。在Target里去import这个framework并想要创建这个类,发现编译器报...

2019-05-18 17:09:21 613

原创 swift5弃用方法'withUnsafeBytes' is deprecated解决办法

如题,swift5出现以后,这个withUnsafeBytes方法就被弃用了。Xcode提示信息是:所以,以前的使用方法:let data = Data()let value = Int(bigEndian: data.subdata(in: 0..<4).withUnsafeBytes { $0.pointee })应该改成现在这样:let data = Data()...

2019-04-14 18:03:23 3980 2

原创 随笔:使用SnapKit的updateConstraint方法无法更新storyboard中建立的约束问题

今天我在做自适应高度的UITextView时,无意中碰到了一个非常奇怪的问题:我使用纯代码布局+snapKit建立约束的时候,在代理方法里面使用代码: func textViewDidChange(_ textView: UITextView) { let frame = textView.frame let constraintSize = CGS...

2019-03-22 17:07:59 1201

转载 Java中强引用、弱引用、软引用、虚引用的区别

Java对象引用类型分为强引用、软引用、弱引用和虚引用。强引用:就是我们一般声明对象是时虚拟机生成的引用,强引用环境下,垃圾回收时需要严格判断当前对象是否被强引用,如果被强引用,则不会被垃圾回收软引用:软引用一般被做为缓存来使用。与强引用的区别是,软引用在垃圾回收时,虚拟机会根据当前系统的剩余内存来决定是否对软引用进行回收。如果剩余内存比较紧张,则虚拟机会回收软引用所引用的空间;如果剩余内...

2019-03-16 01:24:03 149

原创 随笔:动态内存分配

在CPU中,CPU的职责就是执行运算而已,数据的来源则来自于内存区。但是由于CPU运算速度远远高于内存的读写速度,为了平衡这种速度差,CPU中引入了缓存机制。但是,CPU 缓存还是不够快,另外数据在缓存里面的地址是不固定的,CPU 每次读写都要寻址也会拖慢速度。因此CPU就加入了CPU registers(寄存器)这样一个东西。它通常被称为“零级缓存”。CPU在高速运算下,会优先读写寄存器,再由寄...

2019-03-16 01:10:06 172

原创 [Warning] Warning once only: Detected a case where constraints ambiguously suggest a height of zero

 网上原因说是没有设置tableView的高度 然当tableView的高度要变成自适应的时候,显然tableView的高度不能直接写死而是设置为 UITableView.automaticDimension 所以产生此警告的真正原因是cell无法计算自身的高度。具体表现为cell的子view缺少top约束或者bottom约束。...

2018-12-27 09:39:46 1428

原创 关于OC重写ViewController init方法中使用[self.view addSubview:XXX];引发的 self.navigationController为nil问题

   由于swift中属性初始化可以在定义的时候就写初始化代码,而OC中初始化自定义属性的代码需要写进init方法里面: _customBar = [[UINavigationBar alloc]initWithFrame: CGRectMake(0, 0, [UIScreen cz_screenWidth], 64)]; _customItem = [[UINavigat...

2018-04-21 16:01:25 3242

空空如也

空空如也

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

TA关注的人

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