- 博客(14)
- 资源 (1)
- 收藏
- 关注
原创 iOS静态库依赖的崩溃
1、崩溃日志#0 Thread SIGSEGV SEGV_ACCERR解析原始0 libobjc.A.dylib objc_opt_self+161 libswiftCore.dylib swift_getInitializedObjCClass+242、现象真机联调,不会崩溃archive release 打包不会崩溃archive debug 打包会崩溃3、原因工程库依赖关系:主工程->静态库A->静态库B。崩溃日志指向的是...
2021-10-10 16:10:18
697
原创 苹果内购(IAP)掉单
出现掉单的场景:其实严格来讲不算是掉单,支付成功后在SKPaymentTransactionObserver的回调函数- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray<SKPaymentTransaction *> *)transactions会返回票据信息。一般情况下,在调用- (void)addPayment:(SKPayment *)payment时,设置了payment的applic
2021-09-25 08:57:16
1203
原创 OC MethodSwizzling的理解
方案一:void swizzleMethod(Class cls, SEL originalSel, SEL swizzleSel) { Method originalMethod = class_getInstanceMethod(cls, originalSel); Method swizzlingMethod = class_getInstanceMethod(cls, swizzleSel); method_exchangeImplementations(origi...
2021-03-11 10:29:35
226
原创 swift学习--OC与swift互调底层实现
1、工具:Hopper Disassembler v42、swift测试类:class MyT1 : NSObject { var i:Int @objc init(i:Int) { self.i = i; } @objc func show(){ MyTestOC.test() }}3、OC测试类:@interface MyTestOC : NSObject+ (void)test;@e...
2021-03-05 17:23:37
324
原创 swift学习--OC引入Swift文件
1、build-setting中设置Defines Module为YES2、系统会自动把swift文件转成OC头文件,放在"工程名-Swift.h"文件中,这个文件在系统的/Users/{用户名}/Library/Developer/Xcode/DerivedData/{工程名-xxxx}/Build/Intermediates.noindex/{工程名}.build/Debug-iphonesimulator/{工程名}.build/DerivedSources目录。上图TestSwift
2021-03-05 16:59:20
1002
原创 iOS KVO原理学习
1、调用对象A的- (void)addObserver:(NSObject *)observer forKeyPath:(NSString *)keyPath options:(NSKeyValueObservingOptions)options context:(nullable void *)context方法2、系统Foundation库在这个方法中通过objc_allocateClassPair方法创建一个继承于A class的子类(objc_allocateClassPair设置了extraB
2021-02-27 18:07:02
97
原创 记录下CPU停止运行的问题
记录下CPU停止运行的问题:iOS相芯SDK做美颜,pod 'Nama-lite', '7.2.0'。测试机iphone-xr, 调用AVCaptureSession采样作为相芯的输入源,sessionPreset参数设置为AVCaptureSessionPresetHigh时。打开Instruments的Core Animation测试CPU的使用情况,刚开始6个核正常运行,两分半钟左右,会有两核变为非活动状态,CPU占用率也由70%左右一下升到130%左右,手机发热厉害。关闭的两个CPU在后
2021-02-27 16:55:09
1041
原创 iOS系统Framework常用的设计模式
iOS系统自带了很多优秀的Framework,为iOS开发提供了很大的便利性。这些优秀的Framework里自然少不了很多优秀的设计思想,下面小结一下常用到的设计模式:1、singleton单例:NSUserDefaults, NSFileManager, NSNotificationCenter等等。这些单例设计可以更好地统一管理资源、处理事件,解决资源共享互斥的问题。2、delegat
2021-02-27 16:41:22
182
原创 遍历mac指定目录下所有Mach-O文件,找出函数符号所在的文件(库冲突用)
遍历mac指定目录下所有Mach-O文件,找出函数符号所在的文件(库冲突用)
2016-11-25 17:49:02
1004
原创 iOS app包可执行文件重复分类查找脚本
nm appExecName | grep \( | awk '{split($3, array, "("); if (dict[array[1]$4]) {print $0} else {dict[array[1]$4] = $0}}'
2016-11-24 19:58:59
1164
原创 软件系统工程
软件系统工程涉及到很多工序:需求收集、需求分析、软件设计、系统开发、测试、发布、维护。这里总结一下在iOS开发环节可以提高生产效率的一些方法:一、系统信息收集1、崩溃信息收集2、接口异常信息收集3、网络异常信息收集4、用户行为信息收集二、自动打包、发布三、集成第三方库
2016-03-12 11:08:17
890
原创 iOS block 小结
iOS block在使用过程中如不小心会出现些问题,如循环引用、崩溃等,下面结合自己的实际使用做一下总结。首先,先看一下llvm实现block的源码(这个很重要):http://clang.llvm.org/docs/Block-ABI-Apple.html#objective-c-extensions-to-blocks其实block就是用c语言实现的一个struct,里面包含了bloc
2016-03-04 22:22:27
358
原创 iOS9.2崩溃:NSTimer(PhotosUI) blockInvoke
场景:iOS9.2调用MessageUI.framework的MFMessageComposeViewController发短信,调起发短信界面几秒后程序崩溃,必现。最后的堆栈为NSTimer(PhotosUI) blockInvoke。在iOS9.0以下的机器上一切正常。解决思路:1、排除系统的bug:新建一个工程,在iOS9.2的机器用同样的代码调起发短信界面,一切正常。初步怀
2016-01-26 22:30:01
1579
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人