Runtime 释放





1 . objective - c运行时检查在启动时执行的图像来确定是否运行垃圾收集。每个对象文件信息的部分,他们都必须同意继续执行。标准的编译结果在一个信息部分,表明没有GC能力。编译与-fobjc-gc表明,GC和保留/释放逻辑。编译-fobjc-gc-only表明只有GC逻辑。non-GC可执行,尝试加载gc-only框架将会失败,将能够执行GC,所加载一个GC无法框架(或包)。




2  .编译器在作业时使用的三个“助手”功能强大到垃圾收集内存的指针到全局内存(objc_assign_global),垃圾收集堆内存(objc_assign_ivar)或未知的记忆(objc_assign_strongCast)。作业的弱指针它使用objc_assign_weak和读取它使用objc_read_weak。


线程

收集器最初只运行在主线程要求通过objc_collect_if_needed(1),这被称为自动从NSAutoreleasePool排水方法。AppKit安排叫objc_start_collector_thread()发射后,随后集合上运行专用的线程,并对纯分配需求。objc_set_collection_threshold和objc_set_collection_ratio调用用于建立一个集合的“需要”。一次比时代一个完整的(完成)收集会发生;否则将完成分代收集如果分配超过阈值。


垃圾收集器最小暂停的线程已经登记,同时收集。注册发生在建立一个NSThread对象,而不仅仅是pthread。


  重要的是:
  一个关键假设收集器是一个线程没有获得访问一个对象(或更一般的任何垃圾收集的内存块)通过一个指向另一个线程的栈内存。换句话说,收集器不会让准备跨线程堆栈引用。这使收集器,以避免暂停所有线程在同一时间同时检查递归他们所有的引用。


垃圾收集的错误  
在/usr/lib/libauto.dylib收集器本身是发现。它的错误消息是使用malloc_printf印刷。在/usr/lib/libobjc.dylib ObjC运行时被发现。它使用_objc_inform印刷错误。目前,复活和引用计数下溢错误指出通过调用以下例程:
  objc_assign_global_error
  objc_assign_ivar_error
  objc_exception_during_finalize_error
  auto_zone_resurrection_error
  auto_refcount_underflow_error

  属性
  objective - c的语法属性WWDC 2006年以来一直在进行。有关详细信息,请参阅属性文件(属性)。
  
  总之,@property(属性)类型名称引入了一个隐式声明的“getter”和“setter”方法(除非请求一个只读属性)的“变量”命名。setter =和getter =属性允许指定一个方法的名称,否则“名字”方法和“setName:”方法是隐式声明。他们也可以显式命名。

默认情况下,对象属性被分配当设置。在non-GC这通常是不正确的,发出一个警告除非显式赋值语义命名。有三个选择:分配,是对非保留对象引用,复制、复制和隐式对象保留;时要求被保留,保留对象集。

访问属性默认为原子。这是几乎所有琐碎的GC下也下琐碎non-GC一切但对象和结构。特别是non-GC条件下原子访问保留对象可以是昂贵的。因此,一个nonatomic财产属性。


指针可能受到强烈GC通过声明他们强烈,而且他们可以归零法弱__weak通过声明它们。

实现属性可以提供的编译器和运行时通过使用@synthesize @ implementation节中声明的类(或类扩展)。编译器将一个实例变量的名称相同的属性。如果你想使用一个不同的名称,您供应@synthesize声明。

特别是编译器和运行时将实现保留对象的访问器通过使用原子比较和交换指令。是极其危险的直接访问一个原子对象属性通过实例变量因为另一个线程可能改变其值不可预知的。这样编译器会警告你这样的不受保护的访问。事实上,运行时将暂时使用最低有效位的实例变量作为临时锁定,同时保留新值和释放旧的。直接使用一个原子实例变量在non-GC强烈气馁。


  加载和卸载包
  从OS X v10.4已经可以卸载包包含objective - c。没有尝试要防止这种情况如果对象仍然存在类卸载。子类的类加载包是特别脆弱的。


  方法和类属性
  objective - c现在支持一些gcc objective - c方法的属性。语法、属性方法按照方法的声明,为方法参数和属性参数类型和参数名坐着。支持的属性包括:


  运行时API的变化
  objective - C运行时的C接口(在< objc / * . h >)有了明显的改变。亮点包括:
  
  几乎所有的结构都是弃用,包括struct objc_class。对于大多数提供的这些功能替代。
  class_poseAs弃用。使用方法列表操作函数。
  class_nextMethodList弃用。使用class_copyMethodList代替。
  class_addMethods弃用。使用class_addMethod代替。
  objc_addClass弃用。使用objc_allocateClassPair和objc_registerClassPair代替。
  一般来说,所有弃用声明在64位都不存在。
  objc / objc-runtime API。h和objc / objc-class。h现在objc /运行时。h和objc / message.h。旧头文件简单的# include新的

开发者:欢迎加入iOS开发交流群,群号码:314846081

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,736评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,167评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,442评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,902评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,302评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,573评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,847评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,562评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,260评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,531评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,021评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,367评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,016评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,068评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,827评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,610评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,514评论 2 269

推荐阅读更多精彩内容

  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 1,635评论 0 9
  • objc_getAssociatedObject返回与给定键的特定对象关联的值。ID objc_getAssoci...
    有一种再见叫青春阅读 1,484评论 0 7
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,014评论 11 349
  • 今天突然想起有关于Service这个东西的存在,然后去网上找资料来学习,之前呢,只知道这是一个服务,这个服务是什么...
    缘狄阅读 518评论 0 1
  • 尴尬的事情,也会有感触。 我们老师招聘去了,没办法来,我在学校。然后老师说,让我和另一个妹子一起来参加,2017年...
    interested小小锐阅读 218评论 0 0