Фрагмент кода, который вы показываете, верен, в любом случае, я предполагаю, что у вас, вероятно, есть проблема с памятью, из-за которой ваш экземпляр UILabel
может быть освобожден в какой-то момент до выполнения layoutSubviews
, тогда эта память используется повторно NSString
, так что вы получите ошибку там.
По моему опыту, наиболее распространенным случаем для этого в любом случае является ошибочная перезапись timeLabels
с неправильным значением, которая может привести к тому же результату. Это может быть сделано внутри класса или из другого класса (который, возможно, пытается установить значение метки).
Если вы хотите сделать простой тест, добавьте
NSLog(@"timeLabels address %x", timeLabels);
и init
, и layoutSubviews
, чтобы сравнить два значения и увидеть, что они различаются (или, может быть, нет, в этом случае у вас возникнет проблема с повреждением памяти).
Вы должны проверить свой код и опубликовать больше, если вам нужна дополнительная помощь.