python - 扩展 Python 和 Objective-C

标签 python objective-c pyobjc

我是干净代码的粉丝。我喜欢我的语言能够表达我想要做的事情,但我也喜欢反射(reflect)这一点的语法。

例如,我在 Objective-C 中为越狱的 iPhone 开发了很多程序,这些程序使用运行时的 method_setImplementation() 函数修补其他代码。或者,在 PyObjC 中,我必须使用语法 UIView.initWithFrame_(),这对于方法名称的结构方式来说也非常糟糕且不可读。在这两种情况下,该语言在语法上都不支持这种情况。我发现了实现此目的的三种基本方法:

  • 疯狂的宏。看看这个 “CaptainHook”,它做的是我的事 以可用的方式寻找,但它 不是很干净而且是一个主要的 黑客攻击。
  • 还有“Logos”, 实现了一个非常好的语法,但是 用 Perl 编写并解析我的代码 大量的正则表达式。这 吓到我。我喜欢添加的想法 %hook ClassName,但不使用 解析 C 的正则表达式或 Objective-C。
  • 最后是 Cycript。这是一 JavaScript 的扩展 与 Objective-C 的接口(interface) 运行时并允许您使用 Objective-C 风格的代码在你的 JavaScript,并将其注入(inject) 其他流程。这很可能是 最干净,因为它实际上使用解析器 对于 JavaScript,但我不是 总的来说,该语言的忠实粉丝。

我应该并且应该如何创建 Python 和 Objective-C 的扩展来允许我做到这一点?如果只在像这样的非常专业的领域,是否值得为我的语言编写一个解析器来将语法转换为更好的东西?我应该忍受默认的 Objective-C hooking 或 PyObjC 的可怕语法吗?

最佳答案

如果您在编译器或解释器设计方面没有任何经验,我的回答是肯定的,这是计算机科学中最大的挑战之一。

如果您确实有过这样的经历,我的答案就会变成“这真是个愚蠢的主意。”

您认为这会成为其他人想要使用的大型成熟产品吗?如果您这样做,那就继续吧,否则它只会分散您编写优秀应用程序的注意力。

关于python - 扩展 Python 和 Objective-C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2474554/

相关文章:

python - 使用python多线程不断获取输入

iphone - 使用 RestKit 0.20.x 下载和解压 zip 文件

iphone - 自定义 UITableViewCell 删除 subview

ios - iOS中使用performSelector的回调函数

python - NSUserNotificationCenter.defaultUserNotificationCenter() 在 python 中返回 None

python - 使用Scrapy在管道内的MYSQL数据库中的2个表上添加项目

python - Altair 默认调色板颜色(十六进制)

python - 你如何在 Python 中找到 2 个点以直角相交的点?

python - 打印安装的pyObjC版本?

objective-c - 如何让 Interface Builder 识别新语言的 IBOutlet/IBAction?