暴露给OC使用的Swift类必须继承NSObject的原因就是,OC使用的时候是必须要用alloc,objc_msgSend等OC的runtime机制,那如果不继承NSObject,基本的初始化过程都没法完成
OC写的类如果丢给Swift使用,创建一个OC类
Person.h
@interface Person : NSObject
-(void)go;
@end
Person.m
#import "Person.h"
#import "test-Swift.h"
@implementation Person
-(void)go
{
NSLog(@"go");
}
@end
main.swift
Person().go()
然后在这唯一的一行打上断点,查看汇编代码
会发现明明是OC代码使用的却是Runtime,所以Swift调用OC函数使用的是OC的Objc_msgSend方式
OC调用Swift类
main.swift创建一个swift类