iphone - NSDate为@property给我bad_exc_access

标签 iphone ios nsdate

我想初始化一个具有特定日期的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/

相关文章:

iphone - UITabBarController 中的 UINavigationController 奇怪的弹出动画

iphone - 在 UIpickerviewcontroller 编辑 View 上添加指令标签

iphone - 在 iOS 中,是否可以在运行时向应用程序添加字体?

ios - OCMock 和 NSFileManager

iphone - 形成谓词以在日期之间进行过滤

ios - 如何创建 Swift Date 对象?

ios - 安装的应用程序每次启动时都会崩溃

android - Ionic - 更新启动画面不起作用

ios - Swift 'fabs' 已弃用 : renamed to 'abs'

ios - 按 NSDate 对表格部分进行排序