NSObject+Lookin.h 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. //
  2. // NSObject+Lookin.h
  3. // Lookin
  4. //
  5. // Created by Li Kai on 2018/12/22.
  6. // https://lookin.work
  7. //
  8. #import "LookinDefines.h"
  9. #import <Foundation/Foundation.h>
  10. #import "LookinCodingValueType.h"
  11. @interface NSObject (Lookin)
  12. #pragma mark - Data Bind
  13. /**
  14. 给对象绑定上另一个对象以供后续取出使用,如果 object 传入 nil 则会清除该 key 之前绑定的对象
  15. @attention 被绑定的对象会被 strong 强引用
  16. @note 内部是使用 objc_setAssociatedObject / objc_getAssociatedObject 来实现
  17. @code
  18. - (UITableViewCell *)cellForIndexPath:(NSIndexPath *)indexPath {
  19. // 1)在这里给 button 绑定上 indexPath 对象
  20. [cell lookin_bindObject:indexPath forKey:@"indexPath"];
  21. }
  22. - (void)didTapButton:(UIButton *)button {
  23. // 2)在这里取出被点击的 button 的 indexPath 对象
  24. NSIndexPath *indexPathTapped = [button lookin_getBindObjectForKey:@"indexPath"];
  25. }
  26. @endcode
  27. */
  28. - (void)lookin_bindObject:(id)object forKey:(NSString *)key;
  29. /**
  30. 给对象绑定上另一个对象以供后续取出使用,但相比于 lookin_bindObject:forKey:,该方法不会 strong 强引用传入的 object
  31. */
  32. - (void)lookin_bindObjectWeakly:(id)object forKey:(NSString *)key;
  33. /**
  34. 取出之前使用 bind 方法绑定的对象
  35. */
  36. - (id)lookin_getBindObjectForKey:(NSString *)key;
  37. /**
  38. 给对象绑定上一个 double 值以供后续取出使用
  39. */
  40. - (void)lookin_bindDouble:(double)doubleValue forKey:(NSString *)key;
  41. /**
  42. 取出之前用 lookin_bindDouble:forKey: 绑定的值
  43. */
  44. - (double)lookin_getBindDoubleForKey:(NSString *)key;
  45. /**
  46. 给对象绑定上一个 BOOL 值以供后续取出使用
  47. */
  48. - (void)lookin_bindBOOL:(BOOL)boolValue forKey:(NSString *)key;
  49. /**
  50. 取出之前用 lookin_bindBOOL:forKey: 绑定的值
  51. */
  52. - (BOOL)lookin_getBindBOOLForKey:(NSString *)key;
  53. /**
  54. 给对象绑定上一个 long 值以供后续取出使用
  55. */
  56. - (void)lookin_bindLong:(long)longValue forKey:(NSString *)key;
  57. /**
  58. 取出之前用 lookin_bindLong:forKey: 绑定的值
  59. */
  60. - (long)lookin_getBindLongForKey:(NSString *)key;
  61. /**
  62. 给对象绑定上一个 CGPoint 值以供后续取出使用
  63. */
  64. - (void)lookin_bindPoint:(CGPoint)pointValue forKey:(NSString *)key;
  65. /**
  66. 取出之前用 lookin_bindPoint:forKey: 绑定的值
  67. */
  68. - (CGPoint)lookin_getBindPointForKey:(NSString *)key;
  69. /**
  70. 移除之前使用 bind 方法绑定的对象
  71. */
  72. - (void)lookin_clearBindForKey:(NSString *)key;
  73. @end
  74. @interface NSObject (Lookin_Coding)
  75. /// 会把 NSImage/UIImage 转换为 NSData,把 NSColor/UIColor 转换回 NSNumber 数组(rgba)
  76. - (id)lookin_encodedObjectWithType:(LookinCodingValueType)type;
  77. /// 会把 NSData 转换回 NSImage/UIImage,把 NSNumber 数组(rgba) 转换为 NSColor/UIColor
  78. - (id)lookin_decodedObjectWithType:(LookinCodingValueType)type;
  79. @end