Обычно нет необходимости что-либо очищать при выходе, как указал Барри, но вы можете настроить делегат NSApplication, который реализует
- (void)applicationWillTerminate:(NSNotification *)aNotification
Этот метод вызывается непосредственно перед выходом из приложения. В этом методе вы можете вызвать некоторый статический метод ваших классов совместно используемых экземпляров для очистки внутреннего кэшированного общего экземпляра.
Однако что-то вроде утечки памяти после выхода из приложения не существует. Если ваше приложение завершает работу, вся память, которой оно когда-либо обладало, возвращается системе независимо от того, как оно было выделено. Если этого не произошло, и ваше приложение собиралось аварийно завершить работу, то память, использованная до сбоя, в конечном итоге была бы потеряна для системы, что недопустимо. В многозадачной ОС сбойное приложение не должно оказывать негативного влияния на остальную часть системы!