Objective-C和Swift在底层中使用是以两种完全不同的机制:
Objective-C:对象是基于运行时的,遵循KVC(Key-Value-Coding)和动态派发(Dynamic Dispatch),在运行时决定实际调用的具体实现.
Swift:不同于Objective-C,它在编辑时便已经确定类型成员和方法,除非特殊情况,一般在运行时不需要再经过查找,而可以直接使用.
下图所示情况是用@objc修饰私有方法时生效,若不是私有方法,则不会报错,但由于在写swift时,声明属性和方法在一个界面内,为了避免外界在不知情的情况下调用了一些无用的或 不应该被调用的方法而引起性能问题.故当有的方法不能被外界调用时,就会使用private修饰后,用@objc再次进行修饰.