Autorelease objects and autorelease pools created by Ice
Ice for Swift currently creates and drains an autorelease pool for each API that can throw an Ice runtime exception from IceImpl (written in ObjC++), because the throwing of such exception creates an autorelease object.
However, some Ice for Swift APIs that don't throw also call into IceImpl (ObjC++) and the Swift-ObjC bridge creates autorelease object(s). A typical example is getProperty on Ice.Properties. In this case, the application is responsible to create and drain an autorelease pool.
Tying autorelease pools with potentially throwing Ice runtime exception is not particularly logical. We could ensure that all Ice APIs never "leak" autorelease objects by wrapping more APIs in autorelease pools, or conversely remove these little autorelease pools from APIs that can throw.