And*_*ant 9 syntax objective-c objective-c-blocks
在iPhone SDK 4.0中,UIApplication
有一个新方法,setKeepAliveTimeout:
需要第二个类型参数void(^)(void)
.
-(BOOL)setKeepAliveTimeout:(NSTimeInterval)timeout handler:(void(^)(void))keepAliveHandler
Run Code Online (Sandbox Code Playgroud)
第二个参数的语法到底意味着什么,以及如何声明我可以传递给它的函数/处理程序?
FWIW以下不是它正在寻找的......
void SomeHandler( void )
{
}
Run Code Online (Sandbox Code Playgroud)
Sha*_*rog 23
这是一个"块",这是Apple在Snow Leopard中添加到C中的新功能.有更多信息,请访问:
阻止对象
块对象(非正式地,"块")是C的扩展,以及Objective-C和C++,使程序员可以轻松定义自包含的工作单元.块与传统函数指针类似 - 但功能强大得多.关键的区别是:
块可以内联定义为"匿名函数".块捕获局部变量的只读副本,类似于其他语言中的"闭包"这种功能在动态类型的解释语言中很常见,但从未广泛使用过可供C程序员使用.Apple在MIT许可下发布了Blocks Languages Specification和我们的开源实现,增加了对GCC 4.2和clang的块支持,并已将其作为下一版C编程语言的一部分提交考虑.
句法
块变量看起来像一个函数指针,除了插入符号('^')而不是星号('*').
void (^my_block)(void);
Run Code Online (Sandbox Code Playgroud)
并且该特定函数的代码如下所示:
[[UIApplication sharedApplication] setKeepAliveTimeout:5.0 handler:^{
NSLog( @"This is my timeout handler" );
}];
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6438 次 |
最近记录: |