首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法从objective-c访问Swift变量,Xcode 8

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

Stack Overflow用户
提问于 2017-02-20 02:34:24
回答 1查看 99关注 0票数 1

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

代码语言:javascript
复制
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代码:

代码语言:javascript
复制
    //
//  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会收到来自编译器的以下警告:

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

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

有谁能解释一下这件事吗?我已经试着让它工作了差不多一整天了。谢谢!

EN

回答 1

Stack Overflow用户

发布于 2017-08-02 21:30:03

try @objc public var property:String = "“

@objc public有一个编译器错误的好处,如果你尝试做一些无法用objc表示的东西,你会得到

属性不能标记为@objc,因为它的类型不能用Objective-C表示

如果你没有objc可访问的符号,那么objc bridger会把你的类去掉。这就是你所看到的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42331188

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档