• 主页
  • 随笔
  • 技术笔记
  • 全部文章
标签 友链 关于我

  • 主页
  • 随笔
  • 技术笔记
  • 全部文章

ios防crash崩溃-YDAvoidCrashKit

阅读数:次 2022-06-12
字数统计: 528字   |   阅读时长≈ 2分

移动APP中关于crash几乎是0容忍的,那么iOS中会有很多引起crash,比如最常见的数组越界,添加空值。如果你想解决大部分可能引起的crash,保持代码的健壮性,又不想修改太多代码,推荐使用YDAvoidCrashKit

一、CocoaPods 安装

1.在 Podfile 中添加 pod ‘YDAvoidCrashKit’。

2.执行 pod install 或 pod update。(如搜索不到,请更新pod仓库pod repo update)。

3.导入’’YDAvoidCrashKit.h’’。

二、使用

之后在AppDelegate的didFinishLaunchingWithOptions方法中的最初始位置添加如下代码,让YDAvoidCrash生效:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    [YDAvoidCrash setAvoidCrashEnableMethodPrefixList:@[@"NS"]];
    [YDAvoidCrash setupBlock:^(NSException *exception, NSString *defaultToDo, BOOL upload) {
            
    }];
    [YDAvoidCrash becomeAllEffectiveWithLogger:YES];
    return YES;
}

三、常见carsh汇总

OB提供的方法并不是健壮的,最常见的,set一个nil or数组越界都会引起crash

NSArray

方法    crash说明 :
- (ObjectType)objectAtIndex:(NSUInteger)index    当index大于数组count的时候引起数组越界
- (NSUInteger)indexOfObject:(ObjectType)anObject    当anObject为nil时carsh

NSMutableArray

方法    crash说明
- (void)addObject:(ObjectType)anObject    当anObject为nil时carsh
- (void)insertObject:(ObjectType)anObject atIndex:(NSUInteger)index    当anObject为nil时carsh,当index>mutArray.count时,会产生越界
- (void)removeObjectAtIndex:(NSUInteger)index    当index>mutArray.count时,会产生越界

NSMutableSet

方法    crash说明
- (void)addObject:(ObjectType)object    当anObject为nil时carsh

NSMutableDictionary

方法    crash说明
- (void)setObject:(ObjectType)anObject forKey:(KeyType)aKey    当anObject为nil时,或key为nil时,都会引起crash

四、YCBStability分类

@interface NSDictionary (YCBStability)

/** 取key对应的字符串 */
- (NSString *)getStringForKey:(id)key;

/** 取key对应的数组 */
- (NSArray *)getArrayForKey:(id)key;

/** 取key对应的字典 */
- (NSDictionary *)getDictinaryForKey:(id)key;

- (int)getIntForKey:(id)key;

- (float)getFloatForKey:(id)key;

- (BOOL)getBoolForKey:(id)key;

@end

五、YCBStability非空判断

@interface YCBNonEmpty : NSObject

/** 判断是否是非空的数组 */
+ (BOOL)isArray:(id)object;

/** 判断是否是非空的集合*/
+ (BOOL)isSet:(id)object;

/** 判断是否是非空的字符串 */
+ (BOOL)isString:(id)text;

/** 判断是否是非空的字典 */
+ (BOOL)isDictionary:(id)object;

@end

总结

release模式虽然规避了Crash,保证了用户体验。但是牺牲了对问题的追踪。未来我希望可以把日志记录到本地,你可以通过项目中已经集成得友盟统计,百度统计,又或者是自己的接口,进行数据上报,追踪问题。

  • 本文作者: Grx
  • 本文链接: https://ruixiaoguo.github.io/Grx.github.io/Grx.github.io/2022/06/12/ios防crash崩溃-YDAvoidCrashKit/
  • 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!
  • OC

扫一扫,分享到微信

cocopods切换当前源
ios防crash崩溃框架-LSSafeProtector
  1. 1. 一、CocoaPods 安装
    1. 1.0.1. 1.在 Podfile 中添加 pod ‘YDAvoidCrashKit’。
    2. 1.0.2. 2.执行 pod install 或 pod update。(如搜索不到,请更新pod仓库pod repo update)。
    3. 1.0.3. 3.导入’’YDAvoidCrashKit.h’’。
  • 2. 二、使用
    1. 2.0.1. 之后在AppDelegate的didFinishLaunchingWithOptions方法中的最初始位置添加如下代码,让YDAvoidCrash生效:
  • 3. 三、常见carsh汇总
    1. 3.1. NSArray
    2. 3.2. NSMutableArray
    3. 3.3. NSMutableSet
    4. 3.4. NSMutableDictionary
  • 4. 四、YCBStability分类
  • 5. 五、YCBStability非空判断
  • 6. 总结
    1. 6.0.1. release模式虽然规避了Crash,保证了用户体验。但是牺牲了对问题的追踪。未来我希望可以把日志记录到本地,你可以通过项目中已经集成得友盟统计,百度统计,又或者是自己的接口,进行数据上报,追踪问题。
  • © 2014-2024 Grx
    GitHub:hexo-theme-yilia-plus by Litten
    本站总访问量次 | 本站访客数人
    • 标签
    • 友链
    • 关于我

    tag:

    • life
    • OC
    • Google
    • Fastlane
    • Flutter
    • hexo
    • 智能家居
    • Apple Watch
    • 逆向
    • Lottie
    • PHP
    • cocos2d
    • Mac
    • MonkeyKing
    • RN
    • Swift
    • RAC
    • WKWebView
    • WebView
    • Xcode
    • xcode
    • ios
    • Android
    • appledoc
    • MMKV
    • LLVM
    • FreamWork






      
      

    • 唐巧的博客
    • 王巍(喵神)OneVsDen
    • 阿里“念纪“
    • 滴滴-戴铭
    • 郭曜源(ibireme)
    • 阿里”南栀倾寒“
    • 蘑菇街李忠
    • 码农人生
    • 玉令天下
    • bang
    • Ian的博客
    这里是Grx的个人博客:
    iOS开发工程师一枚
    联系方式:
    QQ:1217255509
    Email:grx0917@sina.com
    知识管理,时间管理,自我管理,架构即未来
    欢迎技术交流!