我正在构建一个应用程序,其中使用标准视图控制器中的 UIDatePicker 设置 NSDate 对象。日期被添加到另一个类的可变字典中。当同一个类尝试访问日期对象时,它已经准备好被释放,导致崩溃。此外,这只是在使用 Xcode 5 编译后才出现的问题。
示例代码
@interface SomeViewController ()
@property (nonatomic, strong) UIDatePicker *datePicker;
@property (nonatomic, strong) ChangeTracker *changeTracker; // Records local changes made to managed objects to send to server
@end
@implementation SomeViewController
// Relevant implementation
- (void)touchSetPicker:(UIButton *)sender
{
[self setDate:self.datePicker.date forManagedObject:self.someManagedObject];
}
- (void)setDate:(NSDate *)date forManagedObject:(NSManagedObject *)managedObject
{
// Set properties on managed object based on date param
// Pass date to changeTracker class
[self.changeTracker setDate:date forManagedObject:managedObject];
}
@end
ChangeTracker.m
@interface ChangeTracker ()
@property (nonatomic, strong) NSMutableDictionary *dateChanges;
@end
@implementation ChangeTracker
- (void)setDate:(NSDate *)date forManagedObject:(NSManagedObject *)managedObject
{
NSString *idProperty = managedObject.idProperty;
self.dateChanges[idProperty] = date;
}
- (void)compileAllChanges
{
for (NSString *idProperty in [self.dateChanges allKeys]) {
// Here is where the crash occurs due to the date being deallocated
NSDate *date = self.dateChanges[idProperty];
}
}
@end
启用僵尸对象后,我收到错误消息:-[__NSDate release]: message sent to deallocated instance
该项目正在使用 ARC,因此我无法明确尝试保留此对象。任何帮助,将不胜感激。