Почему документация 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 

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

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

  • Как загрузить пользовательский CSS в WebKit WebView с помощью PyObjC?
  • PyObjC на iPhone (iOS5) сломан?
  • Учебник PyObjC без Xcode
  • Как поместить окно tkinter поверх других?
  • Написание приложений какао в Python 3
  • Получение объекта pyobjc из целочисленного идентификатора
  • Есть ли примеры приложений iOS, написанных с использованием PyObjC?
  • PyObjc и какао на снежном барсе
  •  
    Interesting Posts for Van-Lav

    Как эффективно сравнивать строки в pandas DataFrame?

    Python distutils – кто-нибудь знает, как его использовать?

    переименовывать файлы в zip-папке с помощью zipmodule

    Невозможно вручную закрыть окно графика matplotlib

    Ошибка при использовании ExtraTreesClassifier в scikit-learn

    Взвешенная случайная выборка в python

    Примеры квантования Python?

    Как определить, какие точки находятся внутри многоугольника, а какие нет (большое количество точек)?

    python tkinter отображает анимированный GIF с использованием PIL

    Разбирайте объявление javascript-объекта, которое не использует строки для имен свойств (используя python и BeautifulSoup)

    Как вы используете subprocess.check_output () в Python?

    Как указать значение по умолчанию для поля Django ForeignKey Model или AdminModel?

    Форматирование строки Psycopg2 с именами переменных для создания типа

    pyspark: ValueError: некоторые типы не могут быть определены после вывода

    Python: улучшение поиска подстроки путем внедрения сложных алгоритмов

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