zoukankan      html  css  js  c++  java
  • 在某司用到的一些ios东西

    这里做一下技术说明,我本身只做过2个月的ios应用开发!如果有什么不对的地方,欢迎留言批评!

    在游戏开发后期,各种奇葩的sdk都纷纷涌上来,虽然说ios的没有android多,但也很多呀,并且也很多奇葩的要求呀!而重点是游戏代码我们只想维护一份,如果同时维护多份的话。那就真的是要死了!
    下面就说一下一些比较常见的吧!
    在针对不同的工程target,需要复制不同的资源到某个地方的时候!
    选中你所需的工程target!
    进入到Buidl Phases里
     
    点击”+”号后,会有以下提示
     
    如果是资源的话,那么就选第一个,对应的文件就选择对应的类型
     
    路径是由我们写入的,可以自由控制!
    在横版游戏中,如果要接入第三方sdk的时候,如果第三方sdk里面拥有支付宝惑银联的时候,游戏必须选上这么一项
     

    代码逻辑上的检查,虽然不能说完全检查出代码逻辑上的crush,但至少也能检查出大部份,还有一些crush的检查是需要代码上的支持的。如果代码并没有进行一定程度上支持,那么,无论怎么检查还是检查不出来的!所以有些代码必须做好安全!下面我就直接说一下怎么操作吧!
    打开Xcode;
    长按运行键
     
    选中”Profile”然后等待运行结果就可以了!
    运行后的界面大集如下:
     
    当然,基实还有一项的,那就logic error,只不过我在写这份文档的时候,我已经把那些东西全都改了!所以,给不了演示,不过相信你们也可以看得懂,毕竟只有那么一点英文。而且Xcode也很智能地把出现logic error的流程都标出来的,也有英文标示,所以相信你们能知道怎么改!
    在出现问题的时候,我们要灵活地学会怎么去找出问题所在,这样方便我们去修正程序上bug,而修改bug的时候,我们少不了调试!而且在ios上,调试也有两种,(我知道的就两种情况,其它的还没有知道!)第一种就是刚刚从xocde上build到真机上,更有一种就,已经发出debug包了,手持设备上也已经安装,但都出现了问题了!
         针对已经发出debug包这种情况,在我这里,我可以提供两种方法,(1)从手机的log日志里找出crush的日志,直接看日志上的信息!(2)这个就不单是可以查看crush的问题,还可以查看现下出现在bug(不造成crush情况,前提是你的代码尚未有进行大幅度改动!),在xcode的菜单里,依次打开”Debug”—“attach to Process”,然后从列表里找到你的程序,这样子你就可以直接从代码上断点查看!
     
    无论是刚从xcode buid到真机也好,还是已经attach到真机,我们在调试的时候都少不了lldb或gdb,相信现在已经很多人都已经 用上xcode比较新的版本了,那么也应该知道,xcode已经 在慢慢不再使用gdb了,变得只有lldb一种了。怎么说呢,其实我是很喜欢使用lldb的,lldb在功能上也要强上gdb不少,而对于我们使用者来说,lldb也很方便!lldb的使用我会开另一章来说明的!

    对于Xcode里Build Setting下Other Linker Flags这一项有多少人有了解过的?相信如果用过第三方的无论怎么样,都应该有点了解这全东西是干什么的!

    该选项下有Other linker flags的设置,用来填写XCode的链接器参数,如:-ObjC -all_load -force_load等。

    还记得我们在学习C程序的时候,从C代码到可执行文件经历的步骤是:

    源代码 > 预处理器 > 编译器 > 汇编器 > 机器码 > 链接器 > 可执行文件

    在最后一步需要把.o文件和C语言运行库链接起来,这时候需要用到ld命令。源文件经过一系列处理以后,会生成对应的.obj文件,然后一个项目必然会有许多.obj文件,并且这些文件之间会有各种各样的联系,例如函数调用。链接器做的事就是把这些目标文件和所用的一些库链接在一起形成一个完整的可执行文件。

    那么,Other linker flags设置的值实际上就是ld命令执行时后面所加的参数。

    下面逐个介绍3个常用参数:

    -ObjC:加了这个参数后,链接器就会把静态库中所有的Objective-C类和分类都加载到最后的可执行文件中

    -all_load:会让链接器把所有找到的目标文件都加载到可执行文件中,但是千万不要随便使用这个参数!假如你使用了不止一个静态库文件,然后又使用了这个参数,那么你很有可能会遇到ld: duplicate symbol错误,因为不同的库文件里面可能会有相同的目标文件,所以建议在遇到-ObjC失效的情况下使用-force_load参数。

    -force_load:所做的事情跟-all_load其实是一样的,但是-force_load需要指定要进行全部加载的库文件的路径,这样的话,你就只是完全加载了一个库文件,不影响其余库文件的按需加载 

  • 相关阅读:
    C#环境下的钩子详解
    sql2005,sql2000 跨局域网操作 OPENDATASOURCE
    PowerDesigner中生成SQL SERVER2005字段注释的解决方法 .
    C# Excel2007 导出生成 2003兼容格式
    C# 做外挂,常用API
    服务器×××上的MSDTC不可用解决办法
    手工删除软件U8软件
    关于svn hook
    Hudson & Jenkins 文档一篇[转记]
    KVM 网络相关两个配置
  • 原文地址:https://www.cnblogs.com/chiefCTO/p/3899138.html
Copyright © 2011-2022 走看看