-1

我的单身人士看起来如下:

标题

#import <Foundation/Foundation.h>

@interface MyManager : NSObject
{

    MyManager *_sharedObject;


}


@property(nonatomic,copy) NSString * nameTitle;
@property(nonatomic,copy) NSString * nameDescription;



//assets
@property (nonatomic, strong) NSMutableArray * assets;


+ (id)sharedInstance;

@end

执行

#import "MyManager.h"

@implementation MyManager

@synthesize listingTitle;
@synthesize listingDescription;


//Assets
@synthesize assets;

+ (id)sharedInstance
{
    static dispatch_once_t pred = 0;
    __strong static id _sharedObject = nil;
    dispatch_once(&pred, ^{
        _sharedObject = [[self alloc] init]; // or some other init method
    });
    return _sharedObject;
}
@end

我想知道再添加 2 种方法,让我可以随时初始化和重置属性。我正在考虑使用 init 方法进行初始化,并添加另一种方法来重置。这会是正确的方法吗?

像这样的东西:

-(id)init {
    self = [super init];
    if (self != nil) {

         [self reset];

    }

    return self;
}

-(void)reset {

self.listingTitle=@"";
self.listingDescription=@"";

}

这是正确的方法吗?谢谢

4

2 回答 2

1

好吧,正如您在这里必须看到的那样,没有绝对正确的方法可以做任何事情。但我已经在其他应用程序中做到了这一点,我相信它对你很有效。事实上,当您创建可以在 nib(使用 initWithCoder:) 和正常方式(initWithFrame:) 中实例化的子类时,这种技术也很有效。这个想法是不要重复代码,而是将它放在一个地方并从多个地方调用它。

如果您要实例化可变对象,您希望这是两个阶段 - 在“commonInit”中添加可变对象,然后调用“重置”以确保一切都与您想要的原始对象一样。

于 2012-09-22T22:14:38.970 回答
1

命名一个init不打算在新分配的实例上运行的方法让我觉得是错误的。但是reset将对象的属性恢复为合理的默认值的方法对我来说似乎很好。

于 2012-09-22T22:54:28.827 回答