Yes.
Roughly said, only NSObject
instances are handled through ARC. ARC is a compiler mechanism that adds release
/retain
for you when needed. So, it only applies in cases where you could use release
/retain
in the non-ARC case.
This does not include either memory allocated through malloc
, nor low-level frameworks (core graphics, core audio, etc.). Specifically, objects allocated through low-level frameworks need to be released by using specific methods (e.g., CGImageRelease
, etc.).
EDIT:
A very specific case of Core Foundation data types are toll-free bridged types. In pre-ARC world you could safely specify a CF data type where its correspondent Objective-C class was expected (e.g., CFString in place of NSString). ARC forbids this since ownership semantics would not be clear. Thus, a set of ARC directives are available to specify that ownership information (see this for more info), but this is not the case of CGPath
, which is not toll-free bridged (since it is not stated in CGPath Reference).
By the way, a great resource for all ARC-doubts is this rich post of Mike Ash's.