无法从objective-c,Xcode 8访问Swift变量

时间:2017-02-19 18:34:24

标签: objective-c swift xcode objective-c-swift-bridge

我看了很多关于这个主题的帖子,我仍然看不出我做错了什么。我在objective-c中有一个视图控制器,试图访问Swift中的NSObject代码片段。我有Debugs Module YES和objective-c Bridging Header和Swift标头位于Build Settings中的正确位置。以下是代码的相关部分:

View Controller.m

    //
//  ViewController.m
//  swiftTest
//
//  Created by Nelson Capes on 2/19/17.
//  Copyright © 2017 Nelson Capes. All rights reserved.
//

#import "ViewController.h"
#import "swiftTest-Swift.h"
@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    MyClass
}


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


@end

Swift代码:

    //
//  MyClass.swift
//  swiftTest
//
//  Created by Nelson Capes on 2/19/17.
//  Copyright © 2017 Nelson Capes. All rights reserved.
//

import Foundation
@objc public class MyClass:NSObject{
    var property:String = ""
    func method() {
        print(self.property)
    }
}

在ViewController.m中,开始输入MyClass会从编译器收到以下警告:

/Users/nelson/swiftTest/swiftTest/ViewController.m:20:5:使用未声明的标识符'MyClass'。

请注意,我将Swift类声明为@objc和public。我对Apple文档的理解是,这应该使任何vars和函数对同一目标中的objective-c代码可见。项目模块名称是'swiftTest。'

有人可以对此有所了解吗?我一直试图让它工作了将近一整天。谢谢!

1 个答案:

答案 0 :(得分:0)

尝试@objc public var property:String =“”

如果您尝试,@ pjc public会产生编译错误 做什么东西不能用objc表示 你会得到

  

属性无法标记为@objc,因为无法表示其类型   在Objective-C

如果你没有objc可访问的符号,那么objc bridger会把你的课程变得更加容易。这就是你所看到的。