Objective-C 上缺少 Smalltalk 运行时功能?

2023-12-31

我不太了解 Smalltalk,但我了解一些 Objective-C。我对 Smalltalk 很感兴趣。

它们的语法有很大不同,但基本的运行时结构(即功能)非常相似。并且运行时功能由运行时支持。

我认为两种语言在这个意义上非常相似,但是 Smalltalk 上有许多 Objective-C 运行时所没有的功能。举个例子,thisContext操纵调用堆栈。或者non-local return解除块执行。这blocks。它只在 Smalltalk 上实现,无论如何现在它也在 Objective-C 上实现了。

因为我不是 Smalltalk 方面的专家,所以我不知道这类功能。特别是对于高级用户。哪些功能仅在 Smalltalk 中可用?本质上,我想了解 Smalltalk 的高级功能。所以已经在 Objective-C 上实现的功能就可以了,比如block.


虽然我在 Objective-C 方面有相当丰富的经验,但我并不像许多人那样精通 Smalltalk,但我已经做了一些。

由于多种原因,很难真正列举出哪种语言具有哪些功能的列表。

首先,什么是“语言特征”?在 Objective-C 中,甚至块实际上也是与 Foundation API 以及诸如for(... in ...)语法要求符合相对高层的协议。您真的可以在不考虑最重要的 API 特性的情况下再谈论一种语言吗? Smalltalk 也是如此。

其次,两者在消息传递的工作方式和继承的实现方式方面非常相似,但在代码从头脑中的想法到在计算机上运行的方式方面也非常不同。概念上的不同之处在于,它使得两者之间的逐个功能比较变得困难。

两者之间的主要区别实际上取决于它们构建的基础。 Objective-C 构建在 C 之上,因此继承了 C 的所有优点(速度、可移植性、灵活性等)和缺点(有效的宏汇编器、愚蠢的调用 ABI、缺乏任何类型的安全网) &编译为金属的语言。虽然 Objective-C 分层在一堆相对高级的 OO 功能(编译时和运行时)上,但由于 C 的本质,存在限制。

另一方面,Smalltalk 采用更加自上而下的纯 OO 模型;一切事物,小到一点的表示,都是一个对象。甚至调用堆栈、异常、接口……一切……都是一个对象。 Smalltalk 运行在虚拟机上,该虚拟机本身通常是一个相对较小的本机字节代码解释器,它消耗实现更高级别功能的smalltalk 字节代码流。在smalltalk中,更多的是关于使用一组状态和功能配置虚拟机来呈现您需要的功能(其中该配置可以像应用程序一样有效地进行快照和分发),而不是创建独立的应用程序。

所有这一切意味着您始终(在锁定模式之外)拥有一个非常高级的 shell 来与虚拟机交互。该 shell 通常也是您的 IDE。通常,您不是在“编辑-编译-修复-编译-运行”的环境中编写代码,只要代码在语法上正确,代码就会立即生效。调试器、编辑器、运行时和程序之间的界限是模糊的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Objective-C 上缺少 Smalltalk 运行时功能? 的相关文章

  • 使用 Java 创建 plist

    有没有一种简单的方法可以用Java创建plist 结果应该与 Objective C 中序列化字典相同 The PList http code google com p xmlwise source browse trunk src mai
  • 将属性字符串中的正则表达式匹配替换为 Objective-C 中的图像

    我的目标是在 Parse com 中存储属性字符串的信息 我决定为我的图像提出一种属性文本编码 通过替换任何字符串来工作 X 与相应的图像放在大括号中 例如 Picture of 2 colorless mana X 应该产生一个属性字符串
  • UICollectionView 和补充视图(标题)

    尝试将补充视图添加到我的UICollectionView作为标题 我在让它工作时遇到问题 我用的是自定义的UICollectionViewFlowLayout返回一个contentSize总是比框架大至少 1 像素 我使用的是UIFresh
  • Objective C:在 gdb 中哪里可以找到

    我正在尝试使用 NSZombie 调试我的程序 调试器确实返回了存在问题的实例的地址 但是我不确定在哪里获取运行命令 shell malloc history 所需的 pid 谁能告诉我在这种情况下使用的正确 pid 是什么 我尝试了 32
  • 未调用[super方法]时发出警告

    不使用 ARC 时 如果未在 dealloc 方法中调用 super dealloc 您会收到警告 我正在尝试实现与经常被子类化的类类似的东西 以在实现子类的人不调用 super 时警告他们 有任何想法吗 llvm的最新版本添加了一个属性
  • 如何隐藏标签栏并在屏幕上显示完整的表格视图?

    在我的应用程序的实现中 我有一个带有 5 个不同选项卡的选项卡栏控制器 通过以下代码隐藏标签栏后 void hideTabBar for UIView view in self tabController view subviews if
  • 多对多关系中的 KVO 对象属性

    我有一个核心数据对多关系 由父 gt 子组成 我想设置一个键值观察机制 以便当任何子对象上的属性 例如 firstName lastName 发生更改时 它会触发通知 使用标准 KVO 语法时 self parentObject addOb
  • iOS 应用程序和.NET 应用程序之间的通信?

    我有 2 个应用程序 一个是 iOS 应用程序 一个是 NET 应用程序 我希望我的 iOS 应用程序发送一条消息 调用 NET 应用程序的方法 将一些字符串发送到 NET 应用程序以保存到数据库 那么 我的 iOS 应用程序如何与 NET
  • UIWebView didFinishLoading 多次触发

    我有一些代码需要在 a 之后运行UIWebView完成加载文档 为此我设置了UIWebView的委托给我的控制器 并实现了webViewDidFinishLoading method 这会被多次调用 具体取决于要加载的页面类型 我不确定是否
  • 如何在首选项包中使用 PSLinkListCell 中的值?

    我想为我的越狱调整制作一个偏好包 我成功地制作了一个带有可用开关的首选项捆绑包 但我想要一个选择颜色的设置 例子 Blue Color gt Yellow Green 所以如果我点击Color 它会将我带到另一个屏幕 要求我选择 Blue
  • SplitViewController 与 TabbarController

    我在我的应用程序中使用分割视图功能 我必须将选项卡栏放在 rootViewController 中 但是 当我在选项卡栏中添加控制器并将它们添加到分割视图中时 它不会分割 它只显示detailViewController 这是应用程序中完成
  • 更新到 Xcode 7.0.1,项目现在有问题

    因此 我将 Xcode 6 1 版本上传到 iTunes Connect 并且该应用程序获得了批准 现在我正在尝试更新应用程序 我更新到 Xcode 7 0 1 Xcode 给我带来了问题 指出 对于应用程序 我使用了故事板和 Object
  • 解析后 UITableView 委托和数据源在单独的类中

    我需要从一个单独的类设置 UITableView 委托和数据源 方法调用解析后数据准备就绪 但每次我的表都是空的 我正在使用 ARC 这是简化的代码 HomeViewController h import
  • 如何在 iPhone 应用程序的 url 中传递字符串值

    NSURLRequest request NSURLRequest requestWithURL NSURL URLWithString http www krsconnect no community api html method ba
  • 核心数据:解决一个奇怪的 EXC_BAD_ACCESS 错误

    我在核心数据方面面临着一个非常奇怪的问题 我们来描述一下 定义 假设我有两个模型 ModelA and ModelB 在数据模型中ModelA有参考ModelB作为一对多关联 因此ModelB与 具有一对一关联ModelA Update 当
  • 我如何知道 UITableView 何时完成 ReloadData?

    我试图在执行完成后滚动到 UITableView 的底部 self tableView reloadData 我原本有 self tableView reloadData NSIndexPath indexPath NSIndexPath
  • 使用 iOS 设备作为 TCP 客户端 - 无 Bonjour

    我想使用 iOS 设备作为 TCP 客户端 但我找不到可理解的 API 指南 示例来说明如何做到这一点 我试过SimpleNetworkStreams and PictureSharing 但他们都使用 Bonjour 我可以轻松建立 UD
  • 连接到 Apple Music

    所以我尝试使用 React Native 应用程序从 iOS 设备连接到 Apple Music 有一个 API 可以执行相同的操作 但我需要从 storekit 框架调用一个函数 提出个性化请求 苹果音乐API https develop
  • insertObject:atIndex 的复杂性:

    复杂度是多少 NSArray insertObject atIndex N 或常数 另外 如何找出各种 Objective C 语句的复杂度 有一个在这里讨论 http www cocoadev com index pl NSMutable
  • 桌面上的 AVAudioSession?

    在 mac 桌面上 我试图录制系统声音 以及可选的麦克风声音 但一开始我只是录制系统声音 我正在遵循本指南 https www appcoda com ios avfoundation framework tutorial https ww

随机推荐