zoukankan      html  css  js  c++  java
  • ios理解 Pro Mutlithreading and Memory Management for iOS and OS X with ARC, Grand Central Dispatch, and Blocks

    Capturing automatic variables

    Next, you need to learn what the “together with automatic (local) variables” part means.
    For Blocks, this can be rephrased as “capturing the value of automatic variables.” The
    next example shows how thiscapture is accomplished.             

    When automatic variables are captured, the values are read-only in the Block. The
    variables can’t be modified.

    Blocks are “anonymous
    functions together with automatic (local) variables.

    isa 

    A struct for each class is a class_t struct based on objc_class struct. The class_t struct
    is declared at runtime/objc-runtime-new.h in the objc4 runtime library.
    struct class_t {
    struct class_t *isa;
    struct class_t *superclass;
    Cache cache;
    IMP *vtable;
    uintptr_t data_NEVER_USE;
    };

    一个block的实现是如下:

    Next, let’s see the implementation of the anonymous function that uses the Block. The
    original Block literal is as follows.
    ^{printf(fmt, val);}
    This is converted to a function.
    static void __main_block_func_0(struct __main_block_impl_0 *__cself)
    {
    const char *fmt = __cself->fmt;
    int val = __cself->val;
    printf(fmt,

  • 相关阅读:
    AdvStringGrid使用小结
    svn提示out of date的解决方法
    delphi之socket通讯
    Delphi的Socket编程步骤
    C++ Socket编程步骤
    centos7安装docker
    centos7安装指南
    UltraISO制作U盘启动盘
    浅谈linux 文件的三个时间
    自动配置zabbix-agent
  • 原文地址:https://www.cnblogs.com/studyNT/p/4474790.html
Copyright © 2011-2022 走看看