加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

OC调用Swift

发布时间:2020-12-14 02:02:33 所属栏目:百科 来源:网络整理
导读:修改main.m文件 #import Foundation/Foundation.h#import "Root.h"int main(int argc,const char * argv[]){ @autoreleasepool { Root *rt = [[Root alloc] init]; [rt desc]; } return 0;} OC文件:Root.h #import Foundation/Foundation.h//Objective-c 的

修改main.m文件

#import <Foundation/Foundation.h>
#import "Root.h"

int main(int argc,const char * argv[])
{
    @autoreleasepool
    {
        Root *rt = [[Root alloc] init];
        [rt desc];
    }
    return 0;
}

OC文件:Root.h
#import <Foundation/Foundation.h>

//Objective-c 的头文件如果需要引用Swift的类,则可以使用下面这种方式
@class Person;

@interface Root : NSObject

-(Person *)returnPerson;
-(void)desc;

@end

Root.m
#import "Root.h"

//Objective-c调用Swift
//需要导入固定的头文件,此头文件项目里面找不到,但却是存在。并且会自动把Swift类转换成OC的类,在里面能找到
//格式为 #ProductName#-Swift.h
#import <OC_Swift-Swift.h>


@implementation Root

-(void)desc
{
    Person *ps = [[Person alloc] initWithName:@"Rose"];
    ps.name = @"Jack";
    [ps desc];
}

-(Person *)returnPerson
{
    Person *ps = [[Person alloc] initWithName:@"Tom"];
    return ps;
}

@end

Swift文件:Person.swift
import Foundation

//如果此类需要被OC的类来调用,一定要继承自NSObject
class Person : NSObject
{
    var name: String
    {
        willSet
        {
            NSLog("将要把名字设置为:" + name)
        }
    }
    override init()
    {
        self.name = ""
    }
    init(name: String)
    {
        self.name = name
    }
    func desc()
    {
        print("这是一个Swift的类,name: " + self.name)
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读