ios关于点击事件selector传参的问题,看似简单却容易混淆(已解决)
2015-06-21 15:37
615 查看
最近在使用selector时经常思考的问题,
给UIButton 添加点击事件,可以在selector后加“:”将button作为参数传入方法中,
今天用
[NSTimer
scheduledTimerWithTimeInterval:1
target:self
selector:@selector(rotateAction:)
userInfo:nil
repeats:NO];
写了一个方法
#pragma mark - rotateAction
- (void)rotateAction:(ViewController *)controller{
// UIView * view = [controller.view.subviews lastObject];
NSLog(@"%@",controller);
// view.backgroundColor = [UIColor yellowColor];
}
看起来类似的写法却无法获得self(控制器),我分别打印了一下self和controller结果发现地址不一样,所以肯定不是一个对象,我就在思考是为什么,再仔细看打印结果终于发现问题所在
2015-06-21 15:35:22.806 test仿射变换[10698:1998925] <ViewController: 0x7ff64db38a50>
2015-06-21 15:35:23.807 test仿射变换[10698:1998925] <__NSCFTimer: 0x7ff64d8486d0>
显而易见二者不是同一个类,所以selector传入的参数是:点击事件的调用者例如:button,slider,progress,nstimer等等
给UIButton 添加点击事件,可以在selector后加“:”将button作为参数传入方法中,
今天用
[NSTimer
scheduledTimerWithTimeInterval:1
target:self
selector:@selector(rotateAction:)
userInfo:nil
repeats:NO];
写了一个方法
#pragma mark - rotateAction
- (void)rotateAction:(ViewController *)controller{
// UIView * view = [controller.view.subviews lastObject];
NSLog(@"%@",controller);
// view.backgroundColor = [UIColor yellowColor];
}
看起来类似的写法却无法获得self(控制器),我分别打印了一下self和controller结果发现地址不一样,所以肯定不是一个对象,我就在思考是为什么,再仔细看打印结果终于发现问题所在
2015-06-21 15:35:22.806 test仿射变换[10698:1998925] <ViewController: 0x7ff64db38a50>
2015-06-21 15:35:23.807 test仿射变换[10698:1998925] <__NSCFTimer: 0x7ff64d8486d0>
显而易见二者不是同一个类,所以selector传入的参数是:点击事件的调用者例如:button,slider,progress,nstimer等等
相关文章推荐
- iOS开发之AVAudioPlayer 音频播放
- iOS GCD的常见API使用指南
- iOS-Reachability的使用
- iOS 各种控件默认高度
- iOS阶段学习第三天笔记(运算符)
- IOS使用百度地图SDK,报引擎初始化失败
- iOS图片拉伸技巧
- Xamarin 绑定iOS 静态库
- ios开发,将图片存到相册中
- iOS手机应用开发原型模板及开发流程
- 转:谈谈iOS中粘性动画以及果冻效果的实现
- 斯坦福大学 iOS 7应用开发 ppt
- iOS项目开发优秀文章汇总
- xmpp-iOS-获取好友列表、聊天信息列表、聊天
- iOS开发使用.ttf或.otf外部字体库
- IOS菜鸟的所感所思(十二)——专辑接口和专辑中歌曲数据的获得(下)
- iOS9和Xcode7
- (6/18)重学Standford_iOS7开发_控制器多态性、导航控制器、选项卡栏控制器_课程笔记
- IOS系列——新建pch文件
- ios真机调试出现matching the team ID .. were found问题