问题标签 [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 回答
56 浏览

ios - 在 UILabel et.al 中使用 NSString 子类

我需要将其他数据编码为NSString(长话短说,请不要问为什么......)

我使用此处NSString概述的方法进行了子类化:

当我将这些子类之一分配为UILabel's文本时,我希望在询问标签文本时将其取回。但事实并非如此。(我得到了一个 NSString 集群实例)

有解决办法吗?

0 投票
6 回答
139 浏览

objective-c - 我创建了一个 NSArray 的实例,而它的类不是 NSArray 而是 __NSArrayI?

我有以下代码:

我希望两个输出都是NSArray,但是输出结果是:

然后我创建一个名为的测试类CAJTestClass并创建该类的一个实例:

这次输出变为:

这一次的结果是我所期望的。但为什么会[anArray class]成为一个__NSArrayI
“Effective Objective-C”的解释是它NSArray是“类集群”的一部分(我认为这是一系列具有继承关系的类)。但CAJTestClass也是 的子类NSObject。我错了吗?

编辑:感谢您的所有回答。但是我的问题是,如果它应该有助于“类集群”的事务,为什么我会在这两种情况下得到不同的结果?

0 投票
1 回答
88 浏览

ios - 在 Objective-C 中使用私有类时如何隐藏它?

问题

在 Objective-C 中使用私有类时如何隐藏它?

例如,如下所述 PrivateFilter是我要隐藏的类。 CustomFilter是我做的课,是开放的。 GPUImageFilter是 Github 上的 public 类,也是开放的。并且CustomFilter实际上包装了PrivateFilter.

可能的解决方案

所以有两种解决方案:

解决方案一:类集群

查看Apple 文档A Composite Object: An Example中的示例。我按照这些步骤制作了以下代码。

但不知何故它不起作用,所以我尝试了解决方案2。

解决方案 2:使用 PrivateFilter 初始化

这行得通,但allocinit. 所以我尝试解决方案3。

解决方案3:工厂类方法

这可行,但它不能被继承,就像类集群一样。

重复问题

那么哪个是最好的解决方案?或者还有其他好的解决方案吗?

0 投票
1 回答
61 浏览

cocoa - macOS 12.0.1 (Monterey) XIB 无法加载;抛出异常“这个编码器期望被替换的对象......从 NSClassSwapper 返回”

我有包含自定义对象的 XIB,其中一个实际上是一个类集群,其-init方法总是返回相同的单例对象。

基本上:

从 macOS 12.0.1 开始,加载 XIB 会引发此异常:

This coder is expecting the replaced object 0x600002a4f680 to be returned from NSClassSwapper.initWithCoder instead of <DDHelpLink: 0x600002a487a0>

我尝试实施<NSSecureCoding>并做同样的事情,但这也不起作用。

还有一种方法可以在 NIB 中使用类集群吗?