avatar
文章
189
标签
15
分类
0
首页
归档
标签
分类
关于
今是昨非的博客
首页
归档
标签
分类
关于

今是昨非的博客

iOS mach-o文件分析多余的类和方法
发表于2021-05-12
mach-o文件分析多余的类和方法.md背景最近做包大小优化,在做项目代码优化时,其中有一个过程是分析Mach-O文件,看网上很多文章都说通过otool分析Mach-O,获取__objc_classrefs、__objc_classlist等,然后找出无用类和无用方法。 比如:无用类通过 otool 逆向Mach-O文件 __DATA.__objc_classlist段和__DATA.__objc_classrefs 段获取所有 OC 类和被引用的类,两个集合差值为无用类集合,结合 nm -nm 得到地址和对应类名符号化无用类类名来自干货!京东商城iOS App瘦身实践 又或者结合LinkMap文件的__TEXT.__text,通过正则表达式([+|-][.+\s(.+)]),我们可以提取当前可执行文件里所有objc类方法和实例方法(SelectorsAll)。再使用otool命令otool -v -s __DATA __objc_selrefs逆向__DATA.__objc_selrefs段,提取可执行文件里引用到的方法名(UsedSelectorsAll),我们可以大致分...
iOS APP添加桌面快捷方式
发表于2021-05-06
iOS APP添加桌面快捷方式背景新接到一个需求,需要APP内的某些功能,能够把入口添加到桌面,点击桌面到入口可以直接跳转APP对应界面(类似于下面这张示例图),于是就做了一番调研。 其实很多APP目前都已经实现了类似的功能,比如支付宝、云闪付等等,其中的每一个独立功能都可以单独添加到桌面,所以网上有很多实现的方法,笔者做的是整理和试错。 实现首先,添加到桌面功能的操作流程是: 客户端打开APP -> 进入到对应到APP功能模块 -> 点击添加快捷方式到桌面按钮 -> 跳转浏览器,并加载引导页面,点击分享,选择添加到主屏幕 -> 从主屏幕点击刚刚添加到快捷功能,跳转到APP的对应界面。 根据笔者了解到的信息,目前实现这种功能,大致可以分为两种实现方式: 方法一:H5提供网页,每个不同的功能提供不同的网页,服务端返回这些网页的URL,客户端配置打开URL Scheme,然后使用Safari直接加载URL,加载的网页中根据进入方式的不同,自动重定向打开APP的URL Scheme。 方法二:H5提供通用的网页,客户端替换通用网页中的内容,比如...
iOS 删除新创建项目中的SceneDelegate
发表于2021-04-21
iOS 删除新创建项目中的SceneDelegate背景Xcode 11之后新建工程,默认为有SceneDelegate,但是SceneDelegate是从iOS 13之后才有的,如果最低兼容版本到iOS 13以下,需要怎么做呢? 过程首先来看一下,SceneDelegate是什么,为什么会有SceneDelegate 官方说明: A UISceneSession object manages a unique runtime instance of your scene. When the user adds a new scene to your app, or when you request one programmatically, the system creates a session object to track that scene. The session contains a unique identifier and the configuration details of the scene. UIKit maintains the sessio...
iOS 自动打包
发表于2021-04-19
iOS 自动打包使用FastLane打包安装 fastlane 通过HomeBrew安装 brew install fastlane 通过Bundler安装 安装 bundler 然后在项目根目录下创建./Gemfile文件,编辑内容 1234// 安装 bundler$ gem install bundler 12345//然后在项目根目录下创建./Gemfile文件,编辑内容source "https://rubygems.org"gem "fastlane" 编辑Gemfile文件: 123456source "https://rubygems.org"gem "fastlane", "2.180.1"# 如果使用Cocoapods,需要添加下面这行gem "cocoapods" 通过ruby gems安装 1sudo gem install fastlane fastlane安装成功后,安装两个插件,用于版本号管理和打包成功...
RN布局
发表于2020-09-21
RN布局背景今年以来,公司新来的总监力推ReactNative,目标是做大前端,H5选用React,客户端用ReactNative,所以我要再“复习”一下网页布局。顺便把内容记录到自己的博客中,用宝儿姐的话来说:“机智的一bi”。 内容Flex布局:Flex是Flexible Box的缩写。设为Flex布局之后,子元素的float、clear、和verti-align属性将失效。 容器属性: 经常设置在容器上的属性有: 123456flexDirection // 主轴的排列方向flexWrap // 沿主轴排不下的时候,如何换行justifyContent // 项目在主轴上的排列方式alignItems // 项目在交叉轴上的排列方式alignContent // 多根轴线的对齐方式。如果只有一根轴线,该属性不起作用alignSelf // 允许单个项目有与其他项目不一样的对齐方式,可覆盖alignItems属性 每个属性的可设置的值如下: 123456flexDirection: 'colu...
iOS NSTimer不走的问题
发表于2020-08-19
iOS NSTimer不走的问题背景这个版本上线后,突然发现埋点数据直线下降,调试后发现是定时器上传的方法没有走,但是定时器的方法本期并没有修改过。代码如下 123456- (BOOL)initTimer() { self.uploadTimer = [NSTimer scheduledTimerWithTimeInterval:timerInterval target:self selector:@selector(handleUpload) userInfo:nil repeats:YES]; [[NSRunLoop currentRunLoop] addTimer:self.uploadTimer forMode:NSRunLoopCommonModes];} 排查这个handleUpload方法,怎么都不会走,但是在之前的版本中就是好的,排查了之后发现,是外层调用的地方加了一层异步。即调用的地方变成了 12345dispatch_async(dispatch_get_global_queue(0, 0), ^{ i...
iOS beta4崩溃修改
发表于2020-08-10
iOS beta4崩溃修改前言升级iOSBeta4后,有用户反馈使用我们APP时会崩溃,有登录的、查看详情的,都会出现崩溃。我们查看Bugly数据也发现崩溃率上升了0.02%,直接超出了指定的崩溃指标。虽然是由于升级beta版系统导致的,但还是要排查出具体原因,然后尽快适配。所以我说一下我发现的哪个API导致的,供大家参考一下。 排查由于崩溃是必现的,所以排查起来很容易,找一台升级了iOS14 beta4的手机,然后复现步骤,看具体崩溃的地方,即可我们APP是由于使用了SexyJson这个库,其中SexyJsonProtocol这个类第67行中sexyToValue()的方法里使用AnyRandomAccessCollection这个地方有强制解包属性,在之前的系统版本中,这个地方返回的值不为空,所以没有问题,但是在这个版本里,这个属性返回为空了,就导致了新系统中的崩溃。 如图所示位置: 修改由于是强制解包导致的,所以直接的修改就是,把这个地方的强制解包,改为if let的格式,修改后,运行,binggo,崩溃确实没了。但是在验证过程中,由于我们使用这个是把请求的对象转为参数...
iOS14适配一查找哪些SDK使用剪切板
发表于2020-07-12
iOS14适配一查找哪些SDK使用剪切板背景iOS14公测版发出之后,我们app出现了从后台唤起会弹出 读取剪切板的 提示,安全要求要赶紧查,全局搜索了我们APP,发现并没有读取剪切板的代码,比窦娥还冤,只能是第三方SDK的问题了,但是项目里集成了十几个第三方SDK,一个个排查删除,万一两个SDK都有,这个排列组合可能性就太多了。 脑壳疼了好几天,求助万能的V友和群友,然后找到了好的办法 步骤1: 用Xcode的Symbolic breakpoint,调试[UIPasteboard generalPasteboard],按照重现步骤,例如,我们APP是从后台唤起来会有这个提示,就打断点,然后走这个流程。 步骤2: 断点会停在调用到这个方法的地方,然后上下查看,如果还不能确认是哪个SDK的话,就单步向下走几步,然后就会出现调用方 步骤3:具体调用的类已经暴露了之后,怎么确定这是哪个SDK的呢?在工程目录中使用命令(来自群友的帮助):12find . -type f | grep -e ".framework" | xargs grep -s...
iOS 13 适配
发表于2019-10-07
iOS 13 适配转自iOS 13采坑记录iOS 13适配总结 UIViewController Present出来的样式修改 iOS 13默认的modalPresentationStyle是UIModalPresentationAutomatic,可能不符合我们的要求,改回之前的模式要用UIModalPresentationFullScreen. 新写一个UIViewController的Category,改变modalPresentationStyle的返回结果 1234567@implementation UIViewController(Category)- (UIModalPresentationStyle)modalPresentationStyle { return UIModalPresentationFullScreen; }@end “NSGenericException” -reason: “Accress to UITextField’s _placeholderLabel ivar is prohibited....
ProtocolBuf Swift 使用
发表于2019-10-06
ProtocolBuf Swift 使用环境搭建Mac安装swift-protobuf 1brew install swift-protobuf 使用Podfile集成Xcode再Podfile里添加 1pod 'SwiftProtobuf' 然后在此目录下打开terminal运行 1Pod install 使用新建BookInfo.proto 1234567syntax = "proto3";message BookInfo { int64 id = 1; string title = 2; string author = 3;} 在此文件同目录下执行下面命令,生成.swift文件 1protoc --swift_out=. BookInfo.proto 将.swift文件拖入工程,编译一下,使用 123456789101112131415161718192021// Create a BookInfo object and populate it:var info = BookInfo()i...
1…141516…19
avatar
今是昨非
技术分享、生活感悟
文章
189
标签
15
分类
0
Follow Me
公告
This is my Blog
最新文章
Google Antigravity 登录不了解决2026-01-22
连夜开发了一个 Mac 上久坐提醒工具2026-01-21
关于 AI 与开发2026-01-20
制作自己表情包2026-01-16
鸿蒙截图生成工具2025-10-13
标签
技术 随笔 算法 learning Algorithem iOS ideas iOS蓝牙 iOS自动打包 Flutter 分享 ReactNative 生活 movies books
归档
  • 一月 2026 4
  • 十月 2025 1
  • 九月 2025 4
  • 八月 2025 3
  • 十二月 2024 1
  • 十一月 2024 2
  • 八月 2024 2
  • 七月 2024 3
网站信息
文章数目 :
189
本站访客数 :
本站总浏览量 :
最后更新时间 :
© 2026 By 今是昨非框架 Hexo 5.4.0|主题 Butterfly 5.5.3
日出江花红胜火,春来江水绿如蓝,能不忆江南