![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
iOS开发
文章平均质量分 70
xinxu-dev
多年iOS和混编研发带队经验,先后做过电商、OA、图片、语音、视频、即时通讯等项目,多个AppStore上线项目,现工作在某网络安全公司手机盾安全部门负责SDK的研发,希望能和大家一起进步。
展开
-
iOS-动态调试LLDB
最近在研究iOS的逆向,学到了动态调试LLDB这块,之前在开发的时候只是进行正常的打断点和打印参数,没有去具体的了解整个调试流程。这次做个相关知识的学习并进行个总结。什么是LLDB?LLDB是Low Level Debugger的简称,在iOS开发的调试中LLDB是经常使用的,LLDB是Xcode内置的动态调试工具。LLVM是一个模块化和可重用的编译器和工具链技术的集合,创始人是 C...原创 2019-12-30 15:33:25 · 428 阅读 · 0 评论 -
IOS-UI调试工具Reveal(iOS开发者应该会用的工具)
Reveal我认为是一个iOS开发者必须了解的一个工具。无论是接手一个老项目后对UI的分析,还是在自己写项目后对UI问题的查找,都可以给予很大的帮助。之前写过一篇介绍Reveal工具的文章,但但是基于越狱手机的前提下。现在介绍下在自己的程序中该如何使用。Reveal介绍Reveal是一款调试iOS程序UI界面的工具。可以在官网上面下载。建议下载至少Reveal4版本,支持USB连接调试,速...原创 2019-12-30 15:34:23 · 592 阅读 · 0 评论 -
IOS安全、逆向、反编译5-Mach-O
逆向App的基本步骤 界面分析 Cycript、Reveal 代码分析 对Mach-O文件的静态分析 MachOView、class-dump、Hopper Disassembler、ida等 动态调试 对运行中的APP进行代码调试 debugserver、LLDB 4.代码编写 注入代码到APP中 必要时还可能需要重新签名、打包ip ...原创 2019-12-27 11:05:51 · 2037 阅读 · 0 评论 -
IOS安全、逆向、反编译4-Reveal(iOS开发者应该会用的工具)
Reveal我认为是一个iOS开发者必须了解的一个工具。无论是接手一个老项目后对UI的分析,还是在自己写项目后对UI问题的查找,都可以给予很大的帮助。Reveal介绍Reveal是一款调试iOS程序UI界面的工具。可以在官网上面下载。建议下载至少Reveal4版本,支持USB连接调试,速度快。低版本的只能WiFi连接调试。下边也提供破解的Reveal下载地址。首先来看下Reveal出来...原创 2019-12-27 11:03:45 · 512 阅读 · 0 评论 -
IOS安全、逆向、反编译3-Cycript
Cycript是Objective-C++、ES6(JavaScript)、Java等语法的混合物, 可以用来探索、修改、调试正在运行的Mac\iOS APP。我们可以通过官网和文档来学习 。Cycript使用步骤 在iPhone上通过Cydia安装Cycript,即可在iPhone上调试运行中的APP 在Mac终端使用SSH连上iPhone 开启cycript ...原创 2019-12-27 10:54:35 · 223 阅读 · 0 评论 -
iOS-真机调试包(不断的更新中...)
今天手机自动升级到了iOS13,然后真机调试就用不了了,还不想升级XCode,就只能新增真机调试包了。(会不断的更新)xcode 版本回退地址:https://developer.apple.com/download/more/把我包里的文件 13.3放到 下边目录中打开路径:/Applications/Xcode.app/Contents/Developer/Platfor...原创 2019-12-25 10:49:01 · 454 阅读 · 0 评论 -
IOS安全、逆向、反编译2-SSH协议的详解
在逆向工程中,我们经常需要通过Mac来操作iPhone。在Mac上,我们经常在终端通过敲一些命令行来完成一些操作,而由于iOS和Mac OS X都是基于Darwin(苹果的一个基于Unix的开源系统内核),所以iOS中同样支持终端的命令行操作,因此,我们可以在Mac上使用终端来操作iPhone。为了实现上述的功能,我们得让Mac和iPhone建立连接,一般可以通过Mac远程登录到iPhone的...原创 2019-12-24 10:23:55 · 392 阅读 · 0 评论 -
IOS安全、逆向、反编译1-越狱知识讲解
之前开发了一个对安全性要求比较高的APP,所以对安全、逆向和反编译有了一些认识,最近有时间就想系统的把这些知识做一个整理。今天就开始把我的学习过程记录下来。iOS越狱环境搭建在学习iOS越狱之前,我们当然需要一台iOS设备,由于现在基本上都是64位系统为主,所以最好是使用ARM64架构的设备,因此首先我们的手机至少需要iPhone5S或者之后的iPhone设备,平板至少是iPad Air、...原创 2019-12-11 14:37:41 · 928 阅读 · 0 评论 -
iOS-多线程的详细理解
多线程一直是近年来最常问的面试题之一,在工作中也会经常用到(如果你说你重来没用到,那至少你也得知道哪些底层用到过吧,如果你说你不知道,那你牛)。先从一些面试题入手,了解下哪些是重点,有些问题是我去面试被问到的,也是面试其他人我愿意问的。1、你理解的多线程?2、iOS的多线程方案有哪几种?你更倾向于哪一种?3、你在项目中用过 GCD 吗?4、GCD 的队列类型5、说一下 Op...原创 2019-12-02 11:32:13 · 262 阅读 · 0 评论 -
iOS-Tagged Pointer的理解
关于Tagged Pointer在2013年9月,苹果推出了iPhone5s,与此同时,iPhone5s配备了首 个采用64位架构的A7双核处理器,为了节省内存和提高执行效率,苹果提出了Tagged Pointer的概念。先看看原有的对象为什么会浪费内存。假设要存储一个NSNumber对象,其值是一个整数。正常情况下,如果这个整数只是一个NSInteger的普通变量,那么它所占用的内存是与CP...原创 2019-12-02 11:12:13 · 583 阅读 · 0 评论 -
iOS GitHub上常用第三方框架与一些参考文本总结
转载自:https://github.com/Tim9Liu9/TimLiu-iOS目录参考@版本管理@Git用法@GitHub@GitBook@Git文章@GithubRank@桌面工具@Github客户端@Github插件@命令行@Git平台与工具@Github项目@Git库@Github浏览器工具@完整App@框架@响应式@framework@混合开发@样转载 2017-06-01 09:10:44 · 3346 阅读 · 1 评论 -
iOS之加密安全设计
公司项目是很注重信息的安全,在这里总结下在项目中使用到的一些技术。先说下基本的加密算法对称加密和非对称加密。加密算法通常分为对称性加密算法和非对称性加密算法:对于对称性加密算法,信息接收双方都需事先知道密匙和加解密算法且其密匙是相同的,之后便是对数据进行 加解密了。非对称算法与之不同,发送双方A,B事先均生成一堆密匙,然后A将自己的公有密匙发送给B,B将自己的公有密匙发送给A,如果A要给B发送消息...原创 2018-02-26 11:30:23 · 585 阅读 · 0 评论 -
在App的图标上显示版本信息的脚本
由于公司的项目比较多,而且总更新不同的版本,测试人员有的时候会拿来一个不知n月前安装的App告诉你,这个App有问题,然后这个问题你会发现是早就修改过的,但是测试者不知你App的具体信息,你也不知是什么时候给安装过的。因此就想到了这个方法,把程序的信息直接放到了App的图标上,让测试人员和你都能快速定位问题,我是把版本号,SVN上对应代码的版本,打包的时间显示在图标上了(这个根据自己的情况来显示,...原创 2018-04-13 14:43:49 · 507 阅读 · 0 评论 -
iOS-实现支付宝的进入后台模糊效果
实现支付宝进行后台,页面模糊的效果,很多金融类的app都实现这样效果来增加安全,代码很简单,在AppDelegate中实现。代码实现:@property (strong, nonatomic)UIVisualEffectView *visualEffectView; #pragma mark 后台模糊效果- (UIVisualEffectView *)visualEffectV...原创 2018-08-07 10:47:57 · 4970 阅读 · 2 评论 -
iOS-理解SSL证书
为什么要用HTTPS简单地说,HTTP是明文协议,通过该协议传输的数据处在被窃听、篡改、冒充这三大风险中,已经是非常不安全的传输协议。HTTPS是加密协议,就是在HTTP的基础上开启一条SSL加密通道,让原本明文“裸奔”的数据,从加密通道中密文传输,保证了数据传输的安全性。目前,全球互联网正在进行从HTTP到HTTPS的大迁移,苹果一向非常关注用户隐私安全,在执行安全策略方面,态度也是非...原创 2019-12-02 11:39:30 · 699 阅读 · 0 评论 -
iOS-操作系统的理解和回答面试问题的小技巧
写这篇文章是因为昨天一个朋友去面试回来,和我说面试官问他什么是iOS,他很是无语不知道怎么回答。今天想了下,其实这种问题是很基础的,可能对方只是想听一些你对操作系统的理解,所以类似的问题都可以往苹果移动操作系统的原理方面回答,下边是我想到的一些回答思路。这里说下自己总结的回答面试问题的小技巧,之前面试其他人,有的人知道问题,但是回答的方式很乱,让人感觉他自己都不熟悉,这样的人在开发也是一样...原创 2018-08-03 12:24:41 · 694 阅读 · 0 评论 -
iOS-捕获崩溃的异常和友好的处理
1.前言开发iOS应用,解决Crash问题始终是一个难题。Crash分为两种,一种是由EXC_BAD_ACCESS引起的,原因是访问了不属于本进程的内存地址,有可能是访问已被释放的内存;另一种是未被捕获的Objective-C异常(NSException),导致程序向自身发送了SIGABRT信号而崩溃。其实对于未捕获的Objective-C异常,我们是有办法将它记录下来的,如果日志记录得当,能...原创 2018-08-21 17:01:35 · 1845 阅读 · 0 评论 -
This xxx is running iOS 13 (17A860), which may not be supported by this version of Xcode.-已更新14.5
今天手机自动升级到了iOS13,然后真机调试就用不了了,还不想升级XCode,就只能新增真机调试包了。(会不断的更新)xcode 版本回退地址:https://developer.apple.com/download/more/把我包里的文件 13.3放到 下边目录中打开路径:/Applications/Xcode.app/Contents/Developer/Platfor...原创 2019-10-08 12:25:57 · 5434 阅读 · 0 评论 -
iOS 13适配的一些问题总结
因为需要测试iPhone 11,然后就手残的把XCode给升级了,然后就各种问题,如果不是有特别的需求建议千万现别升级、千万现别升级、千万现别升级。1.模态弹出默认交互改变模态的效果完全改变了,从跳转到下个页面变成了弹出的效果。iOS 13 的 presentViewController 默认有视差效果,模态出来的界面现在默认都下滑返回。 一些页面必须要点确认才能消失的,需要适配。如果...原创 2019-10-09 16:48:53 · 1735 阅读 · 1 评论 -
iOS-Xcode中Developer Tool功能的总结
有开发几年的人也很少都用这些工具的,这里整理下Xcode菜单栏里面Open Developer Tool的一些功能。 一、Instruments工具Instruments工具是iOS性能优化工具。对于程序员来说,程序代码性能是个老生常谈的话题,随着程序项目的不断增加功能和需求,不得不随时考虑到调试和优化代码,那么根据运用Xcode自带的监控调试工具就可以很好的解决这些问题,防...原创 2018-02-09 15:12:22 · 1892 阅读 · 0 评论 -
iOS 自定义多张图片选择+demo
if ([phoneVersionintegerValue] >= 8) { //高版本使用PhotoKit框架 [selfgetHeightVersionAllPhotos]; } else { //低版本使用ALAssetsLibrary框架 [selfgetLo原创 2017-06-05 15:39:00 · 8586 阅读 · 2 评论 -
iOS 第三方MBProgressHUD使用的问题
之前用过MBProgressHUD和SVProgressHUD,两个第三方都挺好用最近使用MBProgressHUD一直报让使用GCD'showAnimated:whileExecutingBlock:completionBlock:' is deprecated: Use GCD directly.MBProgressHUD官网的地址: https://github.com/原创 2017-06-13 14:20:50 · 580 阅读 · 0 评论 -
判断链表中是否有环 ----- 有关单链表中环的问题
给定一个单链表,判断其中是否有环,已经是一个比较老同时也是比较经典的问题,在网上搜集了一些资料,然后总结一下大概可以涉及到的问题,以及相应的解法。首先,关于单链表中的环,一般涉及到一下问题:1.给一个单链表,判断其中是否有环的存在;2.如果存在环,找出环的入口点;3.如果存在环,求出环上节点的个数;4.如果存在环,求出链表的长度;5.如果存在环,求出环上距离任意转载 2017-06-21 17:17:52 · 204 阅读 · 0 评论 -
iOS 图片的压缩
我是用这个函数对图片进行压缩的NSData *fData = UIImageJPEGRepresentation(self.photo, 1.0);这样,图片是7MB这样。假如压缩级别是0.5,如:NSData *fData = UIImageJPEGRepresentation(self.photo, 0.5);图片压缩之后,大小是 1MB左右。。现在问题来了。原创 2017-05-31 18:34:50 · 575 阅读 · 0 评论 -
iOS 宏定义
在项目中经常用到的一些宏定义,我基本都是将宏分成几个部分,尺寸宏、系统宏、文字宏、工具类宏、定义沙盒目录文件的宏、通知Notification相关的宏、服务端API接口的宏,还有一个管理的宏。1、定义尺寸类的宏#ifndef DimensMacros_h#define DimensMacros_h//状态栏高度#define STAT原创 2017-05-25 17:37:55 · 916 阅读 · 0 评论 -
iOS OC消除黄色警告⚠️ (不断的更新中...)
开发一个项目时,难免会产生很多警告,一些是第三方或是老代码不再被支持造成的,但并不影响使用,这些警告其实可以直接隐藏掉!还有一些警告可能是系统方法弃用、不兼容指针类型、未使用变量、未使用default、weak、循环引用、不能执行之类的警告。首先说下我使用CocoPod在管理我的第三方,最近在升级的时候,把一些第三方直接升到了最新版本,结果现在使用的一些方法就出现了警告,所以这里建议在原创 2017-05-25 11:04:50 · 5029 阅读 · 0 评论 -
iOS 类方法和实例方法的区分和使用
最近发现很多朋友在面试的时候被问到这个问题,看起来很简单,但是说的不全面,就在这总结下,也参考了一些其他文档。Objective-C里面既有实例方法也类方法。类方法(Class Method) 有时被称为工厂方法(Factory Method)或者方便方法(Convenience method)。工厂方法的称谓明显和一般意义上的工厂方法不同,从本质上来说,类方法可以独立于对象而执行,所以在原创 2017-03-22 14:38:42 · 480 阅读 · 0 评论 -
ios KSImageNamed-Xcode插件使用报错
之前的开发中使用了KSImageNamed-Xcode这个第三方插件KSImageNamed是让XCode能预览项目中图片的插件 主要针对imageNamed:方法 效果如图:现在X-code8不支持第三方的插件了,为了是安全问题。所以电脑中再使用这个项目就可以会有在X-code中敲代码退出来的情况解决办法就是在电脑中删除这个第三方1.找文件删除原创 2017-03-06 11:09:35 · 254 阅读 · 0 评论 -
iOS之Runtime的理解和使用
之前很少使用Runtime,现在Runtime基本就是面试必问的问题了,Runtime是想要做好iOS开发,或者说是真正的深刻的掌握OC这门语言所必需理解的东西,现在就开始重新学习和总结一下Runtime。什么是Runtime我们写的代码在程序运行过程中都会被转化成runtime的C代码执行,例如[target doSomething];会被转化成objc_msgSend(原创 2017-08-15 11:06:52 · 247 阅读 · 0 评论 -
iOS 封装多张图片的展示器+demo
封装的一个图片的展示的功能支持GIF 暂时只支持网络图片 提供一组URL 即可自动完成所有操作。支持长按保存图片到相册,支持横屏查看图片,查看长图。点击图片时的放大、缩小都做了动画效果。整个模块以CollectionView控件来完成 只需要在你展示的地方 addSubview 即可 无需管理控制器,方便简洁可以直接修改,无需深入代码来做修改。原创 2017-06-13 17:05:25 · 947 阅读 · 0 评论 -
Xcode 真机调试报错:This application's application-identifier entitleme
This application's application-identifier entitlement does not match that of the installed application. These values must match for an upgrade to be allowed.解决方法:1、Xcode-Window->Devices2、选中你的设原创 2017-09-01 10:22:33 · 264 阅读 · 0 评论 -
ios implicit conversion of an objective-c pointer to 'NSString *__autoreleasing *' is disallowed wit
最近再调其他公司给的一个SDK,对方有一个方法是这样定义的-(void)getCode:(NSString **)str;如果直接传字符串,直接传不过去解决方案是我直接加了一个地址符就可以了 NSString *str =@"123";[_secondVCgetCode:&str];原创 2017-09-06 16:50:58 · 6478 阅读 · 0 评论 -
iOS 使用WKWebView加载h5页面无法调用拨打电话功能
一般h5页面有联系我们然后点击拨打电话的功能,在使用的时候发现了UIWebView加载的H5,可以调用;但是WKWebView就是不行,解决WKWebView加载H5页面,无法调用拨打电话功能的问题H5的拨打电话代码是移动WEB页面JS一键拨打号码咨询功能解决的方法:在WKWebView的WKNavigationDelegate代理方法处理解决代码如下:原创 2017-09-05 17:06:38 · 3187 阅读 · 0 评论 -
iOS 介绍使用UIWebView和WKWebView加载进度条的代码+demo
简介如果项目支持iOS7之前的系统版本的话,可以做个系统判断,这里就不介绍了,这里还是推荐使用WKWebView,先介绍下使用这个的好处,然后介绍使用UIWebView和WKWebView加载进度条的代码。开发App的过程中,常常会遇到在App内部加载网页,通常用UIWebView加载。这个自iOS2开始使用的网页加载器一直是开发的心病:加载速度慢,占用内存多,优化困难。如果加载网页多原创 2017-08-31 17:59:24 · 765 阅读 · 0 评论 -
iOS @class与#import的区别
1.@class基本概念作用 可以简单地引用一个类简单使用 @class Dog;仅仅是告诉编译器:Dog是一个类;并不会包含Dog这个类的所有内容具体使用 在.h文件中使用@class引用一个类在.m文件中使用#import包含这个类的.h文件2.@class其它应用场景对于循环依赖关系来说,比方A类引用B类,同时B类也引用A类这种嵌套包含的代码编译会报错原创 2017-08-15 10:54:08 · 200 阅读 · 0 评论 -
iOS编译过程的原理和应用
转:http://blog.csdn.net/Hello_Hwc/article/details/53557308一般可以将编程语言分为两种,编译语言和直译式语言。像C++,Objective C都是编译语言。编译语言在执行的时候,必须先通过编译器生成机器码,机器码可以直接在CPU上执行,所以执行效率较高。像JS,Python都是直译式语言。直译式语言不需要经过原创 2017-08-15 09:21:38 · 292 阅读 · 0 评论 -
iOS YYKit理解
github的下载地址https://github.com/ibireme/YYKitYYKit 是一组庞大、功能丰富的 iOS 组件。为了尽量复用代码,这个项目中的某些组件之间有比较强的依赖关系。为了方便其他开发者使用,我从中拆分出以下独立组件:YYModel — 高性能的 iOS JSON 模型框架。YYCache — 高性能的 iOS 缓存框架。Y原创 2017-06-09 18:31:04 · 1639 阅读 · 0 评论 -
iOS总结 cocopods中常用的第三方库
platform :ios, '8.0'target 'WCard'do pod 'AFNetworking','~> 3.1.0' // 网络请求 pod 'JSPatch' pod 'MJRefresh' // 下拉刷新,上拉加载更多(拓展性强) pod 'Reachability' pod '原创 2017-03-03 18:26:15 · 2252 阅读 · 0 评论