首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSString遗传

NSString遗传
EN

Stack Overflow用户
提问于 2011-01-08 00:25:15
回答 3查看 920关注 0票数 0

我在Obj-C的第一步做了一个无用的

代码语言:javascript
复制
@interface String : NSString
{
  int m_isnull;
}

- (id) init;
- (int) isNull;
@end


@implementation String

- (id) init
{
 self = [super init];

  m_isnull=1;
  return self;
}

- (int) isNull
{
  return m_isnull;
}

@end

测试:

代码语言:javascript
复制
String *a;

a=@"ok";

很好,但只有两个小问题

1)当我编译时,我有这样的警告

代码语言:javascript
复制
warning: incompatible Objective-C types assigning 'struct NSString *', expected 'struct String *'

我不知道怎么避免它!?

2) a=@"ok“是初始化字符串的最快方法,但是当我调试时,我不会停留在init构造函数上--为什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-01-08 00:34:33

@"ok"是一个NSString对象。您正在创建超类的实例,并试图将其分配给子类指针。把子类划分为一种“是-一种”关系。在您的示例中,String是一个NSStringNSString不是String。因此,不能将NSString对象分配给String指针。

票数 2
EN

Stack Overflow用户

发布于 2011-01-08 00:29:49

@"ok"实际上是一个NSString,就像1是一个整数。这就是为什么你会收到编译器警告。

还有“NSString”字面值。它本质上是NSString+NSString WithUTF8String方法的缩写。Mac已经声明,它用于区分这种字符串文本和C中的char *字符串文本。

符号

通常,您将在Objective中创建一个类别来扩展NSString类。

票数 3
EN

Stack Overflow用户

发布于 2011-01-08 00:58:42

查看一下NSString类引用:

子类NSString (和NSMutableString)是可能的,但是这样做需要为字符串(不是子类继承的)提供存储设施,并实现两个基本方法。抽象NSString和NSMutableString类是类集群的公共接口,主要由私有的具体类组成,这些类创建和返回适合于给定情况的字符串对象。在这个集群中创建自己的具体子类会带来某些要求(在“重写方法”中讨论)。

如果您真的想将-isNull方法添加到NSString中,那么最好将其作为一个类别添加。

我认为您也可能希望尝试编写-(BOOL) isNotBlank。考虑一下,如果在零指针上调用-isNull会发生什么,这是您所期望的返回值吗?

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4631532

复制
相关文章

相似问题

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