首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Cocoa NSArray/NSSet:-makeObjectsPerformSelector:与快速枚举

在云计算领域,Cocoa是一个广泛使用的框架,它提供了许多常用的类和方法,可以帮助开发者更轻松地编写代码。NSArray和NSSet是Cocoa中的两个重要的数据结构,它们可以存储一组对象,并提供了许多方法来操作这些对象。

-makeObjectsPerformSelector:是一个NSArray和NSSet的方法,它可以让数组或集合中的每个对象都执行指定的方法。这个方法非常适合于需要对一组对象执行相同操作的情况,可以大大简化代码,提高代码的可读性和可维护性。

例如,假设我们有一个NSArray对象,它包含了多个NSString对象,我们想要对这些字符串进行排序,可以使用-makeObjectsPerformSelector:方法来实现:

代码语言:txt
复制
NSArray *strings = @[@"hello", @"world", @"foo", @"bar"];
[strings makeObjectsPerformSelector:@selector(sort)];

这段代码会让数组中的每个字符串对象都执行sort方法,从而实现对字符串的排序。

需要注意的是,-makeObjectsPerformSelector:方法要求数组或集合中的每个对象都必须实现指定的方法,否则会抛出异常。因此,在使用这个方法时,需要确保每个对象都实现了指定的方法。

总之,Cocoa中的NSArray和NSSet提供了丰富的方法来操作对象,-makeObjectsPerformSelector:是其中一个非常有用的方法,可以帮助开发者简化代码,提高代码的可读性和可维护性。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

NSSet类型 以及NSArray区别

NSSet到底什么类型,其实它和NSArray功能性质一样,用于存储对象,属于集合; NSSet  , NSMutableSet类声明编程接口对象,无序的集合,在内存中存储方式是不连续的,不像NSArray...,NSDictionary(都是有序的集合)类声明编程接口对象是有序集合,在内存中存储位置是连续的;         NSSet和我们常用NSArry区别是:在搜索一个一个元素时NSSetNSArray...而对于NSArray,若想知道A到底在不在数组中,则需要便利整个数组,显然效率较低了;        NSSetNSArray都是类,只能添加cocoa对象,如果需要加入基本数据类型(int,float...判断集合是否是NSSet的子集 -(BOOL)intersectsSet:nsset 判断两个集合的交集是否至少存在一个元素 -(BOOL)isEqualToSet:nsset 判断两个集合是否相等...将nsset的所有元素添加到集合 -(void)minusSet:nsset 从集合中去掉所有的NSSet 的元素 -(void)interectSet:nsset 集合和NSSet 做交集运算

1.4K110

OC学习13——Foundation框架中的集合

进行遍历: objectEnumerator:返回NSArray集合的顺序枚举器 reverseObjectEnumerator:返回NSArray集合的逆序顺序枚举快速枚举(for...in) 上面两个方法都返回一个...NSSetNSArray的相同点: 都可以通过count方法获取集合元素的数量 都可以通过快速枚举进行遍历 都可以通过objectEnumerator方法获取NSEnumerator枚举器对集合元素进行遍历...由于NSSet是无序的,所以提供反向枚举器也没有什么意义 都提供makeObjectsPerformSelector:、makeObjectsPerformSelector:withObject::对集合元素整体调用某个方法...[NSMutableString 7 stringWithString:@"["]; 8 // 使用快速枚举遍历NSSet集合 9 for(id obj in...[NSMutableString 7 stringWithString:@"["]; 8 // 使用快速枚举遍历NSSet集合 9 for(id obj in

2.1K80
  • 【IOS 开发】Objective-C Foundation 框架 -- 字符串 | 日期 | 对象复制 | NSArray | NSSet | NSDictionary | 谓词

    NSArray 快速枚举 (1) NSArray 快速枚举 快速枚举简介 : 快速枚举无需获取集合长度, 也不用根据索引访问集合元素; -- 语法 :  for (id object in array)...{ //对 object 进行操作 } (2) NSArray 快速枚举示例 NSArray 快速枚举示例 :  -- main.m :  // // main.m // 04.NSArray...调用 count 方法获取集合元素数量; -- 快速枚举 : 都可以通过 for (id object in collection) 快速枚举来遍历元素; -- 枚举器 : 都可以通过 objectEnumerator...NSArray 快速枚举 (1) NSArray 快速枚举 快速枚举简介 : 快速枚举无需获取集合长度, 也不用根据索引访问集合元素; -- 语法 :  for (id object in array)...{ //对 object 进行操作 } (2) NSArray 快速枚举示例 NSArray 快速枚举示例 :  -- main.m :  // // main.m // 04.NSArray

    1.3K20

    iOS开发:NSSet的使用

    集合和数组的相同点:都是存储不同元素的地址,不同点:NSSet中的元素都是被自动过滤之后的不会重复的元素,NSArray中的元素却是允许重复的;NSSet是一个无顺序的集合,NSArray是一个有顺序的集合...相对来说,NSSet的处理效率比NSArray的要快。 本节内容就来简单的介绍一下NSSet的使用,并且会举一个实际使用案例来展示。...//取出并集1,2,3,4,5 [mSet1 intersectSet:mSet2]; //取交集1 [mSet1 minusSet:mSet2]; //删除mSet1中mSet2...”,@“e”, nil]; BOOL ret2 = [set2 isSubsetOfSet:set3]; //判断set2是否是set3的子集合 6、集合用枚举器来遍历 NSEnumerator...*array1 = [[NSArray alloc] initWithObjects:@“1”,@“2”,@“3”,@“4”, nil]; NSSet *set = [[NSSet alloc]

    1.6K64

    Objective-C之NSArray学习笔记(IOS 9.1)

    *)otherArray //返回消息接收者otherArray第一个相同的元素 ---- 添加新元素到数组(间接添加,返回一个新数组) - (NSArray<ObjectType...anObject // ii: 指定的方法发生波及作用(就是改变数组之类的操作) //iii: 如果没有指定的方法会抛出NSInvalidArgumentException异常 ---- 数组的文件输入输出操作...,如:“.jpg” ---- 数组的遍历 - (NSEnumerator *)objectEnumerator //返回一个枚举器,用于遍历数组 ---- 数组,小试牛刀 //Xcode...@[@"1",@"2",@YES],@2.0f];//快速生成数组,只能用在NSArray处,因为生成的数组是不可变的 //3.1 元素的数量 NSLog(@"arry3...:@selector(oneTest:) withObject:@7]; //8.数组对象文件操作 //8.1 根据plist文件来创建数组

    65520

    iOS数组排序方法

    二叉树 快速排序 当然,作为ios开发者,什么冒泡排序,堆排序,快速排序等等,好像都与我们无关, 因为我们有“sort”尚方宝剑。...NSComparisonResult) {NSOrderedAscending = -1L, NSOrderedSame, NSOrderedDescending}; NSComparisonResult为枚举类型...     return NSOrderedAscending;   }   else   {      return NSOrderedDescending;   } } 使用NSDescriptor排序(NSSet...,NSArray,NSMutableArray) 单关键字排序 NSMutableArray *array = [NSMutableArray array]; NSSortDescriptor...快速排序 快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此我们也对比以一下快排的表现,下面是快排的代码(摘自网友,感谢): void quickSort(NSMutableArray

    1.2K30

    《Effective Objective-C》干货三部曲(二):规范篇

    第3条:多用字面量语法,少用之等价的方法 1. 声明时的字面量语法: 在声明NSNumber,NSArray,NSDictionary时,应该尽量使用简洁字面量语法。...利用快速遍历: NSArray *anArray = /* ... */; for (id object in anArray) { // Do something with 'object' }...// Do something with 'object' if (shouldStop) { *stop = YES; } 我们可以看到,在使用块进行快速枚举的时候...虽然语法上没有快速枚举简洁,但是我们可以获得数组元素对应的序号,字典元素对应的键值,而且,我们还可以随时令遍历终止。...利用快速枚举和块的枚举还有一个优点:能够修改块的方法签名 for (NSString *key in aDictionary) { NSString *object = (NSString

    91321

    《Effective Objective-C》干货三部曲(二):规范篇

    第3条:多用字面量语法,少用之等价的方法 1. 声明时的字面量语法: 在声明NSNumber,NSArray,NSDictionary时,应该尽量使用简洁字面量语法。...利用快速遍历: NSArray *anArray = /* ... */; for (id object in anArray) { // Do something with 'object' }...{ // Do something with 'object' if (shouldStop) { *stop = YES; } 我们可以看到,在使用块进行快速枚举的时候...虽然语法上没有快速枚举简洁,但是我们可以获得数组元素对应的序号,字典元素对应的键值,而且,我们还可以随时令遍历终止。...利用快速枚举和块的枚举还有一个优点:能够修改块的方法签名 for (NSString *key in aDictionary) { NSString *object = (NSString

    81910

    touchesBegan 触摸事件一、概念介绍二、方法介绍三、参数介绍:touches四、参数介绍:event

    ,通过forin循环来遍历NSSet中的每一个元素 当用户用一根手指触摸屏幕时,会创建一个手指相关联的UITouch对象, 保存着跟本次手指触摸相关的信息,比如触摸的位置、时间、阶段, 当手指离开屏幕时...UITouchPhaseCancelled 触摸中断 (6)触摸类型 @property(nonatomic,readonly) UITouchType type; UITouchType 枚举...majorRadiusTolerance; (8)获取触摸手势 @property(nullable,nonatomic,readonly,copy) NSArray <UIGestureRecognizer...,还可以提供特定视图或窗口相关联的触摸对象。...属性: (1)获取事件类型 @property(nonatomic,readonly) UIEventType type; UIEventType枚举: UIEventTypeTouches 触摸事件

    2.5K100
    领券