Sure, but that's not the problem here. The problem is that when you #import "ULINetSocket.h" (in your ARC-ready code), you also drag in references to <CoreFoundation/CoreFoundation.h> from the same code, which gives you something like this:
In file included from ./ULINetSocket.h:34:
In file included from /usr/local/include/CoreFoundation/CoreFoundation.h:36:
In file included from /usr/local/include/CoreFoundation/CFBundle.h:31:
In file included from /usr/local/include/CoreFoundation/CFURL.h:34:
/usr/local/include/CoreFoundation/CFString.h:538:15: error: ARC forbids Objective-C objects in structs or unions
CFStringRef theString;
Of course you could get rid of the requirement for CoreFoundation.h in ULINetSocket.h by masking all CF-refs to something opaque, but then again, there's other CF-code missing and so on. Nothing to gain here.