9

我是 Objective C 的新手,并试图弄清楚 ^ 运算符的作用是什么?在探索一些源代码时,我看到了下一个构造:

dispatch_once(&onceToken, ^{
    UIGraphicsBeginImageContextWithOptions(CGSizeMake(20.f, 13.f), NO, 0.0f);

    [[UIColor blackColor] setFill];
    [[UIBezierPath bezierPathWithRect:CGRectMake(0, 0, 20, 1)] fill];
    [[UIBezierPath bezierPathWithRect:CGRectMake(0, 5, 20, 1)] fill];
    [[UIBezierPath bezierPathWithRect:CGRectMake(0, 10, 20, 1)] fill];

    [[UIColor whiteColor] setFill];
    [[UIBezierPath bezierPathWithRect:CGRectMake(0, 1, 20, 2)] fill];
    [[UIBezierPath bezierPathWithRect:CGRectMake(0, 6,  20, 2)] fill];
    [[UIBezierPath bezierPathWithRect:CGRectMake(0, 11, 20, 2)] fill];   

    defaultImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

});

我想知道^是什么?

4

4 回答 4

17

^指示在 Objective-C 中块定义的开始。

看看这里:http: //developer.apple.com/library/ios/#documentation/cocoa/Conceptual/Blocks/Articles/bxGettingStarted.html#//apple_ref/doc/uid/TP40007502-CH7-SW1

请注意,在这种情况下,^is 不是运算符,它是 Objective-C 语法的一部分 @Mike 被否决的答案严格来说是“^ 运算符”的正确定义

于 2013-03-25T14:24:56.223 回答
6

它在Objective C中被称为

句法:

returnType (^variableName)(parameters);

逐字逐句摘自Akiel Khan 的教程(您可以在此处找到另一个很好的教程):

  • 块文字是“匿名的”(即无名的)
  • 插入符号 (^)
  • 我们不必指定返回类型——编译器可以“推断”它。如果我们愿意,我们可以明确提到它。

这是官方文档,请阅读以获取更多信息。

于 2013-03-25T14:32:35.380 回答
4

这是一个开始一个块的信号。

您可以通过阅读一些教程博客或文章找到更多关于块的信息:

块——iOS 4 中一个有趣的 Objective-C 添加

如何在 iOS 5 教程中使用块

了解了 block 的基本知识后,可以参考苹果关于 block 的文档

事实上,block 最常用的用法是GCD(代表 Grand Central Dispatch,这是你的问题)、UIView 的动画和其他类似回调的东西。它在现代 Obj-C 编程中非常有用和常见。

于 2013-03-25T14:28:26.660 回答
2

它用于在对象中创建块 c 块就像 c 中的函数指针。这可能会帮助你

签出此链接

于 2013-03-25T14:27:31.767 回答