gpt4 book ai didi

objective-c - 为什么我需要保留 NSDateFormatter dateFromString : 的结果

转载 作者:行者123 更新时间:2023-11-28 18:43:36 25 4
gpt4 key购买 nike

我有一个 NSDate*,我将其存储为具有保留关键字的属性:

@property (nonatomic, retain) NSDate* startTime;

我是这样使用的:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"h:mm a"];
startTime = (NSDate*)[[NSUserDefaults] standardUserDefaults] objectForKey:@"StartTimeKey"];
if (startTime == nil)
startTime = [[dateFormatter dateFromString:@"8:00 am"] retain];

为什么我需要保留dateFromString:消息的结果,但不需要保留objectForKey:的结果?

我刚刚升级到 XCode 4.2,现在正在使用 LLVM GCC 4.2 编译器。在升级之前,代码在没有保留的情况下运行良好。现在它在没有保留消息的情况下崩溃(稍后在我访问 startDate 属性时在代码中)。

最佳答案

问题是你这样写的:

startTime = blah blah blah;

您正在直接设置实例变量 startTime。如果您这样做:

self.startTime = blah blah blah;

然后编译器会把它变成这样:

[self setStartTime:blah blah blah];

自动生成的 setter 方法将为您完成保留。

如果你这样做:

@synthesize startTime = _startTime;

然后实例变量将被命名为_startTime,这样更容易记住使用属性而不是直接赋值给实例变量。

关于objective-c - 为什么我需要保留 NSDateFormatter dateFromString : 的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8088110/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com