2013-12-17 17:50:07 testing2007 阅读数 6287
  • 游戏UI界面框架设计系列视频课程

    本课程总体分为七大部分: 一: UI框架设计理念        整体简单介绍即将带领大家开发的UI框架的功能设计、核心类设计等,让大家有一个整体、大概的了解。 二: 简单版本开发       为了简化框架学习的难度,先带领大家开发一个类似"Hello World" 的简单版本,以期达到学员快速理解、与减轻学习框架核心思想难度的目的。 三: 窗体层级管理        层级管理是UI框架的重点与难点,本章节使用了大量时间,对核心开发理念、与具体实现编码,进行详细的讲解。 四: 模态窗体管理      游戏项目中对于重要信息,经常会出现“弹出窗口”。对于此类UI界面,我们设计了多种(模态)窗体的属性,以**限度灵活的适用于不同游戏项目(包括VR/AR)的开发需求 五: 日志调试与配置管理     游戏项目开发经常会遇到PC端运行良好,发布移动端(IOS/Android/平板等)出现崩溃、死机、数值与预期不同的调试难题。本章节从高级日志的开发讲解到基于Json 的配置管理的应用。使得学员学会对于经常需要改变数值(或者改变需求),使用基于“低耦合”思想,配合“配置管理”的思想来应对灵活多变的需求开发。 六: 消息传递中心       Unity游戏项目中存在多种数值(消息)的传递方式,但是大多数的消息传递方式,耦合性太高造成项目模块的“复用性”降低。本章节讲解采用“消息中心”的思想,开发类似“发邮件”、“收邮件”的机制,来彻底杜绝脚本之间(游戏对象、UI窗体之间)强耦合现象。 七: 资源国际化技术      目前国内大多数中大型游戏(VR/AR)公司,都要进行全球发布与营销,如何解决游戏项目中资源的国际化问题,对于开发人员尤其重要。通过本章节学习,结合笔者经验给出基于Json 可配置原理的解决方案。       温馨提示: 进一步详细了解本课程大纲学员,请务必围观课程的第1节“总体介绍”,谢谢大家! 课程温馨提示:       说明1:  本课程《UI界面框架设计》开发环境如下:                Win8.1(Win10)+Unity5.5.1版本+VS2012+UnityVS(支持5.x的版本)插件+Resharp8.0插件。 一、热更新系列(技术含量:中高级): A:《lua热更新技术中级篇》 https://edu.csdn.net/course/detail/27087 B:《热更新框架设计之Xlua基础视频课程》 https://edu.csdn.net/course/detail/27110 C:《热更新框架设计之热更流程与热补丁技术》 https://edu.csdn.net/course/detail/27118 D:《热更新框架设计之客户端热更框架(上)》 https://edu.csdn.net/course/detail/27132 E:《热更新框架设计之客户端热更框架(中)》 https://edu.csdn.net/course/detail/27135 F:《热更新框架设计之客户端热更框架(下)》 https://edu.csdn.net/course/detail/27136 二:框架设计系列(技术含量:中级):  A:《游戏UI界面框架设计系列视频课程》 https://edu.csdn.net/course/detail/27142 B:《Unity客户端框架设计PureMVC篇视频课程(上)》 https://edu.csdn.net/course/detail/27172 C:《Unity客户端框架设计PureMVC篇视频课程(下)》 https://edu.csdn.net/course/detail/27173 D:《AssetBundle框架设计_框架篇视频课程》 https://edu.csdn.net/course/detail/27169 三、Unity脚本从入门到精通(技术含量:初级) A:《C# For Unity系列之入门篇》 https://edu.csdn.net/course/detail/4560 B:《C# For Unity系列之基础篇》 https://edu.csdn.net/course/detail/4595 C: 《C# For Unity系列之中级篇》 https://edu.csdn.net/course/detail/24422 D:《C# For Unity系列之进阶篇》 https://edu.csdn.net/course/detail/24465 四、虚拟现实(VR)与增强现实(AR):(技术含量:初级) A:《虚拟现实之汽车仿真模拟系统 》 https://edu.csdn.net/course/detail/26618 五、Unity基础课程系列(技术含量:初级)  A:《台球游戏与FlappyBirds—Unity快速入门系列视频课程(第1部)》   https://edu.csdn.net/course/detail/24643 B:《太空射击与移动端发布技术-Unity快速入门系列视频课程(第2部)》 https://edu.csdn.net/course/detail/24645  C:《Unity ECS(二) 小试牛刀》 https://edu.csdn.net/course/detail/27096 六、Unity ARPG课程(技术含量:初中级): A:《MMOARPG地下守护神_单机版实战视频课程(上部)》 https://edu.csdn.net/course/detail/24965 B:《MMOARPG地下守护神_单机版实战视频课程(中部)》 https://edu.csdn.net/course/detail/24968 C:《MMOARPG地下守护神_单机版实战视频课程(下部)》 https://edu.csdn.net/course/detail/24979

    652 人正在学习 去看看 刘国柱

随着项目的开发进行,对于ios程序崩溃及解决方法有一定的认识,现总结如下:

1:@selector提供的选择器未定义,运行时造成程序崩溃。

2:程序中父类对象已销毁,但后续操作还在使用其子对象。

3:多次release,造成对象引用技术为负数, 然后后续还使用。

4:在程序的声明处指定使用assign属性,然而在dealloc的时候却对其进行release。


对于崩溃问题可以尝试使用 Project->Profile, 连上真机,选择Devices, 然后弹出的instruments-》Zombie. 运行程序,直到程序崩溃。

这时候工具就会捕获到崩溃代码同时提供引用基数产生及释放的全部过程。


如果你是通过xCode来查看崩溃的位置,有时候会不正确。这个要多加注意。


2019-06-03 22:44:31 qiuxuewei2012 阅读数 1287
  • 游戏UI界面框架设计系列视频课程

    本课程总体分为七大部分: 一: UI框架设计理念        整体简单介绍即将带领大家开发的UI框架的功能设计、核心类设计等,让大家有一个整体、大概的了解。 二: 简单版本开发       为了简化框架学习的难度,先带领大家开发一个类似"Hello World" 的简单版本,以期达到学员快速理解、与减轻学习框架核心思想难度的目的。 三: 窗体层级管理        层级管理是UI框架的重点与难点,本章节使用了大量时间,对核心开发理念、与具体实现编码,进行详细的讲解。 四: 模态窗体管理      游戏项目中对于重要信息,经常会出现“弹出窗口”。对于此类UI界面,我们设计了多种(模态)窗体的属性,以**限度灵活的适用于不同游戏项目(包括VR/AR)的开发需求 五: 日志调试与配置管理     游戏项目开发经常会遇到PC端运行良好,发布移动端(IOS/Android/平板等)出现崩溃、死机、数值与预期不同的调试难题。本章节从高级日志的开发讲解到基于Json 的配置管理的应用。使得学员学会对于经常需要改变数值(或者改变需求),使用基于“低耦合”思想,配合“配置管理”的思想来应对灵活多变的需求开发。 六: 消息传递中心       Unity游戏项目中存在多种数值(消息)的传递方式,但是大多数的消息传递方式,耦合性太高造成项目模块的“复用性”降低。本章节讲解采用“消息中心”的思想,开发类似“发邮件”、“收邮件”的机制,来彻底杜绝脚本之间(游戏对象、UI窗体之间)强耦合现象。 七: 资源国际化技术      目前国内大多数中大型游戏(VR/AR)公司,都要进行全球发布与营销,如何解决游戏项目中资源的国际化问题,对于开发人员尤其重要。通过本章节学习,结合笔者经验给出基于Json 可配置原理的解决方案。       温馨提示: 进一步详细了解本课程大纲学员,请务必围观课程的第1节“总体介绍”,谢谢大家! 课程温馨提示:       说明1:  本课程《UI界面框架设计》开发环境如下:                Win8.1(Win10)+Unity5.5.1版本+VS2012+UnityVS(支持5.x的版本)插件+Resharp8.0插件。 一、热更新系列(技术含量:中高级): A:《lua热更新技术中级篇》 https://edu.csdn.net/course/detail/27087 B:《热更新框架设计之Xlua基础视频课程》 https://edu.csdn.net/course/detail/27110 C:《热更新框架设计之热更流程与热补丁技术》 https://edu.csdn.net/course/detail/27118 D:《热更新框架设计之客户端热更框架(上)》 https://edu.csdn.net/course/detail/27132 E:《热更新框架设计之客户端热更框架(中)》 https://edu.csdn.net/course/detail/27135 F:《热更新框架设计之客户端热更框架(下)》 https://edu.csdn.net/course/detail/27136 二:框架设计系列(技术含量:中级):  A:《游戏UI界面框架设计系列视频课程》 https://edu.csdn.net/course/detail/27142 B:《Unity客户端框架设计PureMVC篇视频课程(上)》 https://edu.csdn.net/course/detail/27172 C:《Unity客户端框架设计PureMVC篇视频课程(下)》 https://edu.csdn.net/course/detail/27173 D:《AssetBundle框架设计_框架篇视频课程》 https://edu.csdn.net/course/detail/27169 三、Unity脚本从入门到精通(技术含量:初级) A:《C# For Unity系列之入门篇》 https://edu.csdn.net/course/detail/4560 B:《C# For Unity系列之基础篇》 https://edu.csdn.net/course/detail/4595 C: 《C# For Unity系列之中级篇》 https://edu.csdn.net/course/detail/24422 D:《C# For Unity系列之进阶篇》 https://edu.csdn.net/course/detail/24465 四、虚拟现实(VR)与增强现实(AR):(技术含量:初级) A:《虚拟现实之汽车仿真模拟系统 》 https://edu.csdn.net/course/detail/26618 五、Unity基础课程系列(技术含量:初级)  A:《台球游戏与FlappyBirds—Unity快速入门系列视频课程(第1部)》   https://edu.csdn.net/course/detail/24643 B:《太空射击与移动端发布技术-Unity快速入门系列视频课程(第2部)》 https://edu.csdn.net/course/detail/24645  C:《Unity ECS(二) 小试牛刀》 https://edu.csdn.net/course/detail/27096 六、Unity ARPG课程(技术含量:初中级): A:《MMOARPG地下守护神_单机版实战视频课程(上部)》 https://edu.csdn.net/course/detail/24965 B:《MMOARPG地下守护神_单机版实战视频课程(中部)》 https://edu.csdn.net/course/detail/24968 C:《MMOARPG地下守护神_单机版实战视频课程(下部)》 https://edu.csdn.net/course/detail/24979

    652 人正在学习 去看看 刘国柱

iOS进阶 - iOS如何监控崩溃

几种常见的崩溃

  • 数组越界;给数组添加 nil;
  • 多线程问题: 在子线程更新UI, 不同线程操作同一个数据。
  • 主线程无响应:主线程超过系统规定时间无响应就会被 Watchdog 杀掉。
  • 野指针:指针指向一个已删除的内存区域会出现野指针崩溃。
  • KVO 问题
  • 后台任务超时

iOS 后台保活的五种方式

1. Background Mode

App 审核时会提高对 App 的要求。通常情况下只有那些 地图、音乐播放、VoIP类的App 才能通过审核

2. Background Fetch

唤醒时间不稳定,而且用户可以在系统设置关闭这种方式,导致它的使用场景很少

3. Silent Push

推送的一种,会在后台唤起 App 30秒。它的优先级很低,会调用 application:didReceiveRemoteNotifiacation:fetchCompletionHandler: 这个 Delegate, 和普通的 remote push notification 推送调用的 delegate 是一样的

4. PushKit

后台唤醒 App 后能够保活 30 秒。主要用于提升 VoIP 应用的体验

5. Background Task 方式

是使用最多的,App 退后台后,默认都会使用这种方式

通常,程序在退到后台以后,只有几秒钟的时间可以执行代码,接下来就会被系统挂起。进程挂起后所有线程都会暂停,不管这个线程是文件读写还是内存读写都会被暂停,但是,数据读写过程无法暂停只能被中断,中断时数据读写异常而且容易损坏文件,所以系统会选择主动杀掉 App 进程。

而 Background Task 方式就是系统提供了 beginBackgroundTaskWithExpirationHandler 方法来延长后台执行时间,可以解决退后台还需要一段时间处理一些任务的诉求。

Background Task 方式的使用方法,如下代码所示:

- (void)applicationDidEnterBackground:(UIApplication *)application {
    self.backgroundTaskIdentifier = [application beginBackgroundTaskWithExpirationHandler:^(void) {
        [self yourTask];
    }];
}

这段代码中,yourTask 任务最多执行 3 分钟,3 分钟内 yourTask 运行完成,你的App就会挂起。如果3分钟内没有执行完成的话,系统会强制杀掉进程,从而造成崩溃,这就是为什么 App 退后台容易出现崩溃的原因。

如何避免后台崩溃

App 退后台后,如果执行时间过长就会导致被系统杀掉,那么我们就不能让程序进入后台后执行复杂的任务。如严格控制后台数据的读写操作。在需要处理数据时先判断其大小,如果数据过大可以考虑程序下次启动或后台唤醒时再进行处理。

分析并解决崩溃问题

采集到的崩溃日志主要包括:

  • 进程信息:崩溃进城相关信息,比如崩溃报告唯一标示符、唯一键值、设备标识;
  • 基本信息:崩溃发生的日期,iOS版本
  • 异常信息:异常类型,异常编码,异常的线程;
  • 线程回溯:崩溃时的方法调用栈

通常情况下,我们分析崩溃日志时最先看的是异常信息,分析出问题的是哪个线程,在线程回溯
里找到那个线程;然后,分析方法调用栈,符号化后的方法调用栈可以完整地看到方法调用的过
程,从而知道问题发生在哪个方法的调用上。

方法调用栈顶,就是最后导致崩溃的方法的调用。完整的崩溃日志里,除了线程方法调用栈还有异常编码,就在异常信息里。在 完整的异常编码 里可以看到44种异常编码。常见的三种如下:

  • 0x8badf00d,表示 App 在一定时间内无响应而被 watchdog 杀掉的情况。
  • 0xdeadfa11,表示 App 被用户强制退出。
  • 0xc00010ff,表示 App 因为运行造成设备温度太高而被杀掉。
2015-06-02 14:51:02 majiakun1 阅读数 525
  • 游戏UI界面框架设计系列视频课程

    本课程总体分为七大部分: 一: UI框架设计理念        整体简单介绍即将带领大家开发的UI框架的功能设计、核心类设计等,让大家有一个整体、大概的了解。 二: 简单版本开发       为了简化框架学习的难度,先带领大家开发一个类似"Hello World" 的简单版本,以期达到学员快速理解、与减轻学习框架核心思想难度的目的。 三: 窗体层级管理        层级管理是UI框架的重点与难点,本章节使用了大量时间,对核心开发理念、与具体实现编码,进行详细的讲解。 四: 模态窗体管理      游戏项目中对于重要信息,经常会出现“弹出窗口”。对于此类UI界面,我们设计了多种(模态)窗体的属性,以**限度灵活的适用于不同游戏项目(包括VR/AR)的开发需求 五: 日志调试与配置管理     游戏项目开发经常会遇到PC端运行良好,发布移动端(IOS/Android/平板等)出现崩溃、死机、数值与预期不同的调试难题。本章节从高级日志的开发讲解到基于Json 的配置管理的应用。使得学员学会对于经常需要改变数值(或者改变需求),使用基于“低耦合”思想,配合“配置管理”的思想来应对灵活多变的需求开发。 六: 消息传递中心       Unity游戏项目中存在多种数值(消息)的传递方式,但是大多数的消息传递方式,耦合性太高造成项目模块的“复用性”降低。本章节讲解采用“消息中心”的思想,开发类似“发邮件”、“收邮件”的机制,来彻底杜绝脚本之间(游戏对象、UI窗体之间)强耦合现象。 七: 资源国际化技术      目前国内大多数中大型游戏(VR/AR)公司,都要进行全球发布与营销,如何解决游戏项目中资源的国际化问题,对于开发人员尤其重要。通过本章节学习,结合笔者经验给出基于Json 可配置原理的解决方案。       温馨提示: 进一步详细了解本课程大纲学员,请务必围观课程的第1节“总体介绍”,谢谢大家! 课程温馨提示:       说明1:  本课程《UI界面框架设计》开发环境如下:                Win8.1(Win10)+Unity5.5.1版本+VS2012+UnityVS(支持5.x的版本)插件+Resharp8.0插件。 一、热更新系列(技术含量:中高级): A:《lua热更新技术中级篇》 https://edu.csdn.net/course/detail/27087 B:《热更新框架设计之Xlua基础视频课程》 https://edu.csdn.net/course/detail/27110 C:《热更新框架设计之热更流程与热补丁技术》 https://edu.csdn.net/course/detail/27118 D:《热更新框架设计之客户端热更框架(上)》 https://edu.csdn.net/course/detail/27132 E:《热更新框架设计之客户端热更框架(中)》 https://edu.csdn.net/course/detail/27135 F:《热更新框架设计之客户端热更框架(下)》 https://edu.csdn.net/course/detail/27136 二:框架设计系列(技术含量:中级):  A:《游戏UI界面框架设计系列视频课程》 https://edu.csdn.net/course/detail/27142 B:《Unity客户端框架设计PureMVC篇视频课程(上)》 https://edu.csdn.net/course/detail/27172 C:《Unity客户端框架设计PureMVC篇视频课程(下)》 https://edu.csdn.net/course/detail/27173 D:《AssetBundle框架设计_框架篇视频课程》 https://edu.csdn.net/course/detail/27169 三、Unity脚本从入门到精通(技术含量:初级) A:《C# For Unity系列之入门篇》 https://edu.csdn.net/course/detail/4560 B:《C# For Unity系列之基础篇》 https://edu.csdn.net/course/detail/4595 C: 《C# For Unity系列之中级篇》 https://edu.csdn.net/course/detail/24422 D:《C# For Unity系列之进阶篇》 https://edu.csdn.net/course/detail/24465 四、虚拟现实(VR)与增强现实(AR):(技术含量:初级) A:《虚拟现实之汽车仿真模拟系统 》 https://edu.csdn.net/course/detail/26618 五、Unity基础课程系列(技术含量:初级)  A:《台球游戏与FlappyBirds—Unity快速入门系列视频课程(第1部)》   https://edu.csdn.net/course/detail/24643 B:《太空射击与移动端发布技术-Unity快速入门系列视频课程(第2部)》 https://edu.csdn.net/course/detail/24645  C:《Unity ECS(二) 小试牛刀》 https://edu.csdn.net/course/detail/27096 六、Unity ARPG课程(技术含量:初中级): A:《MMOARPG地下守护神_单机版实战视频课程(上部)》 https://edu.csdn.net/course/detail/24965 B:《MMOARPG地下守护神_单机版实战视频课程(中部)》 https://edu.csdn.net/course/detail/24968 C:《MMOARPG地下守护神_单机版实战视频课程(下部)》 https://edu.csdn.net/course/detail/24979

    652 人正在学习 去看看 刘国柱


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    // Override point for customization after application launch.

    

    NSSetUncaughtExceptionHandler (&UncaughtExceptionHandler);

    

    return YES;

}


void UncaughtExceptionHandler(NSException *exception) {

    NSArray *arr = [exception callStackSymbols];//得到当前调用栈信息

    NSString *reason = [exception reason];//非常重要,就是崩溃的原因

    NSString *name = [exception name];//异常类型

    

    NSLog(@"------exception type : %@ \n crash reason : %@ \n call stack info : %@", name, reason, arr);

}

ios11崩溃

阅读数 1144

iOS崩溃日志收集

阅读数 411

iOS10 相机相册崩溃问题

博文 来自: macro_sn
没有更多推荐了,返回首页