NSArray

来源:互联网 发布:sql replace替换多个 编辑:程序博客网 时间:2024/06/05 20:57
iOS——NSArray
/* NSArray.h
Copyright (c) 1994-2015, Apple Inc. All rights reserved.
*/


#import <Foundation/NSObject.h>
#import
 <Foundation/NSEnumerator.h>
#import
 <Foundation/NSRange.h>
#import
 <Foundation/NSObjCRuntime.h>

@class NSData, NSIndexSet, NSString, NSURL;

/**************** Immutable Array ****************/

NS_ASSUME_NONNULL_BEGIN

@interface NSArray<__covariant ObjectType> : NSObject <NSCopying,NSMutableCopying,NSSecureCoding,NSFastEnumeration>

@property(readonly)NSUIntegercount;
- (ObjectType)objectAtIndex:(NSUInteger)index;//获取数组中索引为index的元素
- (instancetype)initNS_DESIGNATED_INITIALIZER;
- (
instancetype)initWithObjects:(constObjectType [])objects count:(NSUInteger)cntNS_DESIGNATED_INITIALIZER;
- (
nullable instancetype)initWithCoder:(NSCoder*)aDecoderNS_DESIGNATED_INITIALIZER;

@end

@interface NSArray<ObjectType> (NSExtendedArray)

- (NSArray<ObjectType> *)arrayByAddingObject:(ObjectType)anObject;//添加对象到数组最后一个元素
- (NSArray<ObjectType> *)arrayByAddingObjectsFromArray:(NSArray<ObjectType> *)otherArray;//将otherArray数组的元素添加到数组的末尾
- (NSString*)componentsJoinedByString:(NSString*)separator;//将数组元素用separator分隔符连接成一个字符串
- (BOOL)containsObject:(ObjectType)anObject;//判断数组中是否包含某个对象
@property(readonly,copy)NSString*description;
- (
NSString *)descriptionWithLocale:(nullableid)locale;//遍历数组中的所有内容 将内容拼接成一个新的字符串返回
- (
NSString *)descriptionWithLocale:(nullableid)locale indent:(NSUInteger)level;//获取第一个包含于另一个数组中的元素
- (nullableObjectType)firstObjectCommonWithArray:(NSArray<ObjectType> *)otherArray;
- (void)getObjects:(ObjectType__unsafe_unretained[])objects range:(NSRange)range;//将数组中一定范围的元素读取到一个C数组中 objects参数需要为分配好空间的C指针
- (NSUInteger)indexOfObject:(ObjectType)anObject;//得到对象anObject在数组中的索引
- (NSUInteger)indexOfObject:(ObjectType)anObject inRange:(NSRange)range;//获取某个范围内的元素的下标值
- (NSUInteger)indexOfObjectIdenticalTo:(ObjectType)anObject;//获取与给定元素相同的元素在数组中的最小下标值


- (NSUInteger)indexOfObjectIdenticalTo:(ObjectType)anObject inRange:(NSRange)range;//在一定范围内 获取与给定元素相同的元素在数组中的最小下标值
- (BOOL)isEqualToArray:(NSArray<ObjectType> *)otherArray;//判断两个数组是否相同
@property(nullable,nonatomic,readonly) ObjectType firstObjectNS_AVAILABLE(10_6,4_0);//获取数组中第一个元素

@property(nullable,nonatomic,readonly) ObjectType lastObject;//获取数组中最后一个元素

- (NSEnumerator<ObjectType> *)objectEnumerator;//得到数组的枚举对象
- (NSEnumerator<ObjectType> *)reverseObjectEnumerator;//得到数组的反序枚举对象
@property(readonly,copy)NSData*sortedArrayHint;
- (
NSArray<ObjectType> *)sortedArrayUsingFunction:(NSInteger(*)(ObjectType, ObjectType, void * __nullable))comparator context:(nullablevoid*)context;
- (
NSArray<ObjectType> *)sortedArrayUsingFunction:(NSInteger(*)(ObjectType, ObjectType, void * __nullable))comparator context:(nullablevoid*)context hint:(nullableNSData*)hint;
- (NSArray<ObjectType> *)sortedArrayUsingSelector:(SEL)comparator;//使用comparator比较方法对数组进行排序
- (NSArray<ObjectType> *)subarrayWithRange:(NSRange)range;//获取数组一定范围的子数组

- (BOOL)writeToFile:(NSString*)path atomically:(BOOL)useAuxiliaryFile;//将数组写入文件

- (BOOL)writeToURL:(NSURL*)url atomically:(BOOL)atomically;//将数组写入指定url路径

- (void)makeObjectsPerformSelector:(SEL)aSelectorNS_SWIFT_UNAVAILABLE("Use enumerateObjectsUsingBlock: or a for loop instead");//是数组中的所有元素调用某个方法选择器

- (void)makeObjectsPerformSelector:(SEL)aSelector withObject:(nullableid)argumentNS_SWIFT_UNAVAILABLE("Use enumerateObjectsUsingBlock: or a for loop instead");//是数组中的所有元素调用某个方法选择器
- (NSArray<ObjectType> *)objectsAtIndexes:(NSIndexSet*)indexes;//获取一个下标集合所对应的元素
- (ObjectType)objectAtIndexedSubscript:(NSUInteger)idxNS_AVAILABLE(10_8,6_0);//数组的下标方法 子类重写

- (void)enumerateObjectsUsingBlock:(void(^)(ObjectType obj, NSUInteger idx, BOOL *stop))block NS_AVAILABLE(10_6,4_0);//对数组中的元素进行枚举遍历

- (void)enumerateObjectsWithOptions:(NSEnumerationOptions)opts usingBlock:(void(^)(ObjectType obj,NSUInteger idx, BOOL*stop))block NS_AVAILABLE(10_6,4_0);
- (
void)enumerateObjectsAtIndexes:(NSIndexSet*)s options:(NSEnumerationOptions)opts usingBlock:(void(^)(ObjectType obj,NSUInteger idx, BOOL *stop))block NS_AVAILABLE(10_6,4_0);

- (NSUInteger)indexOfObjectPassingTest:(BOOL(^)(ObjectType obj,NSUInteger idx, BOOL *stop))predicateNS_AVAILABLE(10_6,4_0);//通过遍历的方式查找符合条件的元素下标

- (NSUInteger)indexOfObjectWithOptions:(NSEnumerationOptions)opts passingTest:(BOOL(^)(ObjectType obj,NSUInteger idx,BOOL *stop))predicate NS_AVAILABLE(10_6,4_0);
- (
NSUInteger)indexOfObjectAtIndexes:(NSIndexSet*)s options:(NSEnumerationOptions)opts passingTest:(BOOL(^)(ObjectType obj,NSUInteger idx, BOOL *stop))predicate NS_AVAILABLE(10_6,4_0);

- (NSIndexSet*)indexesOfObjectsPassingTest:(BOOL(^)(ObjectType obj, NSUInteger idx, BOOL *stop))predicateNS_AVAILABLE(10_6,4_0);//通过遍历的方式查找所有符合条件的元素下标
- (NSIndexSet*)indexesOfObjectsWithOptions:(NSEnumerationOptions)opts passingTest:(BOOL(^)(ObjectType obj,NSUIntegeridx, BOOL *stop))predicate NS_AVAILABLE(10_6,4_0);
- (NSIndexSet*)indexesOfObjectsAtIndexes:(NSIndexSet*)s options:(NSEnumerationOptions)opts passingTest:(BOOL(^)(ObjectType obj,NSUInteger idx, BOOL *stop))predicate NS_AVAILABLE(10_6,4_0);

- (NSArray<ObjectType> *)sortedArrayUsingComparator:(NSComparator)cmptrNS_AVAILABLE(10_6,4_0);//通过block进行数组排序
- (NSArray<ObjectType> *)sortedArrayWithOptions:(NSSortOptions)opts usingComparator:(NSComparator)cmptrNS_AVAILABLE(10_6,4_0);

typedef NS_OPTIONS(NSUInteger, NSBinarySearchingOptions) {
NSBinarySearchingFirstEqual = (
1UL <<8),
NSBinarySearchingLastEqual = (
1UL <<9),
NSBinarySearchingInsertionIndex = (
1UL <<10),
};

- (
NSUInteger)indexOfObject:(ObjectType)obj inSortedRange:(NSRange)r options:(NSBinarySearchingOptions)opts usingComparator:(NSComparator)cmpNS_AVAILABLE(10_6,4_0);// binary search

@end

@interface NSArray<ObjectType> (NSArrayCreation)

+ (instancetype)array;//创建对象
+ (instancetype)arrayWithObject:(ObjectType)anObject;//通过一个元素创建数组对象
+ (instancetype)arrayWithObjects:(constObjectType [])objects count:(NSUInteger)cnt;//通过C数组创建数组对象
+ (instancetype)arrayWithObjects:(ObjectType)firstObj, ...NS_REQUIRES_NIL_TERMINATION;//通过一组元素创建数组对象
+ (instancetype)arrayWithArray:(NSArray<ObjectType> *)array;//通过另一个数组创建数组对象
- (instancetype)initWithObjects:(ObjectType)firstObj, ...NS_REQUIRES_NIL_TERMINATION;//初始化方法
- (instancetype)initWithArray:(NSArray<ObjectType> *)array;//初始化方法
- (instancetype)initWithArray:(NSArray<ObjectType> *)array copyItems:(BOOL)flag;//初始化方法
+ (nullableNSArray<ObjectType> *)arrayWithContentsOfFile:(NSString*)path;//通过文件创建数组
+ (nullableNSArray<ObjectType> *)arrayWithContentsOfURL:(NSURL*)url;//通过url创建数组
- (nullableNSArray<ObjectType> *)initWithContentsOfFile:(NSString*)path;//通过文件l创建数组
- (nullableNSArray<ObjectType> *)initWithContentsOfURL:(NSURL*)url;//通过url创建数组

@end

@interface NSArray<ObjectType> (NSDeprecated)

/* This method is unsafe because it could potentially cause buffer overruns. You should use -getObjects:range: instead.
*/
- (void)getObjects:(ObjectType__unsafe_unretained[])objects;//获取数组所有元素 需要传入分配了内存的C指针

@end

/**************** Mutable Array ****************/

@interface NSMutableArray<ObjectType> : NSArray<ObjectType>

- (void)addObject:(ObjectType)anObject;//添加元素
- (void)insertObject:(ObjectType)anObject atIndex:(NSUInteger)index;//插入元素anObject到索引为index的位置上
- (void)removeLastObject;//删除数组中最后一个元素
- (void)removeObjectAtIndex:(NSUInteger)index;//移除数组中索引为index的元素
- (void)replaceObjectAtIndex:(NSUInteger)index withObject:(ObjectType)anObject;//将索引为index的元素替换为anObject对象
- (instancetype)initNS_DESIGNATED_INITIALIZER;//初始化
- (instancetype)initWithCapacity:(NSUInteger)numItemsNS_DESIGNATED_INITIALIZER;
- (
nullable instancetype)initWithCoder:(NSCoder*)aDecoderNS_DESIGNATED_INITIALIZER;

@end

@interface NSMutableArray<ObjectType> (NSExtendedMutableArray)
   
- (void)addObjectsFromArray:(NSArray<ObjectType> *)otherArray;//通过数组来追加元素
- (void)exchangeObjectAtIndex:(NSUInteger)idx1 withObjectAtIndex:(NSUInteger)idx2;//将索引为idx1的元素和索引为idx2的元素相互交换
- (void)removeAllObjects;//删除数组中所有元素
- (void)removeObject:(ObjectType)anObject inRange:(NSRange)range;//在一定范围内删除元素
- (void)removeObject:(ObjectType)anObject;//移除数组中和anObject一样的元素
- (void)removeObjectIdenticalTo:(ObjectType)anObject inRange:(NSRange)range;//删除指定范围内下标最小的某个元素
- (void)removeObjectIdenticalTo:(ObjectType)anObject;//删除某个元素 下标最小的
- (void)removeObjectsFromIndices:(NSUInteger*)indices numIndices:(NSUInteger)cntNS_DEPRECATED(10_0,10_6,2_0,4_0);//删除一定范围内的所有元素
- (void)removeObjectsInArray:(NSArray<ObjectType> *)otherArray;//通过数组删除元素
- (void)removeObjectsInRange:(NSRange)range;//通过范围删除元素
- (void)replaceObjectsInRange:(NSRange)range withObjectsFromArray:(NSArray<ObjectType> *)otherArray range:(NSRange)otherRange;//替换一组元素
- (void)replaceObjectsInRange:(NSRange)range withObjectsFromArray:(NSArray<ObjectType> *)otherArray;//替换一组元素
- (void)setArray:(NSArray<ObjectType> *)otherArray;//将数组内容替换为otherArray数组
- (void)sortUsingFunction:(NSInteger(*)(ObjectType,  ObjectType, void * __nullable))compare context:(nullablevoid*)context;//进行数组排序
- (void)sortUsingSelector:(SEL)comparator;//使用comparator比较方法进行排序
- (void)insertObjects:(NSArray<ObjectType> *)objects atIndexes:(NSIndexSet*)indexes;//插入一组元素
- (void)removeObjectsAtIndexes:(NSIndexSet*)indexes;//删除一组元素
- (void)replaceObjectsAtIndexes:(NSIndexSet*)indexes withObjects:(NSArray<ObjectType> *)objects;//替换一组元素
- (void)setObject:(ObjectType)obj atIndexedSubscript:(NSUInteger)idxNS_AVAILABLE(10_8,6_0);//设置某个下标对应的元素 子类覆写
- (void)sortUsingComparator:(NSComparator)cmptrNS_AVAILABLE(10_6,4_0);//进行数组排序
- (void)sortWithOptions:(NSSortOptions)opts usingComparator:(NSComparator)cmptrNS_AVAILABLE(10_6,4_0);//进行数组排序

@end

@interface NSMutableArray<ObjectType> (NSMutableArrayCreation)

+ (instancetype)arrayWithCapacity:(NSUInteger)numItems;//创建数组 numItems为元素个数

+ (nullableNSMutableArray<ObjectType> *)arrayWithContentsOfFile:(NSString*)path;//通过文件创建数组
+ (nullableNSMutableArray<ObjectType> *)arrayWithContentsOfURL:(NSURL*)url;//通过url创建数组
- (nullableNSMutableArray<ObjectType> *)initWithContentsOfFile:(NSString*)path;
- (nullableNSMutableArray<ObjectType> *)initWithContentsOfURL:(NSURL*)url;

@end

NS_ASSUME_NONNULL_END
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 平常成绩好期末却考不好怎么办 初中生去国外上学国内的学校怎么办 孩子在学校不受老师的重视怎么办 孩子上二年级了不爱学习怎么办 接别人的班被学生讨厌怎么办 孩子在学校老师打孩子家长怎么办? 宝宝不听话我老忍不住打他怎么办 两岁宝宝断母乳不愿意喝奶粉怎么办 2岁半的宝宝叛逆不听话怎么办? 2岁半宝宝说什么不听话怎么办? 误把脱毛膏当牙膏用了刷牙怎么办 儿子1岁5个月了不说话怎么办 两岁小儿不会说话和智商低怎么办 宝宝不会说话教他说他不愿意怎么办 25个月宝宝不愿意学说话怎么办 老师说小孩在幼儿园老是说话怎么办 在外留学想领养一个外国小孩怎么办 三岁半的宝宝想去美国上学怎么办 农村新房边的老老祖坟不搬怎么办 倒西太阳晒的房子夏天很热怎么办 客厅壁纸用的浅灰色影视墙怎么办 我喜欢玩手机游戏妈妈很生气怎么办 家里墙上有很多白色的虫子怎么办 3岁半宝宝学数字学不会怎么办 小孩子读一年级拼音读不好要怎么办 4个月的婴儿恶心干呕怎么办 生了小孩后胆汁酸偏高怎么办 9个月宝宝吃盐了怎么办 两个月宝宝母乳拉大便太稀怎么办呀 两个月的宝宝不拉大便怎么办 两个月宝宝五天没拉大便怎么办 4个月宝宝不拉大便怎么办 2个月宝宝3天没拉大便怎么办 宝宝拉不出大便老是憋的哭怎么办 九个月的宝宝不爱吃水果怎么办 顺产侧切伤口发炎化脓有臭味怎么办 一岁宝宝感冒发烧39度怎么办 宝宝二岁半了只吃水果不吃饭怎么办 8个月小孩发烧39度怎么办 咳嗽吃了很多药都不见效果怎么办 生完孩子半个月奶水越来越少怎么办