C++ 为什么UIKit或Cocoa必须用Objective-C编码?
定期会有一种含糊不清的说法,即objective-c对于UIKit及其前身Cocoa的创建是必要的,但这种说法很少得到澄清或阐述。与消息转发有点模糊的关系。但所有用户界面都转发事件,而不管它们是用什么语言编写的。所以现在我要问:ObjuleC的哪些具体方面对于实现UIKIT或其前任COCOA来说是至关重要的,而C++或java也不能提供? < P>动态绑定迟和类型的能力。 这方面的需求有几个例子,但最清楚的是响应者链。试着用Swift写(不使用Objective-C或Objective-C的RTE)继续 不,不是所有的语言。即。在C++中,他们必须添加信号和时隙,以便使语言对现代UI编程有用。基本上,没有动态绑定的每一种语言——至少作为回退——都没有用C++ 为什么UIKit或Cocoa必须用Objective-C编码?,c++,objective-c,cocoa,cocoa-touch,uikit,C++,Objective C,Cocoa,Cocoa Touch,Uikit,定期会有一种含糊不清的说法,即objective-c对于UIKit及其前身Cocoa的创建是必要的,但这种说法很少得到澄清或阐述。与消息转发有点模糊的关系。但所有用户界面都转发事件,而不管它们是用什么语言编写的。所以现在我要问:ObjuleC的哪些具体方面对于实现UIKIT或其前任COCOA来说是至关重要的,而C++或java也不能提供? < P>动态绑定迟和类型的能力。 这方面的需求有几个例子,但最清楚的是响应者链。试着用Swift写(不使用Objective-C或Objective-C的RT
- Swift使用Objective-C作为动态开门器
- C++使用信号和插槽
- C有代表
顺便说一句:GUI的概念和动态调度的概念是在同一时间同一地点发明的。也许这是有原因的。好的,为什么不能在Java或C中完成响应器链?你能详细说明一下响应者链的特殊之处吗?假设你想找到第一个能够处理某些消息的响应者,比如
foo:
。在Objective-C中,您可以说,“第一个响应者是否支持foo:
?否?好的,下一个响应者是否支持foo:
?否?好的,下一个响应者是否支持foo:
?哦,它支持吗?太好了!在该对象上调用foo:
。”这就是为什么当你们把它们连接到Interface Builder中的第一个响应者时,事情就开始工作了。如果没有动态调度机制,这要简单得多。你开玩笑吧?听说过一堆吗?将FirstResponder推到堆栈上,然后在resignFirstResponder中弹出它。没有人在开玩笑。问题是,响应器链中的项不一定继承自同一基类,并且发送的消息可以自定义。当然你可以用C写,当然你也可以用另一种语言写一个模拟器。但关键是,你必须这样做。当NeXTSTEP(C++的前身)被创建时,java和C++是否存在?