OC调用Swift

Posted jzdwajue

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OC调用Swift相关的知识,希望对你有一定的参考价值。

改动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)
    }
}



以上是关于OC调用Swift的主要内容,如果未能解决你的问题,请参考以下文章

JS与原生OC/Swift相互调用总结

Swift 学习- 07 -- 函数

Xcode里怎么使用c 调用oc的方法?

OC与swift相互调用

OC与swift相互调用

iOS OC和Swift进行互相调用