CLSafeMutableArray.h 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. //
  2. // CLSafeMutableArray.h
  3. // BuguLive
  4. //
  5. // Created by xfg on 2017/3/13.
  6. // Copyright © 2017年 xfg. All rights reserved.
  7. //
  8. #import <Foundation/Foundation.h>
  9. #include <pthread.h>
  10. #import <libkern/OSAtomic.h>
  11. #import <objc/message.h>
  12. @interface CLSafeMutableArray : NSObject
  13. {
  14. @protected
  15. // pthread_mutex_t _mutex;
  16. NSMutableArray *_safeArray;
  17. OSSpinLock _lock;
  18. }
  19. @property (nonatomic, strong) NSMutableArray *safeArray;
  20. - (id)objectAtIndex:(NSUInteger)index;
  21. - (BOOL)containsObject:(id)anObject;
  22. - (NSUInteger)indexOfObject:(id)obj;
  23. - (void)addObject:(id)anObject;
  24. - (void)insertObject:(id)anObject atIndex:(NSUInteger)index;
  25. - (void)removeLastObject;;
  26. - (void)removeObjectAtIndex:(NSUInteger)index;;
  27. - (void)replaceObjectAtIndex:(NSUInteger)index withObject:(id)anObject;
  28. - (void)insertObjectsFromArray:(NSArray *)otherArray atIndex:(NSInteger)index;
  29. - (void)addObjectsFromArray:(NSArray *)otherArray;
  30. - (void)exchangeObjectAtIndex:(NSUInteger)idx1 withObjectAtIndex:(NSUInteger)idx2;
  31. - (void)removeAllObjects;
  32. - (void)removeObject:(id)anObject inRange:(NSRange)range;
  33. - (void)removeObject:(id)anObject;
  34. - (void)removeObjectIdenticalTo:(id)anObject inRange:(NSRange)range;
  35. - (void)removeObjectIdenticalTo:(id)anObject;
  36. - (void)removeObjectsInArray:(NSArray *)otherArray;
  37. - (void)removeObjectsInRange:(NSRange)range;
  38. - (void)replaceObjectsInRange:(NSRange)range withObjectsFromArray:(NSArray *)otherArray range:(NSRange)otherRange;
  39. - (void)replaceObjectsInRange:(NSRange)range withObjectsFromArray:(NSArray *)otherArray;
  40. - (void)setArray:(NSArray *)otherArray;
  41. - (void)subArrayWithRange:(NSRange)range;
  42. - (void)insertObjects:(NSArray *)objects atIndexes:(NSIndexSet *)indexes;
  43. - (void)removeObjectsAtIndexes:(NSIndexSet *)indexes;
  44. - (void)replaceObjectsAtIndexes:(NSIndexSet *)indexes withObjects:(NSArray *)objects;
  45. - (void)setObject:(id)obj atIndexedSubscript:(NSUInteger)idx;
  46. - (NSInteger)count;
  47. @end
  48. // 增加去重操作
  49. @interface CLSafeSetArray : CLSafeMutableArray
  50. @end