Во-первых, я новичок в Objective-C, но я могу сказать то, что знаю.
Функции - это блоки кода, которые не связаны с объектом / классом, просто унаследованы от c, и вы вызываете их следующим образом:
// declaration
int fooFunction() {
return 0;
}
// call
int a;
a = fooFunction();
В то время как методы прикреплены к классу / экземпляру (объекту) и Вы должны указать классу / объекту для их выполнения:
// declaration
- (int)fooMethod {
return 0;
}
// call
int a;
a = [someObjectOfThisClass fooMethod];
Я думаю, что исключения Python печатаются путем запуска "str ()" в экземпляре исключения, который вернет интересующую вас отформатированную строку. Вы можете получить это из C, вызвав Метод PyObject_Str ()
, описанный здесь:
https://docs.python.org/c-api/object.html
Удачи!
Обновление: Я немного запутался, почему второй элемент, возвращаемый вам PyErr_Fetch ()
, является строкой. Я предполагаю, что вы получаете «ненормализованное исключение» и вам нужно вызвать PyErr_NormalizeException ()
, чтобы превратить этот кортеж в «настоящее» исключение, которое может отформатировать себя как строку, как вы хотите.