我正在学习Objective-C,并不断碰到@符号。 它用于不同的场景,例如在字符串开头或用于综合访问器方法。

@符号在Objective-C中是什么意思?

===============>>#1 票数:155 已采纳

@字符不在C或C ++标识符中使用,因此用于引入Objective-C语言关键字,而不会与其他语言的关键字发生冲突。 这使语言的“目标”部分可以自由地与C或C ++部分混合。

因此,除了极少数例外,每当您在某些Objective-C代码中看到@时,您都在看的是Objective-C结构而不是C或C ++结构。

主要例外是idClassnilNil ,即使它们后面也可能带有typedef#define ,它们通常被视为语言关键字。 例如,编译器实际上确实根据其应用于声明的指针类型转换规则以及是否生成GC写障碍的决策来特别对待id

其他例外是inoutinoutonewaybyrefbycopy ; 这些用作方法参数和返回类型的存储类批注,以使分布式对象更有效。 (他们变得可从运行的方法签名的一部分,该DO可以看一下,以确定如何最好地连载的交易。)还有中的属性@property声明, copyretainassignreadonlyreadwritenonatomicgettersetter ; 这些仅在@property声明的attribute部分内有效。

===============>>#2 票数:62

来自Objective-C教程:@ Symbol ,其原因在于各个关键字的前面:

使用@应该可以更轻松地将Objective-C编译器连接到现有的C编译器。 因为@在字符串中除了字符串文字在C中的任何上下文中都是无效的,所以可以修改令牌化程序(编译器中的一个简单的早期步骤),以简单地在字符串常量之外查找@字符(令牌化程序可以理解字符串文字) ,因此可以区分)。 遇到@时,令牌生成器会将编译器的其余部分置于“ Objective-C模式”。 (Objective-C解析器将负责在检测到Objective-C代码结束时将编译器返回到常规C模式)。

同样,当在字符串文字的前面看到它时,它在C中成为NSString而不是'char *'。

===============>>#3 票数:24

来自Macrumors:Objective-C教程 ,位于字符串文字前面:

还有@“” NSString文字。 它本质上是NSString的+ stringWithUTF8String方法的简写。

@还为C字符串添加了unicode支持。

===============>>#4 票数:13

手册

Objective-C框架通常不使用C样式的字符串。 相反,它们将字符串作为NSString对象传递。

NSString类为字符串提供对象包装,它具有您所期望的所有优点,包括用于存储任意长度字符串的内置内存管理,对Unicode的支持,printf样式的格式化实用程序等。 由于此类字符串是常用的,因此Objective-C提供了一种从常量值创建NSString对象的简写符号。 要使用此速记,您需要做的是在普通的双引号字符串前加上@符号,如以下示例所示:

 NSString *myString = @"My String\\n"; NSString *anotherString = [NSString stringWithFormat:@"%d %@", 1, @"String"]; 

  ask by Benedict Cohen translate from so

未解决问题?本站智能推荐:

2回复

“->”符号在Objective-C中代表什么?

这个问题已经在这里有了答案 : 6年前关闭。 在c / objective-c中,“->”是什么意思? (7个答案)
3回复

在Objective-C中代表

我是Objective-C的新手,我正在努力了解代表们。 我经常搜索和阅读,但没有什么能帮助我理解。 我认为理解这一点的最佳方式可能是使用示例应用程序提出问题。 我正在尝试创建一个成绩计算器应用程序来测试我的技能。 这是我的文件: mainTableViewControll
3回复

(void(^)(id)在Objective-C中代表什么?

我是Objective-C的新手,看到该方法的参数如下 你能帮我解释一下(void(^)(id))
2回复

如何在Objective-C / iOS中代表钱?

我正在开发一款iPhone应用程序并且希望代表金额($)金额。 我不能使用float因为它们会引入一定量的舍入错误。 我可以用什么? 我正在考虑定义我自己的Money类,并在内部存储美元和便士作为NSInteger。 另一种可能的表示(更容易添加和乘法)将使用单个NSInteg
2回复

@ []在目标c中代表什么?

在以下情况下,我遇到了@ [] 它是什么?
1回复

Objective-C代表

proxy:self表示相同的文件如何定义另一个类/文件来响应委托事件?
1回复

Objective-C的代表

我正在尝试在Objective-C中探索一些代码。 我遇到了一个开源程序-批处理重命名器。 我正在查看其代码并添加了自己的实现。 这段代码中有一件事我无法理解-我希望有人能够帮助我。 问题是有一个重命名器委托“-(void)renamed”,我不知道如何调用它。 因此,我想知道程序如何
6回复

代表们在Objective-c

目标c中的常规做法是将控制器用作各种协议实现的委托。 我在谈论使用iOS SDK时,或者是否有一个单独的类来接管代理卷? 或者它只是一个最适合场景的情况? 我对Objective c中的最佳实践非常好奇,因为我正在学习单独编写代码并且没有“现实世界”专家可以转向。
1回复

Objective-C代表

Objective-c的代表是什么? 什么是委托方法。 ? 任何人都可以举一个例子来解释.. tnax和问候。
1回复

Objective-C代表类型

在Objective-C中创建委托时,假定委托为: id <DelegateName> delegate , delegate的类型应该是什么? 那么在LLDB中运行po delegete或po self.delegate ,预期结果是什么? 如果期望它是DelegateNa