• 请不要在回答技术问题时复制粘贴 AI 生成的内容
kingliangyingjun
V2EX  ›  程序员

关于 object-C block

  •  
  •   kingliangyingjun · Mar 17, 2019 · 2234 views
    This topic created in 2649 days ago, the information mentioned may be changed or developed.
    block_byref 的数据访问。总是通过 block_byref->forward->val 来取得。
    copy 之前,栈上 block_byref 的 __forwarding 指向自身,而栈上的 block 使用 block_byref->__forwarding->val 就可以修改栈上的数据。copy 之后,栈上的 block_byref 被复制到堆上,而栈上的 block_byref 的 __forwarding 被修改成指向堆上的数据,而堆上 block_byref 的 __forwarding 指向自身。

    问题: “栈上的 block_byref 的 __forwarding 被修改成指向堆上的数据” 这一步 是怎么做到的,怎么就 copy 一下就指向堆了。脑子转不开了
    2 replies    2019-03-17 17:30:59 +08:00
    juzisuan
        1
    juzisuan  
       Mar 17, 2019
    iOS 转前段快两年了,这个问题,看不懂
    haozhang
        2
    haozhang  
       Mar 17, 2019 via Android
    我觉得 copy 大概等于:malloc 加 memcpy 吧,先在 heap 上面 malloc 申请内存,再 copy 上去,不就完成了 stack 到 heap 的移动了嘛
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3168 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 11:56 · PVG 19:56 · LAX 04:56 · JFK 07:56
    ♥ Do have faith in what you're doing.