How can i make sure user do not call init, instead client should call sharedSingleton to get a shared instance.
@synthesize delegate; - (id)init { self
You can't make methods private in Objective-C. You could raise a NSException if the wrong initializer is invoked.
- (id)init { [NSException exceptionWithName:@"InvalidOperation" reason:@"Cannot invoke init." userInfo:nil]; }