Почему документация PyObjC так плоха?

Например, http://developer.apple.com/cocoa/pyobjc.html все еще для OS X 10.4 Tiger, а не 10.5 Leopard .. И это официальная документация Apple для него ..

Официальная страница PyObjC одинаково плоха, http://pyobjc.sourceforge.net/

Это так плохо, что это озадачивает. Я рассматриваю возможность изучения Ruby в первую очередь потому, что материал RubyCocoa настолько хорошо документирован, и есть много достойных учебников (например, http://www.rubycocoa.com/ ), а также из-за обуви GUI toolkit ..

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

Все, что я хочу сделать, это создать довольно простые приложения Python с графическим интерфейсом Cocoa.
Может ли кто-нибудь пролить свет на ужасную документацию или указать мне на некоторые уроки, которые не просто дают вам огромные блоки кода и предполагают, что вы знаете, что делает NSThread.detachNewThreadSelector_toTarget_withObject_("queryController", self, None) .?

9 Solutions collect form web for “Почему документация PyObjC так плоха?”

Я согласен, что этот урок ошибочен, бросая случайный, необъяснимый код прямо перед вашими глазами. Он вводит такие понятия, как пул автозапуска и пользовательские значения по умолчанию, не объясняя, почему вы хотели бы их («пул авторесурсов для управления памятью» вряд ли является объяснением).

Тем не менее …

в основном все, что я хочу сделать, это писать приложения Cocoa без изучения ObjC.

Я боюсь, что на данный момент вам потребуется базовое понимание ObjC, чтобы извлечь выгоду из любого языка, использующего Cocoa. PyObjC, RubyCocoa, Nu и другие – это ниши в лучшем случае, и все они были разработаны людьми, глубоко знакомыми с возможностями ObjC и Cocoa.

На данный момент вы выиграете больше всего, если вы реалистично увидите, что эти мосты являются полезными, когда языки сценариев по-настоящему сияют, вместо того, чтобы пытаться построить с ними целое приложение. Хотя это было сделано (с LimeChat, я сейчас использую приложение, написанное RubyCocoa), оно редко и, вероятно, будет какое-то время.

Основная причина отсутствия документации для PyObjC заключается в том, что есть один разработчик (я), и, как и большинство разработчиков, мне не особенно нравится писать документацию. Поскольку PyObjC – это побочный проект для меня, я стараюсь сосредоточиться на работе над функциями и исправлениями, потому что это более интересно для меня.

Лучший способ улучшить документацию – добровольно помочь в списке рассылки pyobjc-dev.

В стороне: список рассылки pythonmac-sig (см. Google) – это отличный ресурс для получения справки по Python на MacOSX (а не только PyObjC).

Быть тупым:

Если вы хотите быть эффективным программистом Cocoa, вы должны изучить Objective-C. Конец истории.

Ни Python, ни Ruby не заменяют Objective-C через их соответствующие мосты. Вам все еще нужно понимать API Objective-C, поведение, присущее производным классам NSObject, и многие другие детали Cocoa.

PyObjC и RubyCocoa – отличный способ получить доступ к функциям Python или Ruby из приложения Cocoa, включая создание приложения Cocoa в основном – если не полностью – в Python или Ruby. Но успех в нем основан на глубоком понимании Cocoa и API Objective-C, в который он состоит.

Ответ Тома и Мартина определенно верен (практически в любом проекте с открытым исходным кодом вы обнаружите, что большинство участников особенно заинтересованы в разработке, а не столько в вопросах, связанных с полу, как документация), но я не подумайте, что ваш конкретный вопрос в конце будет хорошо вписываться в документацию PyObjC.

 NSThread.detachNewThreadSelector_toTarget_withObject_("queryController", self, None) 

NSThread является частью API Cocoa и, как это + detachNewThreadSelector:toTarget:withObject: в Apple , включая конкретный метод + detachNewThreadSelector:toTarget:withObject: (я бы связал его, но, очевидно, у stackoverflow есть ошибки с его разбором). В вики CocoaDev также есть статья .

Я не думаю, что PyObjC неплохо было бы попытаться документировать Cocoa, кроме нескольких базовых примеров того, как использовать его из Python. Объяснение селекторов также, вероятно, выходит за рамки PyObjC, так как они тоже являются особенностью Objective-C, а не PyObjC.

Я наткнулся на хороший учебник по PyObjC / Cocoa:

http://lethain.com/entry/2008/aug/22/an-epic-introduction-to-pyobjc-and-cocoa/

Все, что я хочу сделать, это создать довольно простые приложения Python с графическим интерфейсом Cocoa. Может ли кто-нибудь пролить свет на ужасную документацию или указать мне на некоторые уроки, которые не просто дают вам огромные блоки кода и предполагают, что вы знаете, что NSThread.detachNewThreadSelector_toTarget_withObject_ («queryController», «я», «Нет») делает …?

[…]

в основном все, что я хочу сделать, это писать приложения Cocoa без изучения ObjC.

Хотя я в основном согласен с ответом Соерена, я бы взял его еще дальше:

Это будет длительное время, если когда-либо, прежде чем вы сможете использовать Cocoa без какого-либо понимания Objective C. Cocoa – это не абстракция, построенная независимо от Objective C, она явно привязана к ней. Вы можете увидеть это в строке примера кода, который вы указали выше:

 NSThread.detachNewThreadSelector_toTarget_withObject_("queryController", self, None) 

Это способ написания строки Objective C на Python:

 [NSThread detachNewThreadSelector:@selector(queryController:) toTarget:self withObject:nil]; 

Теперь важно заметить, что эту строку можно увидеть двумя способами: (1) как линия Objective C или (2) как вызов каркасов Cocoa. Мы видим это как (1) по синтаксису. Мы видим это как (2), признавая, что NSThread представляет собой структуру Cocoa, которая предоставляет набор удобных функций. В этом случае эта конкретная структура Cocoa облегчает нам задачу, когда объект начинает что-то делать в новом потоке.

Но кикер таков: структура Cocoa здесь (NSThread) предоставляет нам этот удобный сервис таким образом, который явно привязан к языку, на котором была написана инфраструктура. А именно, NSThread дал нам функцию, которая явно относится к «селекторам», , Селекторы – это, по сути, название чего-то фундаментального в том, как работает Objective C.

Так что есть руб. Какао в корне представляет собой создание Objective-C, и его создатели построили его с целью Objective C. Я не утверждаю, что невозможно перевести интерфейс в функции Cocoa в более естественную для других языков форму. Просто, как только вы измените структуру Cocoa, чтобы перестать ссылаться на «селекторов», это уже не какао-каркас. Это переведенная версия. И как только вы начнете идти по этой дороге, я предполагаю, что все становится очень грязным. Вы пытаетесь не отставать от Apple, поскольку они обновляют Cocoa, возможно, вы попали в некоторые части Cocoa, которые просто не переводят на новый язык, независимо от того. Таким образом, такие вещи, как PyObjC, позволяют напрямую подвергать Cocoa, таким образом, чтобы иметь очень четкую и простую взаимосвязь. Как говорится в документации:

Чтобы иметь без потерь и однозначный перевод между сообщениями Objective-C и методами Python, эквивалент имени метода Python – это просто селектор с двоеточиями, замененный символами подчеркивания.

Конечно, это немного уродливо, и это означает, что вам нужно что-то знать о Objective-C, но это потому, что альтернатива, если она действительно существует, не обязательно лучше.

Я вообще ничего не знал о Objective C или Cocoa (но много о Python), но сейчас я пишу довольно сложное приложение в PyObjc. Как я узнал? Я взял Программу какао для OSX и просмотрел всю книгу (довольно быстрый процесс) с помощью PyObjC. Просто игнорируйте что-нибудь об управлении памятью, и вы в значительной степени будете в порядке. Единственное предостережение в том, что очень редко вы должны использовать декоратор, такой как endSheetMethod (на самом деле я думаю, что это единственный, кого я ударил):

 @PyObjcTools.AppHelper.endSheetMethod def alertEnded_code_context_(self, alert, choice, context): pass 

Этот ответ не будет очень полезен, но, как разработчик, я ненавижу делать документацию. Это проект с открытым исходным кодом, и трудно найти людей для работы с документацией.

Том все это говорит. Многие проекты с открытым исходным кодом имеют преданных разработчиков и немногих, кто заинтересован в документировании. Этому не помогает тот факт, что стойки ворот могут меняться ежедневно, что означает, что документация должна не только создаваться, но и поддерживаться.

  • Установить PyObjC на Python 2.6 на OS X 10.5?
  • Создать (нормальное / безопасное) имя файла из любой (небезопасной) строки
  • Как я могу прослушивать событие мыши в Python на Mac?
  • PyObjC на Xcode 4
  • Код Python для обнаружения темного режима в OS X El Capitan для изменения значка меню состояния
  • Работа с центром уведомлений Mountain Lion с использованием PyObjC
  • ImportError: нет модуля с именем Foundation
  • Использование импорта pyobjc в PyDev в Eclipse на Mac OS X
  • NSUserNotificationCenter.defaultUserNotificationCenter () возвращает None, используя PyInstaller
  • Можно ли вызывать модуль Python из ObjC?
  • Установка Pyglet в Mac
  •  
    Interesting Posts for Van-Lav

    sqlite3.ProgrammingError: Неправильное количество привязок. В текущем заявлении используется 1, и имеется 5

    Как распечатать отчет о классификации scikit?

    Измените код отправки кода Emacs на интерпретатор «Команда Cc Cr в режиме IPython

    Может ли программа Native Client (NaCl) записываться на языках, отличных от C или C ++?

    Декодирование base64 от POST для использования в PIL

    Как правильно найти значение в индексе в nd массиве и сохранить его как список в python?

    Внедрение более быстрого внутреннего продукта python с BLAS

    используя массив numpy в качестве индексов второго dim другого массива?

    Python: преобразование радианов в градусы

    Matplotlib Pandas: отображает имена столбцов внутри штабеля

    Сортировка массивов в NumPy по столбцам

    Как конвертировать midi-файлы в нажатие клавиш (в Python)?

    Как умножить два вектора и получить матрицу?

    Есть ли один код строки, чтобы найти максимальное значение в матрице?

    Python / Java-скрипт для загрузки всех файлов .pdf с веб-сайта

    Python - лучший язык программирования в мире.