使用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对象(在我的理解中)。实例方法工作正常,类方法不起作用。
为什么会这样?
答案 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];