【发布时间】:2010-12-21 17:22:28
【问题描述】:
我有一个带有此代码的单例类:
manager.h
@interface Manager : NSObject {
NSString *jobsLimit;
NSMutableDictionary *jobTitles;
}
@property (nonatomic, retain) NSString *jobsLimit;
@property (nonatomic, assign) NSMutableDictionary *jobTitles;
@implementation Manager
@synthesize jobsLimit;
@synthesize jobTitles;
+ (id)sharedManager {
@synchronized(self) {
if(shared == nil)
shared = [[super allocWithZone:NULL] init];
}
return shared;
}
- (id)init {
if (self = [super init]) {
jobsLimit = [[NSString alloc] initWithString:@"50"];
jobTitles = [[NSMutableDictionary alloc] init];
}
return self;
}
然后在代码中我像这样分配这些变量:
self.jobsLimit = [NSString stringWithFormat:@"%d", progressAsInt];
[self.jobTitles addEntriesFromDictionary:anotherDictionary];
- (void)dealloc {
[super dealloc];
[jobsLimit release];
[jobTitles release];
}
现在我的问题是这段代码是否正确?作业是否正确?
我很困惑何时使用分配和/或保留。如果我的财产已经被保留,我需要使用 alloc 吗?如果我使用 alloc 应该分配我的属性吗?
现在这些变量的引用计数是多少?当调用 dealloc 时,它们是否会被释放/释放不足?
对于单例类,我是否需要像上面的 init 方法一样初始化我的 ivars,或者我不必这样做。
如果有人能帮我解决这个困惑,我将不胜感激,并在此先感谢。
问候,
【问题讨论】:
标签: iphone objective-c