Objective-c:初始化实例var

时间:2012-05-08 11:40:06

标签: objective-c

我是Objective-c的新手。我的对象reportingTime在init方法中为nil。我做错了什么?如何初始化reportingTime并设置firstweekday?

我有以下界面和实现

我的界面文件Calculation.h

@interface Calculate : NSObject {

NSCalendar *reportingTime;
....
....
}
@property NSCalendar *reportingTime;

@end

我的实施文件Calculate.m

#import "Calculate.h"

@implementation Calculate

@synthesize reportingTime;

- (id)init
{
    if(self = [super init]) {
        reportingTime = [[NSCalendar alloc] init];
        [reportingTime setFirstWeekday:1];

        // reportingTime is nil ??????
    }
    return self;
}

2 个答案:

答案 0 :(得分:1)

使用

- (id)initWithCalendarIdentifier:(NSString *)string

而不是标准的init方法。 查看更多:https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSCalendar_Class/Reference/NSCalendar.html

答案 1 :(得分:0)

而不是

reportingTime = [[NSCalendar alloc] init];

使用:

reportingTime = [[NSCalendar currentCalendar] retain];

保留,因为这是对@property ivar的直接赋值,而[NSCalendar currentCalendar]是一种返回自动释放var的便捷方法。如果您使用ARC,则无需保留。