我是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;
}
答案 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,则无需保留。