作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
关闭。这个问题是opinion-based .它目前不接受答案。
想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题.
1年前关闭。
Improve this question
我知道一些 Python,我对这种语言的易用性印象深刻。从我所看到的 Objective-C 来看,它看起来不那么漂亮,但它似乎是 Mac OS X 开发的通用语言(这意味着它有更好的文档)。
我正在考虑开始 Mac 开发——使用 PyObjC+Python 会让我成为二等公民吗?
最佳答案
是的。
一方面,正如您所注意到的,所有文档都是为 Objective-C 编写的,这是一种非常不同的语言。
一个区别是方法名称。在 Objective-C 中,当您向(Python 会说“调用一个方法”)一个对象发送消息时,方法名称(选择器)和参数是混合的:
NSURL *URL = /*…*/;
NSError *error = nil;
QTMovie *movie = [QTMovie movieWithURL:URL
error:&error];
movie = QTMovie.movieWithURL(URL, error = ???)
movieWithURL
的方法。 ; Objective-C 示例中的消息使用选择器
movieWithURL:error:
.
movieWithURL:
和
movieWithURL
将是另外两个选择器。
foo = Foo.foo(fred, bar=bar, baz=baz)
foo:bar:baz:
, 对?
foo:baz:bar:
的方法.由于 Python 的关键字参数没有排序,因此您实际上可能正在调用该方法。同样,如果您尝试拨打
foo:baz:bar:
,您实际上可能最终会拨打
foo:bar:baz:
.实际上,这种情况不太可能发生,但如果发生了,您将无法可靠地调用任一方法。
movie = QTMovie.movieWithURL_error_(URL, ???)
error:
参数接受一个指向指针变量的指针,该方法将在该变量中存储一个对象(这称为按引用返回)。 Python 没有指针,因此桥接器处理这样的参数的方式是传递 None,并且该方法将(似乎)返回一个元组。所以正确的例子是:
movie, error = QTMovie.movieWithURL_error_(URL, None)
关于python - 使用 Python 而不是 Objective-C 的缺点是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2175573/
我是一名优秀的程序员,十分优秀!