Скопируйте NSView в какао / цель-c

Я не вижу способа скопировать NSView и создать идентичный объект NSView. Я вижу хиты Google об "использовании NSData", но я не понимаю это.

13
задан Nektarios 24 June 2010 в 05:26
поделиться

1 ответ

Чтобы прямо "скопировать" 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)

25
ответ дан 1 December 2019 в 21:37
поделиться