Параметры Swift не отображаются внутри функции Objective C? - PullRequest
0 голосов
/ 29 мая 2020

Немного предыстории: я создаю приложение на языке React Native, которое использует библиотеку Objective C, написанную около 6 или 7 лет go, может быть, старше. Я пишу быстрый код, который был настроен для отправки обратных вызовов в собственное приложение React в JS. У меня есть эта функция, которую я пытаюсь использовать:

token = service.getUserToken(server,
                port:  P2PFunctions.tls_port,
                appId: P2PFunctions.appID,
                appSecret: P2PFunctions.appSecret,
                phone: P2PFunctions.phone,
                token: nil, errcode: errCode, errmsg: nil);
        callback(["\(token!)"]);

И это ее определение:

- (NSInteger)getUserToken:(NSString*)ip_In port:(NSInteger)port_In appId:
(NSString*)appId_In appSecret:(NSString*)appSecret_In phone:
(NSString*)phoneNum_In token:(NSString**)accessTok_Out errcode:
(NSString**)strErrCode_Out errmsg:(NSString**)errMsg_Out;

Это те типы, которые я использую (EDIT: я изменил их из частного в publi c, и они все еще не распознаются):

Static Variables

Проблема в том, что я получаю ноль обратно из функция. Я считаю, что получаю пустой ответ HTTP, и я замечаю, что внутри отладчика, когда я перехожу к функции Objective C, я вижу nil для всех моих параметров внутри функции Objective C. Я думаю ... дело в том, что я не передаю правильный тип. Или мои параметры Swift не отображаются в памяти Objective C. Если ожидается (NSString *), следует ли передавать строку?

Как передать правильные типы из Swift в Objective C? Что бы я изменил в вызове функции? Мои типы параметров в порядке? Я не могу редактировать исходную библиотеку Objective C. У них общая память для всех переменных во всей программе, не так ли?

Большое вам спасибо!

Ответы [ 2 ]

2 голосов
/ 29 мая 2020
• 1000
0 голосов
/ 04 июня 2020

Итак, потратив неделю или около того на эту проблему, я понял, что дело не в том, что параметры на самом деле не передаются, а в том, что отладчик просто не отображает значения этих параметров, по крайней мере, в основном потоке . Поскольку я получал код ошибки, я подумал, что что-то не так с тем, как я вызвал функцию, но на самом деле с вызовом функции все в порядке, переменные просто не отображались в отладчике по какой-то причине:

Varables are nil in the debugger, but they are in fact being passed correctly.

Переменные выше кажутся равными нулю, но на самом деле они имеют значения.

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