当前位置:  开发笔记 > 编程语言 > 正文

@符号在objective-c中代表什么?

如何解决《@符号在objective-c中代表什么?》经验,为你挑选了4个好方法。

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

@符号在objective-c中的含义是什么?



1> Chris Hanson..:

@字符未在C或C++标识符中使用,因此它用于以不会与其他语言的关键字冲突的方式引入Objective-C语言关键字.这使得该语言的"目标"部分可以自由地与C或C++部分混合.

因此,除了极少数例外情况,只要您@在某些Objective-C代码中看到,就会看到Objective-C构造而不是C或C++构造.

主要的例外是id,Class,nil,和Nil,它们通常被视为语言的关键字,即使他们可能也有一个typedef#define甩在身后.例如,编译器实际上确实id根据它应用于声明的指针类型转换规则以及是否生成GC写入障碍的决定来处理.

其他的例外是in,out,inout,oneway,byref,和bycopy; 这些用作方法参数和返回类型的存储类注释,以使分布式对象更有效.(他们变得可从运行时,它DO可以看看方法签名的一部分,以确定如何最佳序列化的交易.)还有中的属性@property声明copy,retain,assign,readonly,readwrite,nonatomic,getter,和setter; 这些只在@property声明的属性部分有效.


@(99)与[NSNumber numberWithInteger:99]相同.@(YES)与[NSNumber numberWithBool:YES]相同.@符号是创建对象的快捷方式.
还有其他人对这个"答案"没有真正回答所述问题的事实感到困惑吗?提问者说"在Objective-C中'@'的意思是什么?" 并且回答者说"这意味着你正在使用Objective-C." 我想他已经知道了......
你能解释一下@(表达式)的作用吗?当我在xcode中输入@时,这是我在弹出窗口中看不到的唯一项目.

2> thelsdj..:

从Objective-C教程:@符号,它是各种关键字的前面的原因:

使用@应该可以更容易地将Objective-C编译器连接到现有的C编译器上.因为@在C语言的任何上下文中都是无效的,除了字符串文字之外,可以修改tokenizer(编译器中的早期和简单步骤)以简单地查找字符串常量之外的@字符(tokenizer理解字符串文字) ,所以它有能力区分这个).当遇到@时,标记生成器会将编译器的其余部分置于"Objective-C模式".(当检测到Objective-C代码结束时,Objective-C解析器将负责将编译器返回到常规C模式).

此外,当在字符串文字的前面看时,它在C中创建一个NSString而不是'char*'.



3> Van Nguyen..:

来自Macrumors:Objective-C Tutorial,当在字符串文字前面时:

还有@""NSString文字.它基本上是NSString的+ stringWithUTF8String方法的简写.

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


*"它基本上是NSString的+ stringWithUTF8String方法的简写."*嗯,不完全是.这些字符串是静态分配的,这使它们与`+ [NSString stringWithUTF8String:]`(动态分配)不同,而release和retain对它们没有影响.

4> pabloeluston..:

从手册:

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

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

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


但这只是使用“ @”的一个例子。我正在看这样的代码:`mapperOptions = @ {kSTMapperVolumeResolutionKey:@(volumeResolution),`...与NSString无关
推荐阅读
虎仔球妈_459
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有