17.6 练习

1.编写一个程序,测试添加和移除字典中的条目时,对添加和移除对象的引用计数有什么影响。

2.你认为NSArray的replaceObjectAtIndex:withObject:方法对数组中被替换的对象的引用计数有什么影响?对放置到数组中的对象有什么影响呢?编写一个程序以进行测试,然后参考这个方法的文档来检验你的结果。

3.返回第一部分“Objective-C 2.0语言”中一直使用的Fraction类,为了方便起见,这个类在附录D“资源”中列出,修改这个类,使它在Foundation框架下工作。然后,给各种MathOps分类的方法添加合适的消息,将每步操作产生的小数添加到自动释放池中。完成这些任务后,可以编写如下语句:


[[fractionA add:fractionB]print];


不会导致内存泄漏吗?解释你的答案。

4.返回到第15章中的例子AddressBook和AddressCard。修改每个dealloc方法,使得当调用这个方法时打印一条消息。然后,运行一些使用这些类的示例程序来确保在主程序main结束之前给每一个AddressBook和AddressCard对象都发送了一条dealloc消息。

5.选择本书中的任意两个程序,并在垃圾回收功能已启用的情况下在Xcode中生成并运行它们。确定在垃圾回收启动后,像retain、autorelease和release这样的方法调用都被忽略了。