iOS 5 中的自动引用计数将有效地使任何指向 Objective-c 对象的指针都像智能指针一样工作。保留/释放调用将由编译器在分配和释放时合成,除非您明确声明引用为弱引用,在这种情况下,当对象被释放时它们将自动归零。
我的建议是等待几个月。在此期间,您也许可以将类似的东西放在一起,但我建议不要这样做。一方面,它会很丑。例子:
smart_ptr<id> array = make_smart_ptr( [NSMutableArray array] );
NSUInteger count = [array count]; // won't work.
count = [array.get() count]; // works, but yuck.
[array.get() setArray: anotherArray.get()]; // even more yuck.
此外,如果你的头文件中充满了 c++ 类,你将不得不在 Objective-C++ 中编译你的整个项目,这可能会给你带来问题,因为 Objective-C++ 不是 100% 与 Objective-C 代码兼容,而且不是所有的第三个-party 框架将与它正常工作。忘记与其他人共享您的代码。
做这样的事情可能是一个有趣的练习,但你不会想实际使用它。并注意在 Objective-C 中重新创建您最喜欢的 C++ 部分的诱惑。这些语言非常不同,你可能会花很多时间来做这件事,而不是花时间去学习你在 Objective-C 中可以做而在 C++ 中做不到的所有伟大的事情。