Well, I'd remove the "Pro", because the code isn't thread safe at all. Here is the generally accepted pattern to create a singleton:
+(Singleton *)sharedSingleton {
static dispatch_once_t once;
static Singleton *sharedSingleton;
dispatch_once(&once, ^{
sharedSingleton = [[self alloc] init];
});
return sharedSingleton;
}