Not quite an answer, but some more information if it helps someone more recognizable than me ...
objc_retainAutoreleasedReturnValue(obj) is new to iOS 5 and pretty much does what that name says. Conceptually, if the assigned object is in the auto-resource pool, then it is retrieved from there, implicitly saving it, and the appropriate issue is added later. Thus, this is a way to avoid the memory bottleneck problem that can occur when conceptually temporary objects accumulate in the autorun pool. So this is optimization, not a new part of behavior.
The ARC compiler will be inserted into one of your ARC files, where some method receives an object with auto-implementation. As you say, this is not connected with weak links or folding boards, and it’s logical that you simply cannot do this in order to maintain compatibility with iOS 4.
Having said all this, I’m not completely sure of a workaround that is different from the obvious, but probably very hard in the stomach - change your ARC classes so that they never receive objects with auto-implementation or completely disable ARC. Apple does not allow the deployment of dynamically linked libraries, so I cannot think of a safe way to offer an alternative to objc_retainAutoreleasedReturnValue for iOS 4 devices.
Tommy source share