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的使用的更多相关文章

  1. 数组中的每一个对象执行一次方法:makeObjectsPerformSelector

    1,  为数组中的每一个button添加点击事件: [_buttonArray makeObjectsPerformSelector:@selector(addTarget:self action:( ...

  2. makeObjectsPerformSelector: 方法的用法

    //让数组中得每个元素都调用 @selector 中的get方法 [self.buttons makeObjectsPerformSelector:@selector(get)]; NSString ...

  3. makeObjectsPerformSelector对数组中的对象发送消息执行对象中方法

    - (void)makeObjectsPerformSelector:(SEL)aSelector; - (void)makeObjectsPerformSelector:(SEL)aSelector ...

  4. makeObjectsPerformSelector用法

    亲测 makeObjectsPerformSelector 的用法. - (void)makeObjectsPerformSelector:(SEL)aSelector NS_SWIFT_UNAVAI ...

  5. iOS 一个新方法:- (void)makeObjectsPerformSelector:(SEL)aSelector;

    NSArray 里面的一个方法, - (void)makeObjectsPerformSelector:(SEL)aSelector: 这是一个类似于执行for循环的方法,可以这样用,当需要删除一个v ...

  6. 【原】FMDB源码阅读(一)

    [原]FMDB源码阅读(一) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 说实话,之前的SDWebImage和AFNetworking这两个组件我还是使用过的,但是对于 ...

  7. iOS:小技巧(不断更新)

    记录下一些不常用技巧,以防忘记,复制用. 1.获取当前的View在Window的frame: UIWindow * window=[[[UIApplication sharedApplication] ...

  8. 【转】iOS,搜索标签布局

    前一阵时间,看过这样一个demo,代码不多,但是简洁易懂. 转自: //  代码地址: https://github.com/iphone5solo/PYSearch //  代码地址: http:/ ...

  9. iOS开发系列—Objective-C之Foundation框架

    概述 我们前面的章节中就一直新建Cocoa Class,那么Cocoa到底是什么,它和我们前面以及后面要讲的内容到底有什么关系呢?Objective-C开发中经常用到NSObject,那么这个对象到底 ...

随机推荐

  1. (三) 结构化查询语言SQL——1

    1. SQL概述 SQL,结构化查询语言,重要性不必在赘述了,基本上开发软件没有不用到的,此外在一些大数据也有广泛的应用.SQL主要包含数据定义语言(DDL).数据操纵语言(DML)以及数据控制语言( ...

  2. DNS原理及实战配置指南

    目录 DNS简介 DNS域名结构介绍 顶级域名 DNS工作原理 工作模式和端口 资源记录 安装bind(详细) 实战:配置一个正反向解析 实战:配置DNS转发 实战:配置DNS主从 实战:子域授权 实 ...

  3. Ant自动编译打包android项目(转载)

      1.1   Ant安装 ant的安装比较简单,下载ant压缩包  http://ant.apache.org  (最新的为1.9.3版本),下载之后将其解压到某个目录(本人解压到E:\Progra ...

  4. GDIPlus的使用准备工作

    GDIPlus的使用 stdafx.h加入如下代码: #include <comdef.h>//初始化一下com口 #include "GdiPlus.h" using ...

  5. js实现网页上图片循环播放

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/T ...

  6. hdu 5753

    Permutation Bo Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) ...

  7. 洛谷比赛 U4858 sum

    U4858 sum 题目提供者666sb666 最新讨论 题目背景 定义一个序列的价值为序列中相邻元素差的绝对值之和. 如序列{2,1,3}的价值为|2-1|+|1-3|=3,而序列{4}的价值为0. ...

  8. 最近公共祖先LCA(Tarjan算法)的思考和算法实现——转载自Vendetta Blogs

    LCA 最近公共祖先 Tarjan(离线)算法的基本思路及其算法实现 小广告:METO CODE 安溪一中信息学在线评测系统(OJ) //由于这是第一篇博客..有点瑕疵...比如我把false写成了f ...

  9. mysql5.7外网访问

    GRANT ALL PRIVILEGES ON *.* TO '账号名称'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION; FLUSH PRIVILEGES; // ...

  10. Android_(控件)使用AlertDialog实现点击Button显示出多选框

    单击"更多"按钮,显示出多选框 运行截图: 程序结构 (本想通过Button中android:background使用drawable资源下的图片作为按钮背景,设计太丑就去掉了Σ( ...