目标C中符号^的含义

rak*_*hNS 16 iphone objective-c background-process ios objective-c-blocks

可能重复:
目标C中的插入符号
这个^语法在Objective-C中意味着什么?

我厌倦了在目标C中搜索符号^的含义.我已经在许多项目中看到过它,尤其是在后台运行任务中.我将链接 http://developer.apple.com/library/ios/#samplecode/StitchedStreamPlayer/Introduction/Intro.html#//apple_ref/doc/uid/DTS40010092 ,MyStreamingMovieViewController.m你可以在里面找到以下内容 - (IBAction)endScrubbing:(id)sender method.

timeObserver = [[player addPeriodicTimeObserverForInterval:CMTimeMakeWithSeconds(tolerance, NSEC_PER_SEC) queue:dispatch_get_main_queue() usingBlock:
                         ^(CMTime time)
                         {
                             [self syncScrubber];
                         }] retain];
    }
Run Code Online (Sandbox Code Playgroud)

另外http://developer.apple.com/library/ios/#documentation/iphone/conceptual/iphoneosprogrammingguide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html

- (void)applicationDidEnterBackground:(UIApplication *)application
{
UIApplication*    app = [UIApplication sharedApplication];

bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
    // Clean up any unfinished task business by marking where you.
    // stopped or ending the task outright.
    [app endBackgroundTask:bgTask];
    bgTask = UIBackgroundTaskInvalid;
}];

// Start the long-running task and return immediately.
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

    // Do the work associated with the task, preferably in chunks.

    [app endBackgroundTask:bgTask];
    bgTask = UIBackgroundTaskInvalid;
});
}
Run Code Online (Sandbox Code Playgroud)

请让我知道答案.

Nek*_*kto 19

该符号用于声明块.

有关更多信息,请阅读块编程主题

更多信息:

块对象是C级语法和运行时功能.它们类似于标准C函数,但除了可执行代码之外,它们还可能包含对自动(堆栈)或托管(堆)内存的变量绑定.因此,块可以维护一组状态(数据),它可以用于在执行时影响行为.

您可以使用块来组合可以传递给API的函数表达式,可选地存储并由多个线程使用.块作为回调特别有用,因为块包含要在回调上执行的代码和执行期间所需的数据.