[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Automatic Reference Counting
From: |
David Chisnall |
Subject: |
Re: Automatic Reference Counting |
Date: |
Thu, 7 Jul 2011 21:03:27 +0100 |
On 7 Jul 2011, at 20:52, Ondřej Hošek wrote:
> They remain untouched by ARC. ObjC pointers are detected using
> semantic analysis -- a heuristic along the lines of "oh, an asterisk,
> I'm taking over" would break everything (including the "strict
> superset of C" philosophy).
C or C++. ARC works extremely nicely with Objective-C++. C++ structures can
contain Objective-C pointers, but then they become non-POD types and have a
destructor added that releases the Objective-C ivars. C++ templates can take
Objective-C types and will have the retain / release calls added automatically.
This means that you can write things like:
std::map<int, __weak NSString*> foo;
The variable foo will then be a(n ordered) map from integers to NSStrings. If
you do:
id a = foo[12];
Then a will be nil if the string that was inserted into the collection has been
deallocated before this line is reached.
This makes Objective-C++ a lot nicer to work with - you don't need to worry
about memory management for Objective-C objects, it happens automatically even
when you store them in C++ variables. You don't have to think about copy
constructors calling retain and so on, all of this Just Works™.
David
-- Sent from my STANTEC-ZEBRA