Автоматический подсчет ссылок, появившийся в iOS 5, эффективно заставит любой указатель на объект target-c действовать как интеллектуальный указатель.Вызовы retain / release будут синтезироваться компилятором при присваивании и освобождении, если только вы явно не объявите ссылку слабой, и в этом случае они будут автоматически обнулены при освобождении объекта.
Мой советподождать пару месяцев для этого.Возможно, вы сможете собрать нечто подобное, но я бы порекомендовал против этого.Во-первых, это будет ужасно.Пример:
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 ++, вам придется скомпилировать весь ваш проект в target-c ++, что может вызвать проблемы, так как target-c ++ не на 100%совместим с кодом Objective-C, и не все сторонние платформы будут работать с ним должным образом.И забудьте о том, чтобы делиться своим кодом с кем-либо еще.
Возможно, вам будет интересно сделать что-то подобное, но вы не захотите его использовать.И остерегайтесь соблазна воссоздать ваши любимые биты C ++ в Objective-C.Языки очень разные, и вы могли бы потратить на это много времени, а это не время, потраченное на изучение всего того, что вы можете сделать в Objective-C, чего нельзя делать в C ++.