在OC项目中使用Swift模块续

其实在很早期的文章里(Objective-C和Swift混合编程开发(一)http://blog.diveinedu.net/objective-c-swift-framework-dev/)已经介绍过了。但还是有许多同学问这个地方,所以干脆在这里再单独介绍一下。

第一、用Xcode 6创建一个基于Objective-C的项目。

第二、在项目中创建一个Swift的类,SwiftLabel,并且让它继承自UILabel。

//
//  SwiftLabel.swift
//  OCSwift
//
//  Created by WuQiong on 14-8-24.
//  Copyright (c) 2014年 戴维营教育. All rights reserved.
//

import UIKit

class SwfitLabel : UILabel {
    init(frame: CGRect) {
        super.init(frame: frame);
        self.textColor = UIColor.redColor();
    }
}

 

第三、选中工程,然后在Build Settings中找到Packaging->Product Module Name,双击后输入SwiftModule。(可以通过搜索Packaging找到)。

设置好这里后,默认情况下Xcode就会根据Product Module Name生成一个名为“SwiftModule-swift.h”的头文件,里面会包含所有Swift文件中的类。

第四、在需要使用swift模块的Objective-C代码中引入头文件”SwiftModule-swift.h”就可以了。本文中为SwiftLabel类。

//
//  ViewController.m
//  OCSwift
//
//  Created by WuQiong on 14-8-24.
//  Copyright (c) 2014年 戴维营教育. All rights reserved.
//

#import "ViewController.h"

//引入Swift模块
#import "SwiftModule-swift.h"

@interface ViewController ()
            

@end

@implementation ViewController
            
- (void)viewDidLoad {
    [super viewDidLoad];
    
    //直接调用Swift里的代码
    SwfitLabel *label = [[SwfitLabel alloc] initWithFrame:CGRectMake(20, 20, 200, 300)];
    label.numberOfLines = 0;
    label.text = @"戴维营教育的家伙们,你们真的是太无聊了,半夜去爬岳麓山!!!";
    [self.view addSubview:label];
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

第五、运行结果:

iOS Simulator Screen Shot 2014年8月24日 下午8.41.31

标签: , , , ,
文章分类 iOS 8开发

发表评论