initWithNibName后额外保留计数

问题描述:

调用initWithNib后,我有额外的保留计数。 这可能是什么原因造成的? (有没有引用网点笔尖)initWithNibName后额外保留计数

StepViewController *stepViewController = [[StepViewController alloc] initWithNibName:@"StepViewController" bundle:nil]; 
[self.navigationController pushViewController:stepViewController animated:YES]; 
[stepViewController release]; 
NSLog(@"nextStep stepViewController retain count %i", [stepViewController retainCount]); 

上述结果在3保留个性化......

感谢对如何解决

+0

澄清 - initWithNibName和pushViewController后4保留计数是1 ... 任何想法? – OptimisticMonkey 2010-05-24 03:30:15

您有哪些疑难解答?这里没有错。 -retainCount不是您的业务,并且几乎不会告诉您有关系统的任何信息。每个自动发布的对象都会有一个明显的retainCount,比你想象的要高。如果内部对象对这个对象感兴趣,他们将拥有自己的保留,你可能期望也可能不期望。

您的业务是平衡您自己的保留和发布。系统的其余部分负责平衡它们。你不应该再次猜测它,如果你这样做了,-retainCount不太可能帮助你。它几乎总是更具误导性而不是有用的。

实际上是否存在您担心的泄漏?

+5

+100'retainCount'应该从Cocoa框架中删除。看看它,想知道发生了什么,除了悲伤之外,什么都没有。忘记它存在,你的生活会更简单。 – 2010-05-24 03:41:05

+0

Rob - 你是对的 - 我正在解决我造成的保留计数问题......没有说明保留计数高于预期是可以的。修复我的保留问题后,一切工作。 顺便说一句 - 这个问题是因为另一个拥有的对象有一个属性设置使用保留而不是分配.... 感谢您的帮助 – OptimisticMonkey 2010-05-24 04:19:17

+0

戴夫说+1,000,000。 – JeremyP 2010-05-24 09:28:39

你将不得不寻找任何意见到源代码或API文档中找出。但是看起来合乎逻辑的是,nvaigation控制器有一个,从xib加载的视图有一个,所以这可能是另一个由naviation控制器中的东西完成的我的猜测。