Typedef语句

时间:2015-02-11 10:57:56

标签: objective-c nsstring

使用typedef语句,我们可以使用提供类型创建新类型的数据,例如typedef NSString *String;

我还可以处理像NSString这样的新类型:

    typedef NSString *String;
    String myString = @"Programming is";
    NSLog(@"%@", [myString stringByAppendingString:@"cool"]);

我的问题是 - 我不能使用课程方法吗?以下代码产生错误:

    String newString = [[String alloc]init];

错误说:Receiver type 'String' (aka 'NSString') is not an Objective-C class

但是使用typedef语句,我们使用类方法和实例方法获得相同的NSString对象(在我的理解中)。实例方法工作正常,类方法不起作用。

为什么会这样?

1 个答案:

答案 0 :(得分:4)

请注意,当你说:

NSString *myString = [[NSString alloc] init];
^^^^^^^^^^             ^^^^^^^^

您使用的是两种不同类型,NSString *NSString。所以你要么需要两个typedef:

typedef NSString String;
typedef String *StringPtr;

StringPtr newString = [[String alloc]init];

或一个typedef并使间接显式:

typedef NSString String;

String *newString = [[String alloc] init];