Just asking, with ARC, is this a good choice on implementing singleton?

//Singleton.h
#import <Foundation/Foundation.h>
@interface Singleton : NSObject
+ (instancetype)defaultSingleton;
// …
@end
extern Singleton *DefaultSingleton // Of course this is optional

// Singleton.m
Singleton *DefaultSingleton
@implementation Singleton
+ (instancetype)defaultSingleton
{
        if (!DefaultSingleton)
                DefaultSingleton = [[self alloc] init];
        return DefaultSingleton;
}
// …
@end

在 2013-6-7,上午1:31,Ivan Vučica <ivuc...@gmail.com> 写道:

> It depends on how the object is used -- in this case (without looking at the 
> code), it sounds like it's a typical singleton approach.
> 
> On Wed, Jun 5, 2013 at 8:07 AM, Germán Arias <ger...@xelalug.org> wrote:
> Thanks for the explanation. I knew about static variables with strings (like 
> @"hello").
> And that these don't should be released. But I did not know that this applies 
> to
> other objects.
> 
> Thanks.
> Germán.
> 
> On 2013-06-04 23:55:15 -0600 Graham Lee <gra...@iamleeg.com> wrote:
> 
> > That's returning a shared static instance of the GSComboWindow class, so 
> > it's
> > expected that it isn't released. It's also outside of the NSComboBoxCell
> > class, so as far as NSComboBoxCell instances are concerned, they should obey
> > standard memory management rules:
> >
> > - if you got an object via +alloc, -copy or -new, you own it and should
> > -release or -autorelease it later.
> > - if you didn't, you don't own it unless you -retain it
> > - if you did neither of these, don't -release or -autorelease it.
> >
> > NSComboBoxCell is consistent with these rules.
> >
> > Graham.
> >
> 
> 
> _______________________________________________
> Gnustep-dev mailing list
> Gnustep-dev@gnu.org
> https://lists.gnu.org/mailman/listinfo/gnustep-dev
> 
> 
> 
> -- 
> Ivan Vučica - i...@vucica.net
> 
> _______________________________________________
> Gnustep-dev mailing list
> Gnustep-dev@gnu.org
> https://lists.gnu.org/mailman/listinfo/gnustep-dev

_______________________________________________
Gnustep-dev mailing list
Gnustep-dev@gnu.org
https://lists.gnu.org/mailman/listinfo/gnustep-dev

Reply via email to