16

一切都在标题中:)

ObjC 中是否有任何模板?

我需要相当于 c# :

public class MyClass<T> : Message

在 ObjC 中。

任何帮助都将非常感谢:(

4

3 回答 3

14

没有这样的 ObjC 功能。虽然 ObjC++ 确实存在,但我强烈反对广泛使用它。它有很多问题,从糟糕的工具和调试器支持,到糟糕的编译器优化,再到降低的 ARC 性能。

ObjC 通常不需要模板,因为它不是强类型语言。AnNSArray可以容纳任何对象,因此您无需使用模板即可获得正确的类型。你有一个你想要解决的具体问题吗?可能有更好的 ObjC 解决方案。

于 2012-04-06T12:54:54.643 回答
6

Obj-C 自 Xcode v7 起支持模板。它被命名为泛型:

轻量级泛型现在允许您为集合类指定类型信息,例如 NSArray、NSSet 和 NSDictionary。当您从 Objective-C 桥接时,类型信息改进了 Swift 访问,并简化了您必须编写的代码。例如:

NSArray<UIImage *> *images; 
NSDictionary<NSString *, NSURL *> *resourcesByName;

在https://developer.apple.com/library/content/documentation/Xcode/Conceptual/RN-Xcode-Archive/Chapters/xc7_release_notes.html中查找“Objective-C 语言更改”部分

于 2016-05-30T12:43:43.767 回答
1

顺便说一句,Xcode 支持通过 New->File 添加 C++ 类。在 C++ 中使用 extern "C" {} 构造意味着您可以根据需要提供尽可能多或尽可能少的 C 可调用接口,然后您可以直接从您的 Objective-C 代码调用,因为 Objective-C 是 C 的超集.

话虽如此,坚持使用 Objective-C 范式可能是一个好主意,除非您有迫切的理由要移出它,例如需要将现有 C++ 代码体合并到您的项目中。(这并不是说 Objective-C 是一种“更好”的语言,这完全是另一回事。)

于 2013-01-25T13:36:51.973 回答