objective-c - 在 @selector() 中传递一个 block

标签 objective-c objective-c-blocks nstimer

如何在方法 incrementCount:completion 中传递一个 block ,以及它会是什么样子,以获取在增量后返回的属性 self.count计数器类?我不确定我在方法中定义 block 参数 (void(^)(void))callback; 的方式是否正确,即它是否也应该有返回值?

View Controller

 [NSTimer scheduledTimerWithTimeInterval:3.0
                                         target:self.counterClass
                                       selector:@selector(incrementCount:completion:)
                                       userInfo:nil
                                        repeats:YES];

计数器类

-(void)incrementCount:(NSTimer *)timer completion:(void(^)(void))callback;
    {
        self.count += 1;

    }

最佳答案

NSTimer 期望调用一个带有零个或一个参数的方法,如果有参数,它应该是计时器实例本身。

因此,您不能拥有一个具有 2 个参数的方法,其中一个参数是一个 block 。

相反,删除第二个参数并简单地调用方法实现中的另一个方法或 block 。该 block 可以存储为类的@property。

关于objective-c - 在 @selector() 中传递一个 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23312583/

相关文章:

ios - iPhone 离线模式下的中文文本到语音翻译

objective-c - 如何将一个 block 作为参数传递给 Objective C 中的另一个 block

iphone - UIButton 反复按下

objective-c - 创建一个 iOS 计时器

ios - 像 Hours 应用程序一样跟踪每个单元的时间

ios - 绘制背景颜色和边框和背景 PNG

ios - 当 UITableView 完全重新加载时

iphone - Three20 TTLauncherItem样式

ios - 使用线程/ block 安全集合来协调多个异步操作? (NSMutableArray 或 NSMutableSet)

ios - tableView 中多个 NSTimer 对象的问题