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 <[email protected]> 写道:
> 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 <[email protected]> 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 <[email protected]> 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
> [email protected]
> https://lists.gnu.org/mailman/listinfo/gnustep-dev
>
>
>
> --
> Ivan Vučica - [email protected]
>
> _______________________________________________
> Gnustep-dev mailing list
> [email protected]
> https://lists.gnu.org/mailman/listinfo/gnustep-dev
_______________________________________________
Gnustep-dev mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/gnustep-dev