【发布时间】:2011-08-25 02:06:30
【问题描述】:
假设我创建了一些对象并将它们添加到数组中。
House *myCrib = [House house];
House *johnHome = [House house];
House *lisaHome = [House house];
House *whiteHouse = [House house];
NSArray *houses = [NSArray arrayWithObjects: myCrib, johnHome, lisaHome, whiteHouse, nil];
通常,所有 House 对象的保留计数为 2,但它们会被自动释放一次。过了一段时间,我决定发布myCrib,即使我不是所有者——我从未保留或初始化。
[myCrib release];
保留计数应降至零,并且我的对象应被释放。我现在的问题是:这种非法行为是否会导致我的应用程序错误地运行甚至崩溃,或者NSArray 是否会简单地将我的对象从其列表中删除而造成不良后果。
我正在寻找一种方法来维护对象列表,但我希望列表能够维护自身。当某个对象消失时,我希望对它的引用从我的数组中优雅而自动地消失。我正在考虑子类化或包装NSArray。
谢谢。
【问题讨论】:
标签: objective-c object nsarray null foundation