我想初始化一个具有特定日期的nsdate,以便在我的所有代码中使用它,我正在这样做:
。H
@property (nonatomic, retain) NSDate *myDate;
.m
@synthesize myDate;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd"];
myDate = [formatter dateFromString:@"2050-01-01"];
}
return self;
}
然后在代码中,如果我这样读取nsdate:
NSLog(@"%@",myDate);
或者如果我使用isEqualToDate,请给我一个exc_bad_access
为什么?
最佳答案
为了将变量作为属性访问,您需要将其调用为
self.myDate = [formatter dateFromString:"2050-01-01"];
否则,它只是对分配给它的变量进行直接分配。当在使用
retain
时调用的自动生成的setMyDate
函数中将属性声明为self.myDate = someDate;
时,将对传入的对象进行retain
调用,以保留该对象。通常,最好的做法是仅通过自动生成的方法或
self.myDate
方法访问属性,以确保正确使用引用计数功能
关于iphone - NSDate为@property给我bad_exc_access,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10799879/