'&安培;'在目标c的类名中被' _'

时间:2016-03-29 10:38:48

标签: objective-c xcode

我已经编写了一个新的可可触摸类Request&ApprovalViewController,并在创建后发现类名被Request_ApprovalViewController中的.h替换为.m文件。

Request&ApprovalViewController.h代码

#import <UIKit/UIKit.h>

@interface Request_ApprovalViewController : UIViewController
@end

Request&ApprovalViewController.m代码

#import "Request&ApprovalViewController.h"

@interface Request_ApprovalViewController ()
@end

@implementation Request_ApprovalViewController
@end

我的问题是为什么&_取代了? 它是一种编写特殊类型的Objective-C代码(如类别,扩展或协议)的形式吗?

3 个答案:

答案 0 :(得分:1)

您使用Xcode创建了该文件,并且它理解&不是类名中的有效字符,因此它将其更改为合理的字符,以便它能够编译代码

答案 1 :(得分:1)

由于Objective-Cs与C的关系,Ampersand是一个保留符号,用于获取变量的地址。

答案 2 :(得分:1)

  

我的问题是这个&如何被_

取代

更好的问题是它被替换的原因。原因是Objective-C中的类,变量,方法等的名称必须是identifiers,即它们必须以字母或下划线开头,并且只包含字母,数字或下划线。 &不是标识符中使用的合法字符。这就是为什么Xcode用下划线替换它。

请注意,文件的名称允许有&符号,因此Xcode会保持文件名不变。导入时,请使用

#import "Request&ApprovalViewController.h"

另请注意file names with +, a special character, are commonly used for defining categories