Цель - C определение одной и той же категории в нескольких модулях - PullRequest
1 голос
/ 29 февраля 2020

У меня есть 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. Почему это так? Как мне справиться с этой проблемой?

1 Ответ

0 голосов
/ 29 февраля 2020

Это так, потому что так его определяет язык. Если вы определяете категорию с одинаковым именем в двух местах, компилятор / компоновщик случайным образом выберет одно из них.

Вы можете иметь категории с разными именами. Только не называйте их обоих RawString.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...