Objective-C 和 Swift 的混合开发入门

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u014494234/article/details/79815337

1. 先创建一个OC工程 OC_Swift_BlendTestDemo

2. 创建一个PersonClass类,类实现文件里实现一下sayHello

    #import <Foundation/Foundation.h>


    @interface PersonClass : NSObject


    @property (nonatomiccopyNSString *name;

    @property (nonatomicassignNSInteger age;

    @property (nonatomiccopyNSArray * classes;

    -(void)sayHello;


    @end

3. 创建一个 StudentClass 类,基于Swift语言,继承至PersonClass类,期间会弹出以下提示:

    

    点击Creat Bridging Header选项,Xcode会自动创建 XXX-Bridging-Header.h 文件(XXX指工程名)


    import Foundation


    class StudentClass: PersonClass {

        

    }


4. 创建一个PCH文件 PrefixHeader.pch ,记得检查Building Settings里的Prefix Header和Objective-C Bridging Header两个路径,

           

          

   在在PrefixHeader.pch文件里导入 #import "OC_Swift_BlendTestDemo-Bridging-Header.h"(swift调用OC) 和#import "OC_Swift_BlendTestDemo-Swift.h"(OC调用swift,这个头文件系统会自己创建XXX-Swift.h)。

5. 第4部之后,就可以Swift和OC就可以互相调用了,给StudentClass添加一个方法 printInfo


    import Foundation


    class StudentClass: PersonClass {

    

        func printInfo() -> Void {

            super.sayHello() // 调用OC方法

            print(self.name)

            print(self.age)

            print(self.classes)

        }

    

    }


6. 在ViewController里viewDidLoad,添加如下代码:


    StudentClass *std = [[StudentClass alloc] init];

    std.name = @"Tom";

    std.age = 19;

    std.classes = @[@"Math",@"English"];

    [std printInfo];


打印结果:


展开阅读全文

没有更多推荐了,返回首页