В одном из моих контроллеров представления у меня есть много разных форматов для дат, поэтому я решил создать ivar в моем заголовочном файле
NSDateFormatter *dateFormatter;
, а затем я использую его с разными форматами в разныхметоды в моем файле реализации
dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"EEEE, MMM dd"];
//do something with this
[dateFormatter setDateFormat:@"y-MM-dd HH:mm:ss"];
//do something with this
etc
Это нормально делать?это то, что они имеют в виду, кэшируя ваши nsdateformatters?
Кажется, это работает нормально, когда я просто собираю => запустить, но когда я включаю зомби, мое приложение вылетает, и malloc_history показывает кучу alloc / free с dateformatдругой текст, связанный с датой.Вот пример выделения
ALLOC 0x5e37930-0x5e3799b [size=108]: thread_accc52c0 |start | main |
UIApplicationMain | GSEventRun | GSEventRunModal | CFRunLoopRunInMode |
CFRunLoopRunSpecific | __CFRunLoopRun | __CFRunLoopDoObservers |
__CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ |
CA::Transaction::observer_callback(__CFRunLoopObserver*, unsigned long, void*) |
CA::Transaction::commit() | CA::Context::commit_transaction(CA::Transaction*) |
CALayerLayoutIfNeeded | -[CALayer layoutSublayers] | -[UITableView layoutSubviews]
| -[UITableView(_UITableViewPrivate) _updateVisibleCellsNow:] | -
[UITableView(UITableViewInternal) _createPreparedCellForGlobalRow:] | -
[UITableView(UITableViewInternal) _createPreparedCellForGlobalRow:withIndexPath:]
| -[EventsTableController tableView:cellForRowAtIndexPath:] | -[NSDateFormatter
dateFromString:] | -[NSDateFormatter getObjectValue:forString:errorDescription:]
| getObjectValue | CFDateFormatterCreateDateFromString |
CFDateFormatterGetAbsoluteTimeFromString | udat_parse |
icu::DateFormat::parse(icu::UnicodeString const&, icu::ParsePosition&) const |
icu::SimpleDateFormat::parse(icu::UnicodeString const&, icu::Calendar&,
icu::ParsePosition&) const | icu::SimpleDateFormat::subParse(icu::UnicodeString
const&, int&, unsigned short, int, signed char, signed char, signed char*, int&,
icu::Calendar&, int) const | icu::SimpleDateFormat::parseInt(icu::UnicodeString
const&, icu::Formattable&, int, icu::ParsePosition&, signed char,
icu::NumberFormat*) const | icu::DecimalFormat::parse(icu::UnicodeString const&,
icu::Formattable&, icu::ParsePosition&) const |
icu::DecimalFormat::parse(icu::UnicodeString const&, icu::Formattable&,
icu::ParsePosition&, signed char) const | icu::DecimalFormat::subparse(icu::UnicodeString const&,
icu::UnicodeString const*, icu::UnicodeString const*, icu::UnicodeString const*,
icu::UnicodeString const*, signed char, signed char, icu::ParsePosition&,
icu::DigitList&, signed char*, unsigned short*) const |
icu::DecimalFormat::compareSimpleAffix(icu::UnicodeString const&, icu::UnicodeString
const&, int, signed char) | uprv_decNumberInvert | uprv_decNumberInvert |
icu::UnicodeSet::UnicodeSet(icu::UnicodeSet const&) | malloc | malloc_zone_malloc
Заранее спасибо