首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >提胡枝子语句

问提胡枝子语句
EN

Stack Overflow用户
提问于 2015-02-11 10:57:55
回答 1查看 165关注 0票数 2

使用typedef语句可以使用给定类型创建新类型的数据,例如typedef NSString *String;

我也能像对待NSString这样的新类型

代码语言:javascript
复制
    typedef NSString *String;
    String myString = @"Programming is";
    NSLog(@"%@", [myString stringByAppendingString:@"cool"]);

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

代码语言:javascript
复制
    String newString = [[String alloc]init];

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

但是使用typedef语句,我们得到了类方法和实例方法的相同NSString对象(据我理解)。实例方法工作良好,类方法不起作用。

为什么会发生这种事?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-11 11:04:38

请注意,当您说:

代码语言:javascript
复制
NSString *myString = [[NSString alloc] init];
^^^^^^^^^^             ^^^^^^^^

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

代码语言:javascript
复制
typedef NSString String;
typedef String *StringPtr;

StringPtr newString = [[String alloc]init];

或使间接方向显式化:

代码语言:javascript
复制
typedef NSString String;

String *newString = [[String alloc] init];
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28452613

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档