The whole point of a singleton is that you don't release it. Other classes can safely point to a pointer to an instance, so if you want to replace it, you sometimes get strange behavior or even crashes. Therefore, you should not do this.
But this is possible if you did not overwrite the release and retainCount . But your error message quoted seems like you did something on the lines [MyClass release]; which does not work of course.
By the way, you seem to have singleton as the class name. Please try to adhere to the coding rules used by Apple to make your life easier and that of others. Class names must always begin with an uppercase character, method names must always begin with a lowercase character.
source share