zoukankan      html  css  js  c++  java
  • Objective-C Automatic Reference Counting (ARC)

    In the standard environment, objects are allocated on the heap, and their lifetime is manually managed using a reference count. This is done using two instance methods which all classes are expected to implement: retain increases the object’s reference count by 1, whereas release decreases it by 1 and calls the instance method dealloc if the count reaches 0. To simplify certain operations, there is also an autorelease pool, a thread-local list of objects to call release on later; an object can be added to this pool by calling autorelease on it.

    Automatic Reference Counting implements automatic memory management for Objective-C objects and blocks, freeing the programmer from the need to explicitly insert retains and releases. It does not provide a cycle collector; users must explicitly manage the lifetime of their objects, breaking cycles manually or with weak or unsafe references.

    In general, ARC does not perform retain or release operations when simply using a retainable object pointer as an operand within an expression. This includes:

    • loading a retainable pointer from an object with non-weak ownership,
    • passing a retainable pointer as an argument to a function or method, and
    • receiving a retainable pointer as the result of a function or method call.

    We are not at liberty to require all code to be recompiled with ARC; therefore, ARC must interoperate with Objective-C code which manages retains and releases manually. In general, there are three requirements in order for a compiler-supported reference-count system to provide reliable interoperation:

    • The type system must reliably identify which objects are to be managed. An int* might be a pointer to a malloc’ed array, or it might be an interior pointer to such an array, or it might point to some field or local variable. In contrast, values of the retainable object pointer types are never interior.
    • The type system must reliably indicate how to manage objects of a type. This usually means that the type must imply a procedure for incrementing and decrementing retain counts. Supporting single-ownership objects requires a lot more explicit mediation in the language.
    • There must be reliable conventions for whether and when “ownership” is passed between caller and callee, for both arguments and return values. Objective-C methods follow such a convention very reliably, at least for system libraries on macOS, and functions always pass objects at +0. The C-based APIs for Core Foundation objects, on the other hand, have much more varied transfer semantics.

    https://clang.llvm.org/docs/AutomaticReferenceCounting.html#background

  • 相关阅读:
    linux 卸载软件
    RYU基础整理
    FlowVisor相关
    RYU的GUI安装
    Ubuntu下apt-get与pip安装命令的区别
    mininet安装,使用
    Java中的Enum(枚举)用法介绍
    jquery选择器大全参考
    Oracle数据库SQL语句操作大全汇总
    SQLServer数据库语句大全汇总
  • 原文地址:https://www.cnblogs.com/feng9exe/p/12687710.html
Copyright © 2011-2022 走看看