问题 继续回答昨天的问题第二问。 我们知道,在使用 block 的时候,为了避免产生循环引用,通常需要使用 weakSelf 与 strongSelf,写下面这样的代码: 那 ...
一个 Objective C 对象的内存结构是怎样的 如果把类的实例看成一个C语言的结构体 struct ,它首先包含的是一个 isa 指针,而类的其它成员变量依次排列在结构体中。排列顺序如下图所示: 为了验证该说法,我们在Xcode中新建一个工程,在main.m中运行如下代码: import lt UIKit UIKit.h gt interface Father : NSObject int ...
2017-03-01 23:39 0 1380 推荐指数:
问题 继续回答昨天的问题第二问。 我们知道,在使用 block 的时候,为了避免产生循环引用,通常需要使用 weakSelf 与 strongSelf,写下面这样的代码: 那 ...
/friday-qa-2010-07-16-zeroing-weak-references-in-objective-c.html 《Objective-C高级编程》一书中也介绍了相 ...
题目:找出两个 UIView 的最近的公共 View,如果不存在,则输出 nil 。 分析:这其实是数据结构里面的找最近公共祖先的问题。 一个 UIViewController 中的所有 view 之间的关系其实可以看成一颗树,UIViewController 的 view 变量是这颗树的根 ...
问题 我们知道,在使用 block 的时候,为了避免产生循环引用,通常需要使用 weakSelf 与 strongSelf,写下面这样的代码: 那么请问:什么时候在 block ...
一 了解一下,找参考资料 1.看书学习object-c语法,第一本看的是《objective-c程序设计》。 2.官网:https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual ...
Objective-C Reflection(Objective-C 反射机制) NSObject 方法 除了个别例外,Cocoa 中大部分类都是 NSObject 的子类,因此大部分对象都继承了它所定义的方法。 NSObject 提供了一些简单的查询运行时系统信息的方法 ...
概述 我们知道在程序运行过程中要创建大量的对象,和其他高级语言类似,在ObjC中对象时存储在堆中的,系统并不会自动释放堆中的内存(注意基本类型是由系统自己管理的,放在栈上)。如果一个对象创建并使用后没有得到及时释放那么就会占用大量内存。其他高级语言如C#、Java都是通过垃圾回收来(GC)解决 ...
在我的理解来说: 对象(object)即一块内存,本文要探讨的是一个Objective-C对象在内存的布局(layout)问题,水果的官方文档有说,一个类(class)如果不需要从NSObject继承其某些特定的行为是不用继承NSObject的,这里我将讨论限制在继承了NSObject的类的对象 ...