The manual reference counting system in old objective-c provides a better solution which while still cumbersome, doesn't prevent good powerful APIs.
The automatic reference counting capability of Delphi interfaces always seemed like a good idea to me, but seems to be rarely used.