代码之家  ›  专栏  ›  技术社区  ›  Andrew Grant

这个插入符号^语法两边都是void是什么意思[[副本]

  •  9
  • Andrew Grant  · 技术社区  · 15 年前

    在iphonesdk4.0中, UIApplication 有了新方法, setKeepAliveTimeout: void(^)(void) .

    -(BOOL)setKeepAliveTimeout:(NSTimeInterval)timeout handler:(void(^)(void))keepAliveHandler
    

    以下不是它想要的。。。

    void SomeHandler( void )
    {
    }
    
    4 回复  |  直到 11 年前
        1
  •  23
  •   jscs    11 年前

    https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/Blocks/Articles/00_Introduction.html

    块对象

    块对象(非正式地,块)是对C的扩展,以及Objtovi-C和C++,这使得程序员容易定义独立的工作单元。块类似于传统的函数指针,但比它强大得多。关键区别在于:

    块可以内联定义为匿名函数。 块捕获局部变量的只读副本,类似于其他语言中的闭包 这是一种在动态类型解释语言中很常见的功能,但以前从未被C程序员广泛使用过。苹果已经发布了Blocks语言规范和我们在MIT许可下的开源实现,为gcc4.2和clang添加了Blocks支持,并将其作为下一版本C编程语言的一部分提交考虑。

    语法

    void (^my_block)(void);
    
        2
  •  8
  •   zpasternack    15 年前

    这个特定函数的代码如下所示:

    [[UIApplication sharedApplication] setKeepAliveTimeout:5.0 handler:^{
        NSLog( @"This is my timeout handler" );
    }];
    
        3
  •  1
  •   superfell    15 年前

    这意味着它需要一个块(代码,又名闭包)明白吗 http://developer.apple.com/mac/articles/cocoa/introblocksgcd.html 这些是objective-c for OSX 10.6和iOS 4的新功能

        4
  •  0
  •   JJD    15 年前

    函数可以被屏蔽如下。

    #if NS_BLOCKS_AVAILABLE
    - (void)foo;
    #endif
    
    推荐文章