Objective-C 在多个模块中定义相同的类别
Objective-C defining the same category in multiple modules
我在 2 个模块中定义了 2 个类别:
Module 1:
Array2D+RawString.m:
@implementation Array2D(RawString)
+ (Array2D *)arrayWithRawString {
// some implementation specific to module 1
}
@end
Module 2:
Array2D+RawString.m:
@implementation Array2D(RawString)
+ (Array2D *)arrayWithRawString {
// some implementation specific to module 2
}
@end
这两个类别仅在其自己的模块中可见。我期望的是,模块 1 中的代码将是模块 1 中的文件,反之亦然。
但是,我注意到模块 2 的实现实际上被模块 1 覆盖了。为什么会这样?我该如何处理这个问题?
之所以如此,是因为语言就是这样定义它的。如果你在两个地方定义同名的类别,compiler/linker 会随机选择其中一个。
您可以使用不同名称的类别。只是不要将它们都称为 RawString。
我在 2 个模块中定义了 2 个类别:
Module 1:
Array2D+RawString.m:
@implementation Array2D(RawString)
+ (Array2D *)arrayWithRawString {
// some implementation specific to module 1
}
@end
Module 2:
Array2D+RawString.m:
@implementation Array2D(RawString)
+ (Array2D *)arrayWithRawString {
// some implementation specific to module 2
}
@end
这两个类别仅在其自己的模块中可见。我期望的是,模块 1 中的代码将是模块 1 中的文件,反之亦然。
但是,我注意到模块 2 的实现实际上被模块 1 覆盖了。为什么会这样?我该如何处理这个问题?
之所以如此,是因为语言就是这样定义它的。如果你在两个地方定义同名的类别,compiler/linker 会随机选择其中一个。
您可以使用不同名称的类别。只是不要将它们都称为 RawString。