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,

  • 相关阅读:
    GUI编程
    Markdown学习
    [python3]正则表达式
    python3_json&pickle
    python3_module_sys
    python3_module_os
    Python3_module_random
    Pyhton3_module_time()
    Python3 正则表达式 Regular Expression
    Python循环对象
  • 原文地址:https://www.cnblogs.com/studyNT/p/4474790.html
Copyright © 2011-2022 走看看