问题标签 [class-cluster]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
14066 浏览

objective-c - NSString 实例将其类报告为 NSCFString

我的目标非常简单——我试图设置NSString一些测试数据,然后返回应该是NSString. 这是我的代码:

日志说该类是NSCFString,不是NSString。这里发生了什么?

0 投票
5 回答
27812 浏览

objective-c - Objective-C 中所谓的“类集群”到底是什么?

我在读 NSArray 就是这样的东西。听起来很沉重。我的办公桌上有 7 本关于 Objective-C、Cocoa 和 C 的非常厚的书。它们都没有提到 Class Cluster,至少我在书后的索引中找不到。那是什么?

0 投票
2 回答
681 浏览

iphone - 迭代 NSMutableArray 时出现“超出范围”错误

为什么每当我尝试访问此循环中的“url”变量时都会出现“超出范围”错误?

“self.winnerImageURLs” NSMutableArray 中非常项目的类以 NSCFString 的形式返回,所以我不确定dealio 在这里。

关于我做错了什么的任何想法???

谢谢

0 投票
1 回答
362 浏览

iphone - 类集群初始化

我的 iPhone 应用程序有一个抽象类 WorkingView。它是 UIView 的子类。WorkingView 又会有一堆具体的子类。其中两个将是 SimplifyView 和 MultiplyView。

我正在尝试编写创建 WorkingView 新实例的方法。此方法应传入模式并返回适当的具体子类的实例。根据这个问题的答案,这是我到目前为止所拥有的:

到现在为止还挺好。但问题就在这里。在 SimplifyView 的 init 方法中,我需要通过 UIView 的 init 方法运行对象。调用 [super initWithFrame: frame] 只会让我进入 WorkingView,而不是一直到 UIView。我想我可以在 WorkingView 中创建一个 initWithFrame: 方法,该方法又调用 UIView 的 initWithFrame: 方法——但这感觉很老套。

处理此问题的适当方法是什么?

0 投票
2 回答
523 浏览

ruby - 如何在 Ruby 中创建“类集群”(具有具体子类实例的工厂类)?

我想创建一个抽象类,它将根据初始化参数创建具体实例。例子:

然后我想要 FooSomething <SomethingGeneric、BarSomething <SomethingGeneric 等等。然后当我这样做时:

我会得到 FooSomething 实例。

我的问题是“新”方法。我已经定义了SomethingGeneric.new,但是FooSomething 和BarSomething 是SomethingGeneric 的子类,因此它们继承了“新”方法,该方法在这里用错误的参数调用:

解决方案之一是为工厂方法“new”使用另一个名称。但是,我想坚持方便并保留名为“new”的抽象超类工厂方法。

解决这个问题的最干净的正确方法是什么?

0 投票
5 回答
4777 浏览

objective-c - Objective C - 子类化 NSArray

我正在尝试子类NSArray化,但是在尝试访问 count 方法时它会使应用程序崩溃。我知道那NSArray是一个 类簇

  • 但是,这是什么意思?
  • 是否有解决方法可以将 NSArray 子类化?

我知道我可以简单地子类化NSObject并将我的数组作为实例变量,但我宁愿子类化NSArray

编辑: 原因:我正在创建一个纸牌游戏,我有一个类Deck,它应该子类NSMutableArray化有几个额外的方法(-shuffle、、、-removeObjects:等),我认为子类化而不是 var-renew看起来会更干净。NSArray

0 投票
1 回答
768 浏览

cocoa-touch - 由于 NSCFNumber,NSNumber 类别出错

我将 WSDL2OBJC 用于 OS X 项目。WSDL2OBJC 生成的部分代码为 NSNumber 添加了一个类别。当我使用代码时,我尝试在 NSNumber 上调用新方法并得到一个错误:

我读过 NSNumber 是一个类集群并具有私有类,而 NSCFNumber 是整数类。我怎样才能让它工作?我无法将该类别添加到 NSCFNumber,因为它是一个私有类。相同的代码适用于我拥有的 iPhone 项目。

0 投票
1 回答
823 浏览

objective-c - Objective-C 类簇和私有类初始化器

通常,作为一个优秀的 Cocoa 公民,我编写了返回类型id(即指向泛型对象的指针)的初始化程序,以便以后进行子类化(尽管 99% 的时间我不需要它)。

现在我正在创建自己的类集群(许多私有类都以单个公共类为上限)。问题:我是否还需要将私有类的初始化程序定义为返回通用id指针:

或指向私有类本身的指针,例如:

0 投票
4 回答
1916 浏览

objective-c - 如果我想添加类型化的属性,子类化 NSNotification 是正确的路线吗?

我正在尝试子类化NSNotification.

Apple 的文档NSNotification声明如下:

NSNotification是一个没有实例变量的类簇。因此,您必须继承NSNotification并覆盖原始方法 nameobjectuserInfo。您可以选择任何您喜欢的指定初始化程序,但请确保您的初始化程序不会调用 (via ) NSNotification的实现。不打算直接实例化,并且它的 方法会引发异常。init[super init]NSNotificationinit

但这对我来说不是很清楚。我应该创建这样的初始化程序吗?

0 投票
5 回答
1728 浏览

iphone - 这两个 NSString 方法之间的区别

所以我今天在一次采访中被问到这个问题,经过一番谷歌搜索后我仍然无法找出答案(事实上我什至找不到任何使用 [NSString string] 方法的代码)。

和有什么区别

  1. NSString *someString = [NSString string];
  2. NSString *someString = [[NSString alloc] init];

现在我最初的想法是,这[NSString string]将返回一个将被自动释放的对象,而使用 alloc 和 init 将返回一个已保留的对象。然而,这个答案似乎是不正确的。

我查看了苹果文档中的 NSString 类参考,但它所说的只是

有人可以向我解释一下这两者之间的区别是什么吗?