iphone - 向 Objective C 类接口(interface)添加方法是可选的吗?

标签 iphone objective-c cocoa cocoa-touch macos

来自 C++ 背景,让我对 Objective C 感到困惑的一件事是,您可以向类添加方法,而无需在类接口(interface)中实际指定它。所以我有很多问题:

  1. 为什么有人选择不在类接口(interface)中添加该方法?
  2. 仅仅是因为可见度吗?
  3. 接口(interface)中没有声明的方法是私有(private)的吗?
  4. 在类接口(interface)中声明方法只是可选的吗?
  5. 重写基类的方法有什么不同吗?

最佳答案

主要区别在于 C++ 在编译时设置大部分继承和类型,而 Objective C 主要在运行时设置。

在 Objective-C 中将方法放入接口(interface)(如果所有参数都是对象)中的唯一区别是编译器可以在编译时看到它并检查对象是否可以响应该方法 - 如果没有则您会收到警告,但编译确实成功,并且程序将运行并在运行时查找该方法。如果该方法位于类或类别(或其他方式)的实现中,那么运行时将找到它并成功调用它。

没有可以调用任何方法的私有(private)方法。

关于iphone - 向 Objective C 类接口(interface)添加方法是可选的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2462606/

相关文章:

iphone - "Could not load the kernel"启动相机 session 并尝试进行一些实时图像过滤

ios - 将 iphone 视频发送到服务器

iphone - iPhone 上最小合理按钮尺寸

iphone - 委托(delegate)不工作

objective-c - NSManagedObjectContext,在哪里声明?

cocoa - NSStatusItem 内 WebView 的自定义右键菜单

iphone - 如何从另一个场景中弹出特定的Cocos2D场景?

objective-c - 是否执行 self = self init;返回 self ; Objective-C 中的效果与 swift 中 self.init() 的效果相同吗?

ios - 更改 SKSpriteNode 图像

Cocoa输入重名验证如何?