Я не вижу способа скопировать NSView и создать идентичный объект NSView. Я вижу хиты Google об "использовании NSData", но я не понимаю это.
Чтобы прямо "скопировать" NSView, представление должно реализовать протокол NSCopying
. К сожалению, NSView этого не делает.
К счастью, он реализует протокол NSCoding
, что означает, что мы можем дублировать представление следующим образом:
NSData * archivedView = [NSKeyedArchiver archivedDataWithRootObject:myView];
NSView * myViewCopy = [NSKeyedUnarchiver unarchiveObjectWithData:archivedView];
И вуаля! Теперь у вас есть дубликат myView
.
Edit: (Swift version)
let archivedView = NSKeyedArchiver.archivedData(withRootObject: myView)
let myViewCopy = NSKeyedUnarchiver.unarchiveObject(with: archivedView)
(archivedView
имеет тип Data
, а не NSData
)