[objc explain]: Non
写在前面:
Non-fragile 非脆弱性fragile 非脆弱性ivars 实例变量-instance variables的缩写非脆弱[Non-fragile] 实例变量是现代版Objective-C的一个新功能,应用于iPhone和64位Mac上。它们提供给框架开发者更多的灵活性,且不会失去二进制的兼容性,为声明在类接口外的实例变量和属性实例变量的自动合成铺平了道路。
脆弱性(fragile)的基类问题脆弱的实例变量是脆弱的基类问题的子集.在一些语言中,一个超类没有改变的话,也不用重新编译该类的所有子类。例如,添加数据成员或虚成员函数给一个C++的超类将破坏该类的任何子类的兼容性,即使被添加的成员对于子类是私有或不可见的也一样如此。
在传统的Objective-C中,方法大多都是非脆弱的,这要感谢动态消息派发。你能够自由的为父类增加方法,只要你的命名不冲突就好。但是Objective-C的实例变量在32-bit Mac是脆弱的。
32-bit Mac :脆弱的Objective-C ivars话说你正在写为Mac OS X Leopard 写宠物商店的一个应用程序。你可能有一个NSView的子类PetShopView,在这个宠物商店里有小狗和小猫的数组。
NSView(Leopard)data structurePetShopViewdata structure0Class isa0Class isa4NSRect bounds4NSRect bouds20NSView *superview20NSView *superview24NSColor *bgColor24NSColor *bgColor28NSArray *kittens32NSArray *puppies然后Mac OS X Def Leopard 出现了新的multi-paw接口技术,AppKit 开发人员增加了一些paw-tracking 代码给NSView。
NSView(Leopard)data structurePetShopViewdata structure0Class isa0Class isa4NSRect bounds4NSRect bouds20NSView *superview20NSView *superview24NSColor *bgColor24NSColor *bgColor28NSSet *touchedPaws28NSArray *kittens32NSArray *puppies不幸的是,你的kittens 被fragile ivars 毁灭了。或者说,AppKit开发者们无论在Mac OS X 10.0 上选择任何实例变量都会陷入困境。
iPhone 和64-bit Mac:non-fragile Objective-C ivars无论你或者AppKit的开发者都想做这样的事情。
NSView(Leopard)data structurePetShopViewdata structure0Class isa0Class isa4NSRect bounds4NSRect bouds20NSView *superview20NSView *superview24NSColor *bgColor24NSColor *bgColor28NSSet *touchedPaws28NSSet *touchedPaws32NSArray *kittens36NSArray *puppies这里,当PetShopView被编译的时候,运行时能够意识到现在的NSView比以前大。子类实例变量向下滑动响应,不用重新编译任何代码,kittens通过一个动态运行时保存。
如何工作已经生成的代码对于传统的Objective-C 实例变量访问像一个C的结构体。ivar的偏移量是一个常量在编译时决定。新的ivar代码为每一个ivar创建一个包含到ivar的偏移的变量,所有的代码访问ivar用这个变量。在启动时,运行时发现superclass尺寸超了,它可以改变任何ivar的偏移量。
在这个pet shop 例子中,_OBJC_PetShopView_kittens 是28在编译时,但是在运行时,当它看到Def Leopard版本是,它变为32. 代码不需要重新编译,ivar增加的偏移量的性能消耗很小,这样,AppKit ,你和kittens都比较愉快。
原文:[objc explain] : Non-fragile ivars
相关知识
【宠物摄像机】
翻译 'ho fame' – 字典 加泰罗尼亚文
数据库索引优化技巧
专题一 CodeForces
非侵入式,non
宠物友好餐厅已经不能满足意大利人了,他们居然开了一家狗狗专门餐厅
Vedi Orario Visualizza sulla mappa Da Gino
Come creare un account Hotmail (Outlook.com)
宠物上门看养服务,提供照顾喂养猫咪,上门照顾喂养代溜狗狗 可长期!
SYNLawn宠物摄影大赛
网址: [objc explain]: Non https://www.mcbbbk.com/newsview1344163.html
| 上一篇: 什么宠物最好养活?新手必看的低维 |
下一篇: 奇石宠物城有哪些适合新手养的宠物 |
推荐分享
- 1养玉米蛇的危害 28694
- 2狗交配为什么会锁住?从狗狗生 7180
- 3我的狗老公李淑敏33——如何 6236
- 4豆柴犬为什么不建议养?可爱的 4637
- 5南京宠物粮食薄荷饼宠物食品包 4563
- 6中国境内禁养的十大鸟种,你知 4429
- 7湖南隆飞尔动物药业有限公司宠 4259
- 8自制狗狗辅食:棉花面纱犬的美 4257
- 9家养水獭多少钱一只正常 4212
- 10广州哪里卖宠物猫狗的选择性多 4122
