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. 方正科技win7重装系统

    1.制作装机版U盘启动盘 老毛桃装机版制作启动U盘教程 http://www.laomaotao.org/jiaocheng/92/upqdzz.html 2.下载系统镜像文件保存至U盘启动盘 MSD ...

  2. 寻找hive视图

    如何hive视图 1.mysql数据库 [centos@s201 ~]$ mysql -uroot -proot mysql> show databases; +---------------- ...

  3. c语言结构体以及结构体指针的使用

    结构体: 正常定义一个结构体: typedef struct node{ ]; int len; }Seq,*llink; 定义结构体指针: Seq *s;或者llink t;之后关于s与t的用法,其 ...

  4. 第十一天 unittest参数化模块

    unittest的工作原理:一下例子简单的描述了整个过程 def calc(a,b): return a//b import unittest,HTMLTestRunner import Beauti ...

  5. 【Python之路】特别篇--ECMA对象、DOM对象、BOM对象

    ECMA对象 从传统意义上来说,ECMAScript 并不真正具有类.事实上,除了说明不存在类,在 ECMA-262 中根本没有出现“类”这个词. ECMAScript 定义了“对象定义”,逻辑上等价 ...

  6. perl 纯变量(Scalar) 转载

    转载http://blog.chinaunix.net/uid-20639775-id-154591.html Perl有三种变量: 纯变量(Scalar Varible) 数组(Array) 关联数 ...

  7. MD5 加密 字符串

    //获取字符串的MD5码 public string CreateMD5Hash(string input) { // Use input string to calculate MD5 hash S ...

  8. js 获取 touch length

    window.addEventListener("touchstart", touchHandler, false); function touchHandler(event){ ...

  9. mysql清表时有外键关联处理办法

    可以忽视关联的情况下: 先取消主外键关系验证:SET FOREIGN_KEY_CHECKS = 0; 然后删除需要删除的数据:truncate table table_name; 最后恢复:SET F ...

  10. 项目部署中,tomcat报java.lang.OutOfMemoryError: PermGen space

    原因: PermGen space的全称是Permanent Generation space,是指内存的永久保存区域,这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader ...