假设我创建了一些对象并将它们添加到一个数组中。
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
。
谢谢你。