• 好多余先生丶 置顶
    2019-03-14
    完了,上来就懵逼

    作者回复: 可以从作业入手,学习不能着急,需要慢慢来,多重复就会有更多体会

     1
     97
  • Neo 置顶
    2019-03-14
    不错 提纲挈领 希望汇编那块能稍微细讲一下 没有太多写汇编的经验

    作者回复: 汇编语言入门可以看阮一峰老师的《汇编语言入门教程》啊。链接是 http://www.ruanyifeng.com/blog/2018/01/assembly-language-primer.html 。以后可以考虑写个 iOS 视角的

    
     18
  • Glenn•D 置顶
    2019-03-15
    模拟器上试了一下耗时检查没有效果

    作者回复: 需要真机,arm64芯片,模拟器是 x86

    
     1
  • 大冯宇宙
    2019-03-14
    学到了,启动时间搞的太短,领导说加个sleep,别人都看不到我们的欢迎页了
     6
     113
  • 彭序猿
    2019-03-14
    一来就王炸😳
    
     87
  • 城北姜公
    2019-03-14
    我的手是咋回事,看到汇编就直接滑下来看评论了
     1
     31
  • 西京富贵兔
    2019-03-14
    看完这篇我膨胀了,我都敢去点 objc_msgSend 源码文件了,嗯,不出意料,一句没看懂。。。

    作者回复: 哈哈

    
     22
  • Calabash_Boy
    2019-03-16
    才疏学浅,一上来就要重新再看Hook,dylb,寄存器与汇编的相关知识,戴铭老师的起点很高,有些跟不上,只能自己慢慢补了.
    如果有的小伙伴跟我一样感觉有难度,可以先看这篇文章http://www.zoomfeng.com/blog/launch-time.html了解下基础概念.
    
     21
  • 星空
    2019-03-14
    友情提示:想要尝试SMCallTrace的朋友,需要在SMCallTrace.m中打开第54行的注释。

    作者回复: 赞

    
     21
  • Master
    2019-03-15
    看完文章,再看作业,感觉就是老师告诉我们 1 + 1 = 2,然后让我们求太阳的质量。
    
     17
  • 哈
    2019-03-14
    说swift没有main函数那位,其实swift是有main函数的,只不过苹果把它精简成了一个@NSApplicationMain了而已,不信去你的AppDelegate.swift最上面看!

    作者回复: 赞

    
     15
  • 冰风落叶
    2019-04-04
    大佬们 这是我的写的总结和课后作业 不知道写的对不对 恳请各位大佬指正
    总结:https://www.jianshu.com/p/f26c4f16692a
    课后作业:https://github.com/308823810/BSMonitorTimeTool

    作者回复: 赞

    
     12
  • Justin
    2019-03-15
    戴老师:多个动态库进行合并,具体怎么合并了,没弄过动态库合并该功能

    作者回复: https://blog.automatic.com/how-we-cut-our-ios-apps-launch-time-in-half-with-this-one-cool-trick-7aca2011e2ea 了解下

    
     12
  • 欧锦滔
    2019-03-14
    这个方法耗时计算的工具很赞,白天要花点时间实践一下才行。

    有个让我疑惑的地方是关于“热启动”的概念,我再去看了下 WWDC 上的说法,里面提到热启动应该也包括“启动后退出 App 再启动”这种情况,不知道我下面这段话的理解是否正确:

    “And a warm launch is an app where the application is already in memory, either because it's been launched and quit previously, and it's still sitting in the discache in the kernel, or because you just copied it over.”
    - https://developer.apple.com/videos/play/wwdc2016-406/?time=1484

    展开

    作者回复: 官方的解释很全面,情况都说清楚了

     1
     12
  • 一代真龙
    2019-03-14
    你在往上看几层,所有的oc方法都是通过msg_send作为统一入口,你所谓的函数指针在调用IMP在msg_send后面步骤。作为程序员没看懂内容就出来唧唧歪歪,这样路走不长。
     1
     10
  • 唯她命
    2019-03-14
    hook 了 objc_msgSend 方法,就可以 hook oc全部方法,这句话我不赞成,看objc源码,你会发现有的oc方法直接通过函数指针调用的,这时候hook 了 objc_msgSend 方法,是没有用的

    作者回复: 函数指针调用可以用 ffi_call

    
     8
  • 嗨
    2019-03-14
    只有C和OC基础,学起来很吃力

    作者回复: 想要一个东西就去买,喜欢一个人就去追,哪怕最后那个东西没有用,那个人没有跟你在一起,都没有关系,人生苦短,要知道遗憾要比失败可怕的多。

     1
     8
  • 长方体混凝土移动工程...
    2019-05-09
    这是我学习专栏总结的资料,对objc_msgSend hook的学习过程有一个记录
    提供了一个可运行调度的Demo,并有详细的注释
    https://github.com/czqasngit/objc_msgSend_hook
     1
     7
  • Ke哀
    2019-03-14
    今天看到大佬的课程,发现说的hook objc_msgSend的汇编部分,但是发现在教程中的部分和之前大神17年博客部分是一样的,都是InspectiveC/InspectiveCarm64.mm的汇编代码。然后跑去大神的github找到开源项目已阅,拿出里边hook objc_msgSend的汇编实现,然后有些部分不太理解。希望大神可以解答一下(这些是已阅里边拿出来的汇编)
    1.为什么这里要把lr移到x2,x4移到x3呢?
    __asm volatile ("mov x2, lr\n");
    __asm volatile ("mov x3, x4\n");
    2.为什么要在调用before_objc_msgSend,orig_objc_msgSend,after_objc_msgSend方法前后把x8,x9的值存入栈中呢?
    __asm volatile ("stp x8, x9, [sp, #-16]!\n");
    __asm volatile ("mov x12, %0\n" :: "r"(&before_objc_msgSend));
    __asm volatile ("ldp x8, x9, [sp], #16\n");
    3.为什么在三个方法执行完之后呢,最后x0会存储最后的函数返回地址呢?我打断点看到每次都是这样的,不太理解,然后把x0,移到lr确实是为了执行之前objc_msgSend执行后下一条执行的代码段段地址。
    __asm volatile ("mov lr, x0\n");
    展开

    作者回复: 汇编建议先看下 arm64 相关资料
    https://blog.nelhage.com/2010/10/amd64-and-va_arg/
    http://infocenter.arm.com/help/topic/com.arm.doc.ihi0055b/IHI0055B_aapcs64.pdf
    https://developer.apple.com/library/ios/documentation/Xcode/Conceptual/iPhoneOSABIReference/Articles/ARM64FunctionCallingConventions.html

    然后啃啃 objc_msgSend 源码

     2
     7
  • Sean Ma
    2019-03-14
    上来就汇编,营养跟不上。想问个问题,文中提到首屏渲染渲染后指的是“这个阶段就是从渲染完成时开始,到didFinishLaunchingWithOptions方法域结束而结束”,我自己跑demo的时候,看到首页viewcontroller完成加载渲染出来能看到都要等到didFinishLaunchingWithOptions return true,所以我这里对首屏渲染后的界定有疑惑

    作者回复: 你说的和原文是一个意思

    
     7
我们在线,来聊聊吧