Для копирования UIButton это работает:
NSData *archivedData = [NSKeyedArchiver archivedDataWithRootObject: btn];
UIButton *newButton = [NSKeyedUnarchiver unarchiveObjectWithData: archivedData];
[originalBtnsArray addObject:newButton];
Однако, начиная с iOS 12.0, NSKeyedUnarchiver устарел.Но при попытке описанного ниже newButton имеет значение nil.
NSData *archivedData = [NSKeyedArchiver archivedDataWithRootObject:btn requiringSecureCoding:nil error:nil];
// unarchivedObjectOfClass shows error - couldn't be read because it isn't in correct format?
NSError *error = nil;
UIButton *newButton = [NSKeyedUnarchiver unarchivedObjectOfClass:[UIButton class] fromData:archivedData error:&error];
[originalBtnsArray addObject:newButton]; // Fails here as newButton is nil
. Обратите внимание (перед любым рассмотрением дублирования), что класс объекта не является массивом, и поэтому метод unarchivedObjectOfClass (singular)желательно.Также нет специальной кодировки!
Как я могу использовать unarchivedObjectOfClass для копирования UIButton?
Спасибо.