Не совсем ответ, но немного больше информации, если это поможет кому-то более знающему, чем я ...
objc_retainAutoreleasedReturnValue(obj)
является новинкой для iOS 5 и в значительной степени соответствует названию.Концептуально, если номинированный объект находится в пуле автоматического выпуска, то он удаляется оттуда, неявно сохраняя его, и подходящий выпуск добавляется позднее.Таким образом, это способ избежать проблемы узкого места в памяти, которая может возникнуть, когда концептуально временные объекты накапливаются в пуле автоматического выпуска.Так что это оптимизация, а не новая часть поведения.
Компилятор ARC вставит его в один из ваших файлов ARC, где какой-либо метод получит объект, выпущенный автоматически.Как вы говорите, он не связан как со слабыми ссылками, так и с раскадровками, и по логике вещей вы просто не могли бы этого сделать, чтобы сохранить совместимость с iOS 4.
Сказав все это, я не совсем уверен в обходном пути, с другой сторонычем очевидное, но, вероятно, очень трудное для восприятия - измените ваши классы ARC так, чтобы они никогда не получали объекты с автоматическим выпуском или полностью отключали ARC.Apple не позволяет развертывать динамически связанные библиотеки, поэтому я не могу придумать безопасный способ предложить альтернативу objc_retainAutoreleasedReturnValue
для устройств iOS 4.