我看了很多关于这个主题的帖子,我仍然看不出我做错了什么。我在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。'
有人可以对此有所了解吗?我一直试图让它工作了将近一整天。谢谢!
答案 0 :(得分:0)
尝试@objc public var property:String =“”
如果您尝试,@ pjc public会产生编译错误 做什么东西不能用objc表示 你会得到属性无法标记为@objc,因为无法表示其类型 在Objective-C
如果你没有objc可访问的符号,那么objc bridger会把你的课程变得更加容易。这就是你所看到的。