Advertisement
dimitar-petrov

didSet behaviour

Jul 30th, 2020
781
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 1.32 KB | None | 0 0
  1. print("--- Example 1 ---")
  2. protocol MyProtocol {
  3.     var property: AnyObject? { get set }
  4. }
  5.  
  6. protocol MyClassProtocol: class {
  7.     var property: AnyObject? { get set }
  8. }
  9.  
  10. class MyViewController: UIViewController {
  11.     var viewModel: ClassA! {
  12. //    var viewModel: MyProtocol! {
  13. //    var viewModel: MyClassProtocol! {
  14.         didSet {
  15.             print("didSet viewModel")
  16.         }
  17.     }
  18. }
  19.  
  20. class ClassA: MyProtocol, MyClassProtocol {
  21.     var property: AnyObject? {
  22.         didSet {
  23.             print("didSet property in ClassA")
  24.         }
  25.     }
  26. }
  27.  
  28. class ClassB {}
  29.  
  30. let vc = MyViewController()
  31. vc.viewModel = ClassA()
  32. vc.viewModel.property = ClassB()
  33.  
  34.  
  35.  
  36.  
  37. print("\n--- Example 2 ---")
  38. class SecondViewController: UIViewController {
  39.     var valueTypeProperty: StructA! {
  40.         didSet {
  41.             print("didSet valueTypeProperty")
  42.         }
  43.     }
  44. }
  45.  
  46. struct StructA {
  47.     var property: Int? {
  48.         didSet {
  49.             print("didSet property in StructA")
  50.         }
  51.     }
  52.    
  53.     var referenceProperty: ClassB? {
  54.         didSet {
  55.             print("didSet reference property in StructA")
  56.         }
  57.     }
  58. }
  59.  
  60. let secondVC = SecondViewController()
  61. secondVC.valueTypeProperty = StructA()
  62. secondVC.valueTypeProperty.property = 42
  63. secondVC.valueTypeProperty.referenceProperty = ClassB()
  64.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement