Я портировал некоторый код Objective-C/CoreGraphics, который делает скриншот нескольких мониторов, но он не работает. Ребята из jsctypes не смогут помочь, потому что в этом разделе я просто отвечаю на вопросы, лол.
Код objc/cg взят отсюда: https://stackoverflow.com/a/28247749/1828637
Мои jsctypes type/struct/declares находятся здесь: https://github.com/Noitidart/NativeShot/blob/mac-troubleshooting/modules/ostypes_mac.jsm
Порт jsctypes находится здесь: https://github.com/Noitidart/NativeShot/blob/mac-troubleshooting/modules/workers/MainWorker.js#L443-656
И последняя строка - строка 643, которая вызывает сбой:
var rez_writeToFile = ostypes.API('objc_msgSend')(data, ostypes.HELPER.sel('writeTofile:atomically:'), myNSStrings.get(OS.Path.join(OS.Constants.Path.desktopDir, 'full_ss.png')), ostypes.CONST.YES);
Это совпадает с целью
[data writeToFile:@"/tmp/screenshot.png" atomically:YES];
за исключением того, что я изменил путь на ... рабочий стол / ... png
Я написал в отдельные гисты, чтобы выровнять строки в программном обеспечении для сравнения текстов, чтобы убедиться, что я все сделал.
- Вот objc/cg: https://gist.github.com/Noitidart/8affcd8bee60d22dcb52
- и вот jsctypes: https://gist.github.com/Noitidart/3d4a4e8df625dbea8cc1
Я не думаю, что я что-то пропустил, я не знаю, почему он вылетает на этой последней строке.
Видит ли кто-нибудь из разработчиков ObjC/CG какое-либо неверное определение типа или что-то, что я пропустил (например, в коде ObjC используются составные операторы, я не уверен, что понял/перевел их правильно в порте).