Guest User

Untitled

a guest
May 25th, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.90 KB | None | 0 0
  1. import Foundation
  2.  
  3. class ProductFactory: NSObject, NSCopying {
  4. var items = 8
  5.  
  6. func copy(with zone: NSZone? = nil) -> Any {
  7. return ProductFactory()
  8. }
  9. }
  10.  
  11. struct Product {
  12. let identifier: Int
  13. let name: String
  14. private var _factory = ProductFactory()
  15.  
  16. init(identifier: Int, name: String) {
  17. self.identifier = identifier
  18. self.name = name
  19. }
  20.  
  21. var getFactory: ProductFactory {
  22. return _factory
  23. }
  24.  
  25. var setFactory: ProductFactory {
  26. mutating get {
  27. if !isKnownUniquelyReferenced(&factory) {
  28. _factory = factory.copy() as! ProductFactory
  29. }
  30. return _factory
  31. }
  32.  
  33. }
  34. }
  35.  
  36.  
  37. let productA = Product(identifier: 234, name: "electronics")
  38.  
  39. var productB = productA
  40.  
  41. productB.setFactory.items = 4
  42.  
  43. print("product A items \(productA.getFactory.items)")
  44. print("product B items \(productB.getFactory.items)")
Add Comment
Please, Sign In to add comment