OC调用Swift

前端之家收集整理的这篇文章主要介绍了OC调用Swift前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

修改main.m文件

  1. #import <Foundation/Foundation.h>
  2. #import "Root.h"
  3.  
  4. int main(int argc,const char * argv[])
  5. {
  6. @autoreleasepool
  7. {
  8. Root *rt = [[Root alloc] init];
  9. [rt desc];
  10. }
  11. return 0;
  12. }

OC文件:Root.h
  1. #import <Foundation/Foundation.h>
  2.  
  3. //Objective-c 的头文件如果需要引用Swift的类,则可以使用下面这种方式
  4. @class Person;
  5.  
  6. @interface Root : NSObject
  7.  
  8. -(Person *)returnPerson;
  9. -(void)desc;
  10.  
  11. @end

Root.m
  1. #import "Root.h"
  2.  
  3. //Objective-c调用Swift
  4. //需要导入固定的头文件,此头文件项目里面找不到,但却是存在。并且会自动把Swift类转换成OC的类,在里面能找到
  5. //格式为 #ProductName#-Swift.h
  6. #import <OC_Swift-Swift.h>
  7.  
  8.  
  9. @implementation Root
  10.  
  11. -(void)desc
  12. {
  13. Person *ps = [[Person alloc] initWithName:@"Rose"];
  14. ps.name = @"Jack";
  15. [ps desc];
  16. }
  17.  
  18. -(Person *)returnPerson
  19. {
  20. Person *ps = [[Person alloc] initWithName:@"Tom"];
  21. return ps;
  22. }
  23.  
  24. @end

Swift文件:Person.swift
  1. import Foundation
  2.  
  3. //如果此类需要被OC的类来调用,一定要继承自NSObject
  4. class Person : NSObject
  5. {
  6. var name: String
  7. {
  8. willSet
  9. {
  10. NSLog("将要把名字设置为:" + name)
  11. }
  12. }
  13. override init()
  14. {
  15. self.name = ""
  16. }
  17. init(name: String)
  18. {
  19. self.name = name
  20. }
  21. func desc()
  22. {
  23. print("这是一个Swift的类,name: " + self.name)
  24. }
  25. }

猜你在找的Swift相关文章