Доступ к Swift Control для каждой цели

Кто-нибудь знает, как иметь различный доступ к быстрому управлению для разных целей. По сути, у меня есть платформа iOS в Swift с двумя целями A и B. Я хотел, чтобы класс сказал «Привет» как общедоступный в цели A и внутренний в цели B. Один из способов определить флаг Swift и иметь что-то вроде этого .

#if FLAG

public class Hello {

#else
class Hello {

#endif

Открытая скобка без закрывающей скобки в той же области видимости компилируется в Swift. Один из возможных способов иметь пустой класс под флагом и поместить остальные в расширение. Это не очень хорошее решение, так как мне нужно сделать некоторые функции также под флагом для управления доступом. Есть ли решение для управления доступом без дублирования функций?

Или подход в корне неверный? Мне нужна оболочка для класса, чтобы сделать его общедоступным?


person Vijayakrishna Kalluraya    schedule 25.04.2016    source источник
comment
Попробуйте поставить один { после #endif, а не в конце двух строк class.   -  person rmaddy    schedule 25.04.2016
comment
Нет, это не работает.   -  person Vijayakrishna Kalluraya    schedule 25.04.2016


Ответы (1)


К сожалению, это не то, что вы можете сделать в Swift. В Objective-C вы могли делать подобные трюки, и компилятор проигнорировал бы все, что недопустимо внутри макросов, которые не были исключены. Это не относится к Свифту. Весь файл должен быть действительным, включая части, которые игнорируются из-за #if.

person Dave Wood    schedule 25.04.2016
comment
Конечно, повезло это или нет, во многом зависит от того, пытались ли вы когда-либо отлаживать проблемы сборки, связанные с макросами: D - person Rob Napier; 26.04.2016
comment
Ага. Я просто имел в виду, к сожалению, для плаката. Это лучше в долгосрочной перспективе. - person Dave Wood; 26.04.2016