Objective C实现类似C++, Java中的范型(三)

2014-11-24 03:21:52 · 作者: · 浏览: 2
S_REQUIRES_NIL_TERMINATION; \ + (NSSet<__className>*)setWithSet:(NSSet<__className>*)set; \ + (NSSet<__className>*)setWithArray:(NSArray<__className>*)array; \ \ - (NSSet<__className>*)initWithObjects:(const id [])objects count:(NSUInteger)cnt; \ - (NSSet<__className>*)initWithObjects:(__className*)firstObj, ... NS_REQUIRES_NIL_TERMINATION; \ - (NSSet<__className>*)initWithSet:(NSSet<__className>*)set; \ - (NSSet<__className>*)initWithSet:(NSSet<__className>*)set copyItems:(BOOL)flag; \ - (NSSet<__className>*)initWithArray:(NSArray<__className>*)array; \ \ @end \ \ @interface NSMutableSet (__className##_NSMutableSet_Generics) <__className> \ \ - (void)addObject:(__className*)object; \ - (void)removeObject:(__className*)object; \ - (void)addObjectsFromArray:(NSArray<__className>*)array; \ - (void)intersectSet:(NSSet<__className>*)otherSet; \ - (void)minusSet:(NSSet<__className>*)otherSet; \ - (void)unionSet:(NSSet<__className>*)otherSet; \ \ - (void)setSet:(NSSet<__className>*)otherSet; \ + (NSSet<__className>*)setWithCapacity:(NSUInteger)numItems; \ - (NSSet<__className>*)initWithCapacity:(NSUInteger)numItems; \ \ @end \ \ @interface NSCountedSet (__className##_NSCountedSet_Generics) <__className> \ \ - (NSSet<__className>*)initWithCapacity:(NSUInteger)numItems; \ - (NSSet<__className>*)initWithArray:(NSArray<__className>*)array; \ - (NSSet<__className>*)initWithSet:(NSSet<__className>*)set; \ - (NSUInteger)countForObject:(__className*)object; \ - (NSEnumerator<__className>*)objectEnumerator; \ - (void)addObject:(__className*)object; \ - (void)removeObject:(__className*)object; \ \ @end \ #if NS_BLOCKS_AVAILABLE #define GENERICSABLEWITHBLOCKS(__className) \ \ @interface NSMutableArray (__className##_NSMutableArray_BLOCKS_Generics) <__className> \ - (void)sortUsingComparator:(__className##Comparator)cmptr NS_AVAILABLE(10_6, 4_0); \ - (void)sortWithOptions:(NSSortOptions)opts usingComparator:(__className##Comparator)cmptr NS_AVAILABLE(10_6, 4_0); \ @end \ @interface NSSet (__className##_NSSet_BLOCKS_Generics) <__className> \ - (void)enumerateObjectsUsingBlock:(void (^)(__className* obj, BOOL *stop))block NS_AVAILABLE(10_6, 4_0); \ - (void)enumerateObjectsWithOptions:(NSEnumerationOptions)opts usingBlock:(void (^)(__className* obj, BOOL *stop))block NS_AVAILABLE(10_6, 4_0); \ - (NSSet<__className>*)objectsPassingTest:(BOOL (^)(__className* obj, BOOL *stop))predicate NS_AVAILABLE(10_6, 4_0); \ - (NSSet<__className>*)objectsWithOptions:(NSEnumerationOptions)opts passingTest:(BOOL (^)(__className* obj, BOOL *stop))predicate NS_AVAILABLE(10_6, 4_0); \ @end \ #endif

项目的github地址:https://github.com/tomersh/Objective-C-Generics