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 运行时功能? 的相关文章

  • Objective-C – 拥有包含 TestFlight SDK 的 TestFlight 配置

    我已按照 TestFlight 的说明复制 发布 配置 我还使用 TestFlight SDK 从我的应用程序获取实时报告 通过这样做 我必须在我的应用程序中包含一些 TestFlight 代码 当然 我不想在我的应用程序的发布版本中包含此
  • UIPanGestureRecognizer 对坐标的限制

    我在主 UIView 中添加了一个子视图 称为panel 并且我向其中添加了gestureRecognizer 因为我希望它只能在Y轴上拖动并且只能在某些限制下 即160 300 超过300它不能拖动 我以这种方式实现了手势处理 IBAct
  • ios水平居中约束问题?

    I am having hard time in learning constraints auto layout in iOS I have used any width any height I have a storyboard sc
  • 如何将 ios7 通用应用程序升级到基于 Xcode 6 的通用故事板应用程序?

    我目前有一个基于 xcode 5 ios 7 的通用应用程序 因此有两个故事板 我正在考虑将其更新到 ios 8 有没有办法 最佳方法将两个故事板迁移到通用的单个故事板 我在 xcode 6 中看不到转换选项 None
  • 水平 UICollectionView 单行布局

    我正在尝试使用以下命令设置简单的水平布局UICollectionView 兜圈子却没有达到预期的结果 所以任何指针或例子将不胜感激 我粘贴经常更改的代码但没有成功可能没什么意义 该图像显示两行 第一行是单个项目 尺寸正确并且在中心正确对齐
  • UIImageJPEGRepresentation 在视网膜显示屏上提供 2x 图像

    我有这段代码 它创建一个图像 然后向其添加一些效果并缩小其大小以使其largeThumbnail UIImage originalImage UIImage imageWithData self originalImage thumbnai
  • 如何判断 NSObject 是否具有某个属性?

    假设在 Apple API 1 0 版中 有一个 NSFoo 类 其属性为 color API 1 1 添加了属性 size 我想知道是否可以使用 getter myFoo size myFoo respondsToSelector sel
  • iOS 7 tabBar 横线,如何去掉?

    Apple 在 iOS 7 中的 tabBar 上添加了一条细线 该线应该在 tabBar 和 UI 之间起到阴影或淡入淡出的作用 由于我使用的是定制的 tabBar 这条线非常令人恼火 你如何删除它 请告诉我这是可能的 否则我需要重新设计
  • 无法将项目添加到 NSMutableArray ivar

    我的目标是将字符串添加到数组中 并在我调用的方法中执行此操作 在这个方法中 我在数组中得到一个空值 但不知道为什么 我在课程开始时有这样的内容 NSMutableArray listOfEvents 以及我在每个事件上调用的方法 void
  • UITabBarController 为 TabBar 的每个 ViewController 提供不同的 Storyboard 文件

    我的团队正在开发一个具有 UITabBarController 的应用程序 我们正在使用 Storyboard 来开发界面和流程 由于我们是一个团队 所以我们不能将所有流程放在一个故事板中 因为这会导致与 SVN 同步出现问题 所以 解决方
  • WKWebView不加载https URL?

    我有一个 WKWebView 应该加载以下网址 https buchung salonmeister de place offer details page id 907599 venueId 301655 她是我使用的代码 import
  • 创建电子书阅读应用程序的教程 - epub 文件格式 [重复]

    这个问题在这里已经有答案了 我正在制作一个电子书阅读应用程序 因为我想执行一些操作 例如更改文本颜色 字体 选择文本等 我知道 iphone os 4 0 和 ipad 现在支持 epub 文件格式 但我不知道如何创建此类应用程序 如果有人
  • 将 NSString 分离成 N​​SArray,但允许用引号对单词进行分组

    我有一个搜索字符串 人们可以使用引号将短语组合在一起 并将其与单个关键字混合 例如 像这样的字符串 Something amazing rooster 我想把它分成一个 NSArray 这样它就有Something amazing 不带引号
  • GCD 和线程

    我想了解一些有关 GCD 和线程的知识 我的视图控制器中有一个 for 循环 它要求我的模型执行一些异步网络请求 因此 如果循环运行 5 次 模型将发出 5 个网络请求 考虑到我正在使用 NSURLConnection 的 sendAsyn
  • UITableViewCell 的 viewDidAppear

    我通常使用viewDidAppear方法在视图完成出现后在视图上执行一些 UI 操作 我在各种情况下使用了此方法 它非常有用 但是 我需要在视图上进行一些 UI 更改UITableViewCell当它完成出现后 SDK中是否有任何可用的方法
  • iPad 2 检测

    由于我没有 iPad 2 因此我需要知道调用 UIDevice currentDevice model 时它返回什么 我以为它只返回 iPad 但看来我错了 有人可以告诉我吗 Thanks 检查是否有带摄像头的 iPad BOOL isIP
  • 如何将 NSSecureCoding 与 id 对象一起使用

    我正在创建一个链接列表并使用容器对对象 下一个和上一个属性进行分组 就像基金会收藏一样 我希望它能够实现NSSecureCoding 这是声明 interface ListContainer NSObject
  • 如何检测 UISwipeGestureRecognizer 的结束?

    来自苹果文档 滑动是一种离散手势 因此每个手势仅发送一次关联的操作消息 void touchesEnded NSSet touches withEvent UIEvent event 当我使用 UISwipeGestureRecognize
  • 如何在 iOS 中通过 Twitter API 获取用户电子邮件地址?

    我尝试了多个 SDK 但无法从任何资源获取电子邮件 ID 我努力了FHSTwitterEngine为此目的 但我没有得到解决方案 FHSTwitterEngine twitterEngine FHSTwitterEngine sharedE
  • 如何使用 NSUserDefaults 正确工作(检索值)

    我的代码中有一个简单的方法 如下所示 BOOL isFirstTimeLogin NSString t gName NSString stringWithFormat NSUserDefaults standardUserDefaults

随机推荐