typedef 语句
Typedef statement
使用 typedef
语句允许我们创建具有给定类型的新数据类型,例如 typedef NSString *String;
我还可以处理新类型 NSString
:
typedef NSString *String;
String myString = @"Programming is";
NSLog(@"%@", [myString stringByAppendingString:@"cool"]);
我的问题是 - 我不能使用 class 方法吗?以下代码产生错误:
String newString = [[String alloc]init];
错误说:Receiver type 'String' (aka 'NSString') is not an Objective-C class
但是使用 typedef
语句我们得到相同的 NSString 对象(在我的理解中)同时具有 class 方法和实例方法。实例方法工作正常,class 方法无效。
为什么会这样?
请注意,当您说:
NSString *myString = [[NSString alloc] init];
^^^^^^^^^^ ^^^^^^^^
您使用了两种不同的类型,NSString *
和 NSString
。所以你要么需要两个 typedefs:
typedef NSString String;
typedef String *StringPtr;
StringPtr newString = [[String alloc]init];
或一个 typedef 并使间接寻址显式:
typedef NSString String;
String *newString = [[String alloc] init];
使用 typedef
语句允许我们创建具有给定类型的新数据类型,例如 typedef NSString *String;
我还可以处理新类型 NSString
:
typedef NSString *String;
String myString = @"Programming is";
NSLog(@"%@", [myString stringByAppendingString:@"cool"]);
我的问题是 - 我不能使用 class 方法吗?以下代码产生错误:
String newString = [[String alloc]init];
错误说:Receiver type 'String' (aka 'NSString') is not an Objective-C class
但是使用 typedef
语句我们得到相同的 NSString 对象(在我的理解中)同时具有 class 方法和实例方法。实例方法工作正常,class 方法无效。
为什么会这样?
请注意,当您说:
NSString *myString = [[NSString alloc] init];
^^^^^^^^^^ ^^^^^^^^
您使用了两种不同的类型,NSString *
和 NSString
。所以你要么需要两个 typedefs:
typedef NSString String;
typedef String *StringPtr;
StringPtr newString = [[String alloc]init];
或一个 typedef 并使间接寻址显式:
typedef NSString String;
String *newString = [[String alloc] init];