NSTimer里的userInfo
多线程中,NSTimer经常用到了,其中的userInfo属性大部分人都是直接赋nil,没去管它起啥作用。其实它是有作用的…传递信息。例子如下:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell *newCell = [tableView cellForRowAtIndexPath:indexPath]; UILabel *cellLabel = (UILabel *)[newCell.contentView viewWithTag:1]; [newCell setSelected:YES animated:YES]; NSMutableDictionary *myDictionary = [[NSMutableDictionary alloc] init]; [myDictionary setObject:tableView forKey:@"table"]; [myDictionary setObject:indexPath forKey:@"indexPath"]; // The colon after the onTimer allows for the argument [NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(onTimer:) userInfo:myDictionary repeats:NO]; [myDictionary release];}
半秒钟触发一次onTimer: ,userInfo是以NSDictionary的方式传递信息给onTimer:
- (void)onTimer:(NSTimer *)timer { NSLog(@"--- %@", [timer userInfo] ); [[[timer userInfo] objectForKey:@"table"] deselectRowAtIndexPath:[[timer userInfo] objectForKey:@"indexPath"] animated:YES]; // I have a reference to the tableView so I can do this below // but to show how the keys work, the call above these works //[table deselectRowAtIndexPath:[[timer userInfo] objectForKey:@"indexPath"] animated:YES];}
你地明白?
转载于:https://blog.51cto.com/sunsea/822998
NSTimer里的userInfo相关推荐
- iOS_定时器:NSTimer、GCDTimer、DisplayLink
文章目录 一.NSTimer 1. 工作原理 2. 初始化方法的区别 3. 8种初始化方法: 4. 不work的原因 5. 内存泄露 6. 对self的强引用的解决方案 6.1. target 使用类 ...
- nstimer循环引用_NSTimer定时器进阶——详细介绍,循环引用分析与解决
引言 定时器:A timer waits until a certain time interval has elapsed and then fires, sending a specified m ...
- 浅析NSTimer CADisplayLink内存泄露
偶得前言 本篇文章中我们主要谈谈NSTimer\CADisplayLink在使用过程中牵扯到内存泄露的相关问题及解决思路(文章末尾会附上Demo),有时候我们在不知情的情况容易入坑,最关键你还不知道自 ...
- iOS之深入探究CADisplayLink和NSTimer的对比和内存溢出问题
CADisplayLink的基本说明和使用 一.什么是CADisplayLink? 简单地说,它就是一个定时器,每隔几毫秒刷新一次屏幕. CADisplayLink是一个能让我们以和屏幕刷新率相同的频 ...
- NSTimer定时器进阶——详细介绍,循环引用分析与解决
引言 定时器:A timer waits until a certain time interval has elapsed and then fires, sending a specified m ...
- NSTimer (IOS开发)
一 什么是NSTimer timer是一个能在从现在开始的后面的某一个时刻或者周期性的执行我们指定的方法的对象.总结为三要素:时间间隔.被触发.发送消息(执行方法) 二 NSTimer使用方法 初 ...
- Spring源码分析【8】-分布式环境SpringSecurity保持用户会话
1.SpringSecurity的权限控制流程是这样的: 用户登录,基础信息UserInfo存在SpringSecurity的ThreadLocal里. 下面是contextHolder对象: fin ...
- C结构体工具DirectStruct(综合示例二)
2019独角兽企业重金招聘Python工程师标准>>> C结构体工具DirectStruct(综合示例二) 1.编写定义文件,用工具dsc处理之,自动生成XML转换代码和ESQL代码 ...
- PHP更新小程序,微信小程序Tab页切换更新数据详细介绍
这篇文章主要介绍了微信小程序 Tab页切换更新数据的相关资料,需要的朋友可以参考下 微信小程序 Tab页切换更新数据 微信小程序还处于内测阶段,最不方便的莫过于官方在不停的更新,前几天写的功能隔个几天 ...
最新文章
- 搭建一个免费的,无限流量的Blog----github Pages和Jekyll入门
- Elasticsearch 为什么能做到快速检索?— 倒排索引的秘密
- Android面试,View绘制流程以及invalidate()等相关方法分析
- [***]HZOI20190714 T2熟练剖分
- 顺丰同城:拟通过香港IPO发行1.31亿股H股 预期将于12月14日在港交所上市
- phonegap文件上传(java_php),Android应用开发之使用PhoneGap实现位置上报功能
- 计算机二级c语言程序设计题(一)
- 编程语言学习方法总结
- Magick.NET图片处理:解决Tga格式图片转Jpg后上下镜像问题
- 用正割对数计算积分的方法
- 飞桨领航团武汉长沙回顾|识别皮肤病,一秒记笔记,AI还有哪些惊喜?
- 截图工具snipaste安装和使用
- python 爬取拉钩网数据
- kettle定时备份->mysql+mongoDB增量备份
- 计算机设计核心思想,科学网—计算机设计的两种理念,颠覆os的计算机 - 姜咏江的博文...
- python 隐藏进程_python在windows下创建隐藏窗口子进程的方法
- 网站更新频率多少才合适?
- 【芯片识别】基于matlab GUI形态学PCB板芯片识别【含Matlab源码 1820期】
- 史上最全scrcpy投屏教程(用你的电脑控制手机)
- git branch的详细使用,10个常见用法
热门文章
- 速更新!流行的开源邮件客户端 Mozilla Thunderbird 91.3修复多个高危缺陷
- 看我如何挖到 Dropbox Windows 版的这个 0day(微补丁发布)
- 前端:高德地图快速入门使用
- 链客区块链技术面试题目专题(三)
- Oracle Golden Gate - 概念和机制
- 【iOS-Cocos2d游戏开发之二十一 】自定义精灵类并为你的精灵设置攻击帧以及动画创建!【二】...
- AngularJS判断checkbox/复选框是否选中并实时显示
- dedecms 模型新添加的自定义字段设置样式
- 简洁jQuery滑动门插件
- webview如何自动登录保存登录信息详情