Если вы делаете это на Mac, то да, это возможно. На iOS не так много.
На Mac, если вы можете создать приложение CLI в MonoMac, вы можете вызвать свое приложение CLI из своего приложения Objective-C с помощью NSTask. NSTask позволяет легко запускать инструмент командной строки, а затем захватывать его вывод и взаимодействовать с ним. Для этого вы бы сделали что-то вроде:
NSArray *args = [NSArray arrayWithObjects:@"-arg1", @"-arg2", nil];
NSTask *foo = [[NSTask alloc] init];
[foo setLaunchPath:@"/usr/bin/foo"];
[foo setArguments:args];
NSPipe *pipe = [NSPipe pipe];
[foo setStandardOutput:pipe];
NSFileHandle *output = [pipe fileHandleForReading];
[foo launch];
NSData *data = [output readDataToEndOfFile];
NSString *outputStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"Got stuff: %@", outputStr);
Как правило, так, как вы хотите это сделать, вы включаете приложение CLI внутри вашего пакета приложений. Затем вы можете получить путь к CLI-приложению, используя NSBundles -pathForResource: ofType: method.
iOS не включает API NSTask, так что это невозможно. Я слышал о некоторых людей, использующих MonoTouch, чтобы делать приложения для iOS с использованием C #, но, как вы и предполагали, я думаю, что лучше всего придерживаться Objective-C для большей части вашего приложения, если это возможно. Использование CLI-приложения, как вы описываете, определенно является опцией на Mac и может быть особенно полезно, когда у вас есть код, который уже написан и протестирован и работает, что вы просто хотите «обернуть» графическим интерфейсом Cocoa.
Итак, NSTask - это один из способов сделать это, используя внешний исполняемый файл CLI, завернутый в ваш пакет приложений. С другой стороны, вам может быть интересно, можете ли вы связать свой код C # непосредственно с Objective-C?
Ну, Objective-C является надмножеством C, и, как таковой, он обладает всеми возможностями C. Кроме того, если вы используете Objective-C ++, у него есть все возможности C ++. Итак, ЕСЛИ вы можете получить MonoMac для создания статической библиотеки C или C ++, тогда да, вы могли бы просто связать свою статическую библиотеку с кодом какао Objective-C, и она будет работать. Я не могу сказать вам, как сделать библиотеку из MonoMac, но связать ее - это просто добавить ее в свои связанные библиотеки в настройках сборки в Xcode.
EDIT: я не знаком с C ++ / CLI в качестве языка, и я неверно истолковал значение C ++ / CLI как «C ++ Command Line Interface app». Тем не менее ... методы, которые я описал, по-прежнему применяются как возможные методы для выполнения того, что вы хотите сделать, но НЕ используют интерфейс C ++ / CLI, как вы можете в Windows.
.values ()
Вы можете вызвать метод values ()
в своем перечислении.
for (Direction dir : Direction.values()) {
// do what you want
}
Этот метод values ()
неявно объявлен компилятором . Таким образом, он не указан в Enum
doc.
Все константы перечисляемого типа могут быть получены путем вызова неявного общедоступного статического T [] values ()
метода этого типа:
for (Direction d : Direction.values()) {
System.out.println(d);
}
Вы можете сделать это следующим образом:
for (Direction direction : EnumSet.allOf(Direction.class)) {
// do stuff
}
Если вас не волнует порядок, это должно сработать:
Set<Direction> directions = EnumSet.allOf(Direction.class);
for(Direction direction : directions) {
// do stuff
}
for (Direction d : Direction.values()) {
//your code here
}