makeObjectsPerformSelector的使用
NSArray 类定义的方法:
makeObjectsPerformSelector:
这是数组用的方法,类似于for循环。
makeObjectsPerformSelector:@selector(method:)
意为数组中的每个元素都执行method方法
makeObjectsPerformSelector:@selector(method:) withObject:obj
表示数组中的每个元素都执行method方法,并把obj对象作为参数传到method方法中。
注意:
这是 NSArray和NSSet的两个方法,相信大家很少用,它类似于 for循环,但有效率高于for循环
makeObjectsPerformSelector:类似于NSNotifation机制,并发的执行同一件事,不能像for循环那样区别对待
所以参数 argument 必须是非基本类型 ,如果要是用基本类型 请转换程 NSNumber 或者NSValue。
用法:如果一个数组objArr中存储了一组有hide属性的对象,需要将数组里所有对象的hide全部赋值为真,就可以这么写:
[self.dataAray makeObjectsPerformSelector:@selector(setHidden:) withObject:@(NO)];
[self.dataAray makeObjectsPerformSelector:@selector(setHidden:)];
代码如下:
//
// ViewController.m
// Demo1
//
// Created by 思 彭 on 2017/4/6.
// Copyright © 2017年 思 彭. All rights reserved.
// #import "ViewController.h"
#import "Model.h" @interface ViewController () @property (nonatomic, strong) NSArray *dataAray; @end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad]; NSMutableArray *array = [NSMutableArray array];
for (NSInteger i = 0; i < 10; i++) {
Model *model = [[Model alloc]init];
model.hidden = YES;
[array addObject:model];
}
self.dataAray = [array copy]; NSLog(@"变换前的model:");
for (Model *model in self.dataAray) {
NSLog(@"%d",model.hidden);
}
UIButton *button = [UIButton buttonWithType: UIButtonTypeCustom];
button.frame = CGRectMake(100,100,100,50);
button.layer.borderColor = [UIColor lightGrayColor].CGColor;
button.layer.borderWidth = 0.5;
[button setTitle:@"变换" forState:UIControlStateNormal];
[button setTitleColor:[UIColor grayColor] forState:UIControlStateNormal];
button.titleLabel.font = [UIFont systemFontOfSize:14];
[button addTarget:self action:@selector(buttonDidClick) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button];
} - (void)buttonDidClick {
// [self.dataAray makeObjectsPerformSelector:@selector(setHidden:) withObject:@(NO)];
[self.dataAray makeObjectsPerformSelector:@selector(setHidden:)];
NSLog(@"变换后的model:");
for (Model *model in self.dataAray) {
NSLog(@"%d",model.hidden);
}
} @end
//
// Model.h
// Demo1
//
// Created by 思 彭 on 2017/4/6.
// Copyright © 2017年 思 彭. All rights reserved.
// #import <Foundation/Foundation.h> @interface Model : NSObject @property (nonatomic, assign) BOOL hidden; @end
实现效果打印如下:

这种方式还是很快捷呀,不过还是有局限...
makeObjectsPerformSelector的使用的更多相关文章
- 数组中的每一个对象执行一次方法:makeObjectsPerformSelector
1, 为数组中的每一个button添加点击事件: [_buttonArray makeObjectsPerformSelector:@selector(addTarget:self action:( ...
- makeObjectsPerformSelector: 方法的用法
//让数组中得每个元素都调用 @selector 中的get方法 [self.buttons makeObjectsPerformSelector:@selector(get)]; NSString ...
- makeObjectsPerformSelector对数组中的对象发送消息执行对象中方法
- (void)makeObjectsPerformSelector:(SEL)aSelector; - (void)makeObjectsPerformSelector:(SEL)aSelector ...
- makeObjectsPerformSelector用法
亲测 makeObjectsPerformSelector 的用法. - (void)makeObjectsPerformSelector:(SEL)aSelector NS_SWIFT_UNAVAI ...
- iOS 一个新方法:- (void)makeObjectsPerformSelector:(SEL)aSelector;
NSArray 里面的一个方法, - (void)makeObjectsPerformSelector:(SEL)aSelector: 这是一个类似于执行for循环的方法,可以这样用,当需要删除一个v ...
- 【原】FMDB源码阅读(一)
[原]FMDB源码阅读(一) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 说实话,之前的SDWebImage和AFNetworking这两个组件我还是使用过的,但是对于 ...
- iOS:小技巧(不断更新)
记录下一些不常用技巧,以防忘记,复制用. 1.获取当前的View在Window的frame: UIWindow * window=[[[UIApplication sharedApplication] ...
- 【转】iOS,搜索标签布局
前一阵时间,看过这样一个demo,代码不多,但是简洁易懂. 转自: // 代码地址: https://github.com/iphone5solo/PYSearch // 代码地址: http:/ ...
- iOS开发系列—Objective-C之Foundation框架
概述 我们前面的章节中就一直新建Cocoa Class,那么Cocoa到底是什么,它和我们前面以及后面要讲的内容到底有什么关系呢?Objective-C开发中经常用到NSObject,那么这个对象到底 ...
随机推荐
- IntelliJ IDEA导包快捷键
IntelliJ IDEA导包快捷键 Alt+Enter
- flutter 记录正则匹配
手机号正则匹配: // 正则匹配 static bool isChinaPhoneLegal(String str) { return new RegExp('^((13[0-9])|(15[^4]) ...
- linux 远程配置docker加速器
https://www.jianshu.com/p/dca49964af04 curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh ...
- WPF界面开发技巧大放送!DevExpress WPF在TreeListView中扩展N级
DevExpress广泛应用于ECM企业内容管理. 成本管控.进程监督.生产调度,在企业/政务信息化管理中占据一席重要之地.通过DevExpress WPF Controls,您能创建有着强大互动功能 ...
- BZOJ 1984: 月下“毛景树” (树链剖分+线段树)
注意赋值和加法的标记下传优先级.具体看代码. CODE #include <vector> #include <queue> #include <cstdio> # ...
- 记录微信小程序里自带 时间格式 工具
微信小程序里面自己给了一个时间工具,是用来记录log日志,感觉可以记录下来,所以拿来自己用,以此记录: 直接传入 日期对象 进入 formatTime //得到下面格式的时间格式2017/07/22 ...
- H5 设计尺寸
750*1218 微信下 兼容 7plus 内容高度 居中 1000px 内 750*1448 微信下 兼容 iphoneX 微信导航栏高度 64px 64px = 导航栏44+状态栏20 但是现在 ...
- HDU - 5245 概率
JoyfulHDU - 5245 题目大意:有N*M个正方形,进行k次涂色,每次会随机的选两个正方形作为一个矩形区域的顶点,然后把这个区域内的涂色,最后问k次之后,预计被涂了色的正方形有几个(也就是数 ...
- WordPress显示评论者IP归属地、浏览器、终端设备、电信运营商
在网上查资料闲逛,偶然间看到了张戈博客的评论框有点意思,于是就收走拿到了我的米扑博客. 本文为米扑博客原创:总结分享 WordPress显示评论者IP归属地.浏览器.终端设备.电信运营商 WordPr ...
- R-aggregate()
概述 aggregate函数应该是数据处理中常用到的函数,简单说有点类似sql语言中的group by,可以按照要求把数据打组聚合,然后对聚合以后的数据进行加和.求平均等各种操作. x=data.fr ...