gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 08:17:03 26 4
gpt4 key购买 nike

我看了很多关于这个主题的帖子,但我仍然看不出我做错了什么。我在 objective-c 中有一个 View Controller ,它试图访问 Swift 中的 NSObject 代码片段。我有 Debugs Module YES 和 objective-c桥接 header 和 Swift header 位于build设置中的正确位置。以下是代码的相关部分:

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

快速代码:

    //
// 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”。

任何人都可以阐明这一点吗?我一直在努力让它工作几乎一整天。谢谢!

最佳答案

试试@objc public var property:String = ""

@objc public 有一个编译器错误的好处,如果你尝试做一些不能用 objc 表示的事情你会得到

Property cannot be marked @objc because its type cannot be represented in Objective-C

如果您没有 objc 可访问的符号,那么 objc bridger 会优化您的类。这就是您所看到的。

关于objective-c - 无法从 objective-c、Xcode 8 访问 Swift 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42331188/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com