你怎么知道pushViewController保留了被推送的对象?

sas*_*ang 2 iphone objective-c uinavigationcontroller ios

这里的答案都说pushViewController保留了给定的viewController,但它们没有引用说明这一点的文档.

问题是他们如何知道pushViewController将保留给定的视图控制器?我们可以假设所有其他带有NSObject*派生对象指针的类遵守此约定吗?

编辑:

我需要一个比目前提出的答案提出的更有力的论据/证据.例如,有关UIView :: addSubview的文档明确指出"此视图由接收方保留".或者,如果您打算通过暗示显示接收到的控制器,因为UINavigationController具有与集合类相同的语义,那么通过显示它在内部使用其中一个集合类或引用一些指出的文档来显示它确实存在这个.pushViewController的文档说给定的视图控制器放在"导航堆栈"上,但它没有说明这个堆栈是什么类.实际上,查看UINavigationController的头文件中的定义,看起来它不是使用堆栈,而是使用NSMutableArray.如果你已经完成了数学学位和书面证明,那么你就会理解我正在寻找的那种严谨的知识分子.

Ste*_*eve 7

因为收藏品总是拥有自己的物品,父母总是拥有自己的孩子.

从某种意义上说,导航控制器就像一种集合 - 堆栈一样运行.

如果控制器在导航控制器上启动并消失 - 这将是一个大问题.

http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/MemoryMgmt/Articles/mmPractical.html#//apple_ref/doc/uid/TP40004447-SW1

将对象添加到集合(例如数组,字典或集合)时,集合将获得对象的所有权.当从集合中移除对象或集合本身被释放时,集合将放弃所有权.