Быстро заглянув внутрь источника, Apple поместила все существенные средства инициализации для PaintingView внутри initWithCoder:
, от строк 77 до 168. Это часть протокола NSCoding, который используется для архивирования и разархивирования объектов из файлов.,Если вы вызываете initWithCoder:nil
, вполне вероятно, что реализация initWithCoder в UIView не сможет получить какое-то соответствующее значение, в котором оно нуждается.В предположении, он, вероятно, начинает иметь нулевой размер, который не является допустимым размером для объекта кадрового буфера.
Я бы предложил заменить initWithCoder:(NSCoder *)coder
на initWithFrame:(CGRect)frame
, вызывая то же самое в строке super86. Для еще лучшей реализации, реализуйте оба initWithFrame: и initWithCoder:, имея эти два вызова общего раздела для всего, что заключено в блок if((self = [super initWithXXX:argument]))
.