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,那么这个对象到底 ...
随机推荐
- QTP(1)
一.概念 1.什么是软件测试? 使用人工或者自动手段来运行或者测试某个软件的过程,其目的在于检验程序是否满足需求规格说明书或者弄清实际结果与预期结果之间的差异. (1)软件(程序+文档+数据)测试 ( ...
- java8学习之Lambda表达式深入与流初步
Lambda表达式深入: 在上一次[http://www.cnblogs.com/webor2006/p/8135873.html]中介绍Lambda表达式的作用时,其中说到这点: 如标红处所说,既然 ...
- TCP_Wrappers访问控制
一.TCP_Wrappers简介 对有状态连接的特定服务进行安全检测并实现访问控制,它以库文件形式实现,某进程是否接受libwrap的控制取决于发起此进程的程序在编译时是否针对libwrap进行编译的 ...
- Suse环境下编译linux-2.6.24内核
Suse环境下编译linux-2.6.24内核 1.下载linux-2.6.24内核源码: https://mirrors.edge.kernel.org/pub/linux/kernel/v2.6/ ...
- shell小命令
小括号的用途 cd ..; ls -l (cd ..; ls -l) 如果加了括号,则当前工作目录不发生改变 shell变量类型 环境变量 可以使用 echo 或者env 例如 env|grep 变 ...
- Flyway对比Liquibase(转)
数据库迁移工具. 很多应用的运行是需要数据库支持的,而随着快速迭代,产品更替的节奏加快,除了产品本身需要不断更新以外,数据库也需要做出合适的管理了. 为什么需要数据库迁移管理 比如第一个版本的产品只包 ...
- 下载Americanlife 语音材料
下载剧本 下载后会在给定目录生成多pdf文件,文件名为每一节的名称 #!/usr/bin/env python3.5 # -*- coding: utf-8 -*- # @Time : 2019/11 ...
- JavaMail应用--通过javamail API实现在代码中发送邮件功能
JavaMail应用 在日常开发中,可能会引用到发邮件功能,例如在持续集成中,自动化测试运行完毕,自动将测试结果以报表的形式发送邮件给相关人.那么在Java中如何实现发邮件呢? 在java EE ...
- Shell操作
Shell 1. 我们无法直接和内核打交道,Shell就是用来解释命令,用来和内核打交道用的. 2. Shell有不同形式(同样命令在不同shell中不一定通用):cshell.bash.kshell ...
- svn版本更新
1.查看当前版本:svn --version 2.配置svn yum源 tee /etc/yum.repos.d/wandisco-svn.repo <<-'EOF' [WandiscoS ...