我确信有一个简单的答案的基本问题。
我正在尝试获取照片的时间戳。当我尝试访问 NSDateComponents 以检索特定日期元素(例如“日”)时,我收到 EXC_BAD_ACCESS 错误。
首先,我的代码的相关部分:
// formattedDateString is a string representing the "DateTimeOriginal" EXIF property extracted from the image
NSDate *takenAt = [[NSDate alloc] initWithString:formattedDateString];
NSLog(@"date: %@", takenAt); // prints= date: 2010-01-10 03:25:00 -0500
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSLog(@"cal: %@", gregorian); // prints= cal: <__NSCFCalendar: 0x10020b570>
NSUInteger unitFlags = (NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit);
NSDateComponents *components = [gregorian components: unitFlags
fromDate: takenAt
];
int days = [components hour];
NSLog(@"comp: %@", days); // thrown error= Program received signal: “EXC_BAD_ACCESS”
如果我注释掉最后一行:NSLog(@"comp: %@", 天);代码执行成功。
我已经尝试了一些变体,但最重要的是,每当我向成分访问属性时会引发“EXC_BAD_ACCESS”错误。
我所做的研究似乎表明,这通常是未初始化的指针或我尝试释放的对象的结果,但该对象不是我要释放的。据我所知,这里的情况并非如此。
我缺少什么?
预先感谢您为我阐明这一点。这是我对 Objective-C 的第一次探索。
NSDateComponents 类参考 http://developer.apple.com/mac/library/DOCUMENTATION/Cocoa/Reference/Foundation/Classes/NSDateComponents_Class/Reference/Reference.html.
您正在使用%@
作为整数的格式说明符。你需要使用%d
.
当你使用%@
, the NSLog
函数会将参数视为对象,并将其发送给description
信息。真正发生的情况是,运行时尝试取消引用参数(整数),但因为它不是有效的指针,所以您会得到一个EXC_BAD_ACCESS
例外。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)