Код скриншота OSX Obj-C/CG портирован на js-ctypes - сбой в последней строке

Я портировал некоторый код 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 какое-либо неверное определение типа или что-то, что я пропустил (например, в коде ObjC используются составные операторы, я не уверен, что понял/перевел их правильно в порте).


person Noitidart    schedule 11.05.2015    source источник


Ответы (1)


Ничего себе, так что после нескольких часов борьбы, а затем публикации этого я сразу понял, ха-ха

Опечатка корпуса в селекторе!! У меня было writeTofile:atomically вместо writeToFile:atomically!

Если кто-то хочет проверить это, это простой тестовый пример надстройки Firefox.

  1. Установите дополнение, позволяющее устанавливать дополнения из репозиториев github, отсюда: https://addons.mozilla.org/en-US/firefox/addon/github-extension-installer/
  2. Перейдите к фиксации в этой ветке, которая работает здесь: https://github.com/Noitidart/NativeShot/tree/f5f2e8606d3c5c657e901239d3ceb8c8c79a4494
  3. Затем нажмите кнопку «Добавить в Firefox» в правом нижнем углу под кнопкой «Загрузить Zip».
  4. Щелкните значок кнопки на панели инструментов, который добавляется в Firefox, как показано на этом снимке экрана: http://i.imgur.com/n7lSxje.png
  5. Проверьте рабочий стол, теперь у вас есть один png-файл со скриншотами всех мониторов, огромное спасибо @KenThomas!
person Noitidart    schedule 11.05.2015