![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
IOS
文章平均质量分 70
M.François
Learning code by doing more projects as many as you can.
展开
-
获取iOS和Android的app下载渠道和相关参数的方式
Universal Link, AppLinks, Deep Link, 安卓和iOS的下载渠道获取原创 2024-03-15 14:00:55 · 1209 阅读 · 0 评论 -
Flutter中的NotificationCenter和EventBus(超级简单!)
类似iOS的NotificationCenter和安卓的EventBus原创 2024-01-06 18:02:38 · 428 阅读 · 0 评论 -
iOS的内存检测、发热
1.内存检测第三方开源库:1.Leaks工具(Xcode自带):虽非第三方库,但Xcode内置的Leaks工具非常有效于检测内存泄漏。2.FBRetainCycleDetector:Facebook开源的一个库,用于检测循环引用和内存泄漏。3.Instruments:再次强调,Instruments是内存优化的强大工具,尤其是它的Allocations和Leaks工具。4.MLeaksFinder:一个自动检测iOS程序中内存泄漏的工具。5.AlamofireImage:如果你的应用大量处理网原创 2023-12-01 17:22:32 · 313 阅读 · 0 评论 -
Swift开发中:非逃逸闭包、逃逸闭包、自动闭包的区别
理解这三种闭包的区别有助于你更好地掌握 Swift 编程,尤其是在涉及到异步编程、内存管理和代码优化时。适当使用这些闭包可以使你的代码更加灵活和高效。在这个例子中,2 > 1 这个表达式被转换成了一个自动闭包,然后作为参数传递给 performAutoClosure 函数。原创 2023-11-14 15:49:05 · 616 阅读 · 0 评论 -
Swift基础
当前版本:Swift 5.9。原创 2023-10-26 10:38:51 · 260 阅读 · 0 评论 -
Flutter 2.2 在macOS上的使用 - 开发iOS和安卓app - 从0到1教程
目录1.下载Flutter2.检测Flutter3.一个简单的Flutter程序示例4.sssss1.下载flutter直接下载,需要解压缩https://storage.googleapis.com/flutter_infra_release/releases/stable/macos/flutter_macos_2.2.1-stable.zip通过gitgit clone https://github.com/flutter/flutter.git -b stable配置环境原创 2021-05-28 17:55:00 · 872 阅读 · 14 评论 -
iOS UIImage等比缩放、转到横屏的图片到垂直模式、重制大小resize
UIImage等比缩放分类方法@implementation UIImage (Cat)// 计算等比缩放图片的size- (CGSize)equalRatioComputeImageWithTargetWidth:(CGFloat)targetWidth targetHeight:(CGFloat)targetHeight { CGFloat originalWidth = self.size.width; CGFloat originalHeight = self.size.h原创 2021-04-14 17:24:35 · 680 阅读 · 0 评论 -
牛客网算法题:给定一个字符串,计算从做到右的字符出现的个数
题目:给定一个字符串,计算出从做到右的字符出现的个数忽略字符计算后个数为1的数字例如原始输入字符串:"aabccccaaa"期望输出: “a2bc4a3”解释:从左到右,a出现了2次,记为a2;b出现了1次,记为b;c出现了4次,记为c4;再a出现了3次,记为a3。结果就是:a2bc4a3以Swift语言实现如下class TestA: NSObject { private var lowerLetters: [String: Int] = ["a":0, "b原创 2020-08-31 11:47:20 · 490 阅读 · 0 评论 -
pod install和pod update的区别(官方解释,通俗易懂)
这是官方文档 英语好的可以自己看,我这里给你总结下pod install就是说,当你在项目中的Podfile配置文件中添加、删除、或者更新版本号时使用,也就是用来安装新Pod,删除pod,或者根据你设置的pod版本号来安装安装完后,会自动生成Podfile.lock文件,该文件记录着Podfile配置的所有Pod的版本信息,依赖库信息,和pod库的checksum(校验码)所以当你下次运行pod install时,已经安装过的pod就不会再次去下载安装,也不会更新已有的pod库。pod updat原创 2020-08-11 12:44:05 · 4619 阅读 · 0 评论 -
iOS卡顿检测方案
方案一:基于RunLoop主线程绝大部分计算或者绘制任务都是以Runloop为单位发生。单次Runloop如果时长超过16ms,就会导致UI体验的卡顿。那如何检测单次Runloop的耗时呢?Runloop的生命周期及运行机制虽然不透明,但苹果提供了一些API去检测部分行为。我们可以通过如下代码监听Runloop每次进入的事件:- (void)setupRunloopObserver{ static dispatch_once_t onceToken; dispatch_once(&a原创 2020-08-06 16:03:09 · 1276 阅读 · 0 评论 -
iOS的文件校验码生成 - ObjC编写
一般我们比较文件的完整性,就是对文件进行哈希计算,通常就是MD5或者SHA256或者SHA1计算,如果生成的结果字符串是一样的,则表明文件没有被篡改比如我们在网络上下载的安装包,下载时都会提示MD5或者SHA1的校验码是多少?有没有想过校验码是如何生成的了?以下就是用Objective-C来对文件计算checksum即校验码是否 服务器端存储的一致,如果是一致的,则表示文件是完整的#import "FileChecksumUtil.h"#import <CommonCrypto/CommonDi原创 2020-08-05 21:30:34 · 356 阅读 · 0 评论 -
iOS的App的崩溃收集和类型解释 ObjC/C/Swift语言都可以拦截
在Unix系统中标准的6种信号:SIGABRT: 表示程序异常终止,英语单词即Signal AbortSIGFPE: 表示浮点数异常错误,英语单词即Signal Floating Point ExceptionSIGILL: 表示无效指令/操作,英语单词即Signal IllegalSIGINT: 表示交互式注意请求发送到了程序引起了中断,英语单词Signal InterruptSIGSEGV: 表示无效的内存访问,英语单词是Segmentation ViolationSIGTERM: 表示终原创 2020-07-08 16:02:11 · 1340 阅读 · 0 评论 -
iOS 操作触感震动 tab点击震动 按钮点击震动
其实很简单,主要是系统提供的几种震动方式主要在这个AudioTool.framework里#import <AudioToolbox/AudioToolbox.h>一般震动AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);普通短震(类似3D Touch的 Peek 反馈 )AudioServicesPlaySyst...原创 2020-04-25 11:35:01 · 4415 阅读 · 0 评论 -
免费的Google翻译API接口
free-google-translateFree Google Translator API 免费的Google翻译,其中的破解思路主要来源于将 https://translate.google.cn 的web访问方式模拟成全部代码的形式来控制api的访问注意事项1.大量的相同IP请求会导致Google翻译接口返回 429 Too many requests建议处理方案:每一个app...原创 2020-04-23 22:17:32 · 47123 阅读 · 14 评论 -
iOS实现左侧滑动菜单
先来一个Demo实现地址:https://github.com/VictorZhang2014/LeftMenuDemo类似滴滴app再来个动画演示下左滑菜单主要实现功能的类文件是BDLeftMenuView.hBDLeftMenuView.m使用方法如果是Objective-C,先导入头文件#import "BDMainNavigationBar.h"如果是Swift和O...原创 2020-04-19 18:52:11 · 2280 阅读 · 0 评论 -
Xcode DeviceSupport iOS 13.4.1 (17E262)
下载地址:https://github.com/filsv/iPhoneOSDeviceSupport各种版本都有重启Xcode就好了原创 2020-04-15 19:41:17 · 6821 阅读 · 1 评论 -
Xcode 11无法成功安装Cocoapods的原因和解决方案: mkmf.rb can't find header files for ruby at xxx
错误信息mkmf.rb can't find header files for ruby at /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/include/ruby.h我主要是新买的macbook pro,安装了XCode 11,然后就遇到这个安装Cocoapods的错误,之前从来没有遇到过后来经...原创 2020-03-04 20:15:26 · 1827 阅读 · 0 评论 -
适配 iOS 13 设置 deviceToken
在 iOS 13 之前的版本使用下面代码可以将获取到的 deviceToken,转为 NSString 类型,并去掉其中的空格和尖括号,作为参数传入 setDeviceToken: 方法中。- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSDat...原创 2019-12-27 21:05:03 · 1420 阅读 · 0 评论 -
RSA例子在iOS/C#中使用
这一篇是我写的RSA的使用详情http://www.googleplus.party/2017/03/31/RSA-Example-in-iOS-C/而且我还封装了一套使用RSA的库在github上,支持Cocoapods在iOShttps://github.com/VictorZhang2014/ZRCryptographyOC原创 2017-04-05 10:19:36 · 691 阅读 · 0 评论 -
微信移动端数据库组件WCDB系列(一)-iOS基础篇
前言==================================WCDB(WeChat DataBase)是微信官方的移动端数据库组件,致力于提供一个高效、易用、完整的移动端存储方案。 它包含三个模块: WCDB-iOS/Mac WCDB-Android 数据库损坏修复工具WCDBRepair 目前正在筹备开源中。背景================================转载 2017-06-19 10:25:04 · 2484 阅读 · 0 评论 -
iOS攻防 - (十一)CydiaSubstrate的介绍
CydiaSubstrate介绍1. 概述CydiaSubstrate是大多数tweaks工程的基础,又MobileHooker,MobileLoader,Safe Mode组成看这篇文章之前,请先看完,并实践本篇内容 http://blog.csdn.net/u013538542/article/details/728111422. MobileHookerMobileHooker经常被用来替换系原创 2017-06-02 20:07:54 · 3786 阅读 · 0 评论 -
iOS攻防 - (一)Reveal 调试别人开发的app,如微信
1.准备工作 越狱手机一台 通过越狱iPhone上的Cydia软件,下载并安装Reveal Loader MacOS和该iPhone同处于一个WiFi环境下2.设备环境越狱的iPhone版本iOS 8.2Reveal 版本 7,下载地址 https://revealapp.com/download/#direct3.使用SSH登录到越狱的手原创 2017-04-27 17:19:50 · 4463 阅读 · 0 评论 -
iOS攻防 - (七)iOS app - 使用Cycript修改微信app
iOS app - 使用Cycript修改微信app1.安装Cycript官网地址:http://www.cycript.org/debs/?C=M;O=D找到如下两个安装包,并下载到MacOS上cycript_0.9.501_iphoneos-arm.deblibffi_1-3.0.10-5_iphoneos-arm.deb然后通过iTools或者iFun原创 2017-05-24 19:59:18 · 4919 阅读 · 2 评论 -
iOS攻防 - (六)iOS应用使用Clutch脱壳
iOS应用使用Clutch脱壳下载地址:https://github.com/KJCracks/Clutch/releases1.将下载下来的Clutch改名为Clutch, 然后通过iTools或者iFunBox把iClutch拖拽到越狱的iPhone,目录为:/usr/bin2.使用ssh登录到越狱的iPhone,cd到/usr/bin目录下,给Clutch原创 2017-05-24 19:18:55 · 5664 阅读 · 0 评论 -
iOS攻防 - (三)iOS应用的代码打包前混淆,不影响源代码
iOS攻防 - (三)iOS应用的代码打包前混淆,不影响源代码出于iOS应用的安全考虑,如:银行类型APP, 金融相关APP, 登录功能,支付功能等;某些时候,我们需要对iOS应用的重要函数或名称进行混淆,因为即使是App Store下载的应用亦可以使用class-dump进行导出应用的所有头文件,这就太不安全了。为了加大程序结构的逆向或破解难度,此文讲解如何对iOS应用的源代码进原创 2017-05-05 16:59:07 · 14771 阅读 · 6 评论 -
iOS 继续播放或暂时其他app的背景音乐
问题:当我们自己开发的应用要使用AVAudioSession时,可能会中断其它应用的音乐播放,例如:QQ音乐,酷我音乐等?解决方案:当我们自己开发的应用播放时,暂停其他应用的播放,当我们的应用播放完毕时,继续其他应用的播放,实现代码如下#import "VLAudioSessionControl.h"#import @implementation VLAudioSes原创 2017-04-05 18:23:17 · 11740 阅读 · 0 评论 -
iOS攻防 - (四)iOS应用防止被GDB附加到进程
GDB/LLDB 动态调试iOS应用LLDB官方文档:https://lldb.llvm.org/tutorial.htmlGDB文档:https://www.cs.cmu.edu/~gilpin/tutorial/准备工作1.越狱iPhone一台2.安装OpenSSH, 在Cydia里搜索并安装,目的是:从MacOS连接到iPhone3.安装adv-cmds, 在Cydia里搜索并安装...原创 2017-05-24 13:36:12 · 2090 阅读 · 0 评论 -
秒懂iOS文件分享
iOS的文件分享可分为两种:1 在你的应用对某个文档如PDF提供可以选择第三方应用的列表来打开该文件功能2 让自己应用有能力出现在别人应用的文件打开选择列表里现在分开介绍这两种功能对于你的应用来说需要如何设置:第一种只需要调用系统的UIDocumentInteractionController就OK了:-(void)openDocumentIn {NSS转载 2017-04-22 18:39:05 · 6139 阅读 · 0 评论 -
UIImageView范围内放大,缩小,移动 -- 官方文档代码
UIImageView范围内放大,缩小,移动 -- 官方文档代码我们都知道,使用UIImagePickerController选择完图片时,设置属性allowsEditing=YES;,那么选中的图片就会跳转到一个新的控制器,在这个控制器里可以在指定的范围内放大、缩小和移动,但是这个界面是CocoaTouch决定的如果我们自己单独新建一个控制器要写这样的代码,直接用UIPi原创 2017-05-04 10:54:23 · 1175 阅读 · 0 评论 -
iOS攻防 - (二)iOS应用敏感逻辑的保护方案
Objective-C 代码容易被 hook,暴露信息太赤裸裸,为了安全,改用 C 来写吧!当然不是全部代码都要 C 来写,我指的是敏感业务逻辑代码。 本文就介绍一种低学习成本的,简易的,Objective-C 逻辑代码重写为 C 代码的办法。也许,程序中存在一个类似这样的类:@interface XXUtil : NSObject + (BOOL)isV转载 2017-05-02 11:07:20 · 899 阅读 · 0 评论 -
iOS攻防 - (十二)LLDB和DebugServer配合使用
iOS攻防 - (十二)LLDB和DebugServer配合使用1.介绍debugserver是运行在iOS上。从它的名字你就能看出,debugserver扮演着一个服务器的角色,可以执行在MAC OS X客户端执行LLDB命令,并把结果反映到终端界面上,通常也成为”remote debugging”远程调试。debugserver默认在iOS系统里是没有的,但是,只要我们用Xcode在iPhone原创 2017-06-03 18:00:25 · 3175 阅读 · 0 评论 -
iOS攻防 - (五)获取AppStore上的应用的所有头文件和源文件并脱壳
概述软件逆向工程指的是推断实现和设计程序的细节,或者分析系统的函数,架构和行为的过程。当我们对某一个软件的特性非常感兴趣的时候,但是又没有访问该源代码的权限时,我们可以尝试使用逆向工程来分析它。虽然可口可乐的配方是非常机密的,但是有一些公司仍然可以克隆它的味道。虽然我们没有访问该项目源代码的权限,但是我们可以通过逆向工程来深挖这些细节。PDF 文档iOS应用逆向工程(英文版)。需要VPN才能打开.原创 2017-04-16 17:24:22 · 5015 阅读 · 0 评论 -
iOS攻防 - (十三)基本工具的使用OpenSSH, iFile, MTerminal和syslogd
iOS攻防 - (十三)基本工具的使用OpenSSH, usbmuxd, iFile, MTerminal和syslogd1. OpenSSHOpenSSH是一个远程安全登录的工具在Cydia里搜索OpenSSH,并安装在MAC OS X终端输入命令,第一次登录SSH,密码是alpine ssh root@192.168.0.1 alpine由于这里有两种用户在iOS系统里,root和m原创 2017-06-03 21:56:13 · 3737 阅读 · 0 评论 -
QQ登录成功后,没有调用- (void)getUserInfoResponse:(APIResponse *)response方法
问题:QQ登录成功后,没有调用- (void)getUserInfoResponse:(APIResponse *)response方法解决方法:在- (void)tencentDidLogin方法里调用[_tencentOAuth getUserInfo];方法,就会自动调用获取用户基本信息的- (void)getUserInfoResponse:(APIResponse原创 2016-03-30 14:28:36 · 2858 阅读 · 1 评论 -
UIApplication(BTGMethodSwizzler) btg_swizzleSendEvent: 崩溃
先描述本人遇到的问题:1.在iPad上,iOS8的系统,点击某个cell,崩溃,崩溃到的位置是 [UIApplication(BTGMethodSwizzler) btg_swizzleSendEvent:] 2.在iOS 9的系统及以上,无崩溃,但是所有的cell都没有事件响应经调研资料显示: [UIApplication(BTGMethodSwizzler) btg_swizz...原创 2018-05-16 21:17:21 · 515 阅读 · 0 评论 -
iOS常用的第三方库
Cocoapods-amimono https://github.com/Ruenzuo/cocoapods-amimono Move all dynamic frameworks symbols into the main executableMLeaksFinder https://github.com/Tencent/MLeaksFinder Find memory leaks原创 2018-02-07 09:50:13 · 386 阅读 · 0 评论 -
Objective和Swift混编 官方解释
Objective和Swift混编 官方解释Apple Official Documentation Explanation重点1.在Objective-C代码里使用Swift,则在Objective-C代码里使用#import "ProductModuleName-Swift.h" 即可2.在Swift代码里使用Objective-C,则在Objective-C的桥接文件原创 2017-12-08 18:13:36 · 683 阅读 · 0 评论 -
Protocol Buffers的入门加实践
目录1.介绍2.下载与安装3.实例说明(Python代码)4.实例说明(Objective-C代码)5.文件.proto的解释1.介绍Protocol Buffer,简单来说,就是一种数据交换格式,就像JSON和XML作用一样,只不过Protocol Buffer是Google开源的一套二进制流网络传输协议,它独立于语言,独立于平台;而且它的性能、速度等非常优越于JSON和XML。goo原创 2017-11-04 20:02:27 · 297 阅读 · 0 评论 -
Autolayout代码编写 - 从入门到放弃
第一种代码如下: UIView *redView = [[UIView alloc] init]; redView.translatesAutoresizingMaskIntoConstraints = NO; redView.backgroundColor = UIColor.redColor; [self.view addSubview:redView]; /原创 2017-11-01 14:56:14 · 674 阅读 · 0 评论 -
iOS日志记录当前文件的堆栈、类名、函数名、行号及文件路径等信息
iOS日志记录当前文件的堆栈、类名、函数名、行号及文件路径等信息 NSArray *array = [NSThread callStackSymbols]; NSLog(@"堆栈信息: %@", array); NSLog(@"当前类名: %@", NSStringFromClass([self class]));原创 2017-10-30 22:12:10 · 1281 阅读 · 0 评论