使用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对象(据我理解)。实例方法工作良好,类方法不起作用。
为什么会发生这种事?
发布于 2015-02-11 11:04:38
请注意,当您说:
NSString *myString = [[NSString alloc] init];
^^^^^^^^^^ ^^^^^^^^您使用的是两种不同的类型,NSString *和NSString。所以你要么需要两种类型:
typedef NSString String;
typedef String *StringPtr;
StringPtr newString = [[String alloc]init];或使间接方向显式化:
typedef NSString String;
String *newString = [[String alloc] init];https://stackoverflow.com/questions/28452613
复制相似问题