Objective-C代码Swift框架内部

Objective-C代码Swift框架内部,objective-c,swift,frameworks,objective-c-swift-bridge,Objective C,Swift,Frameworks,Objective C Swift Bridge,我有以下Swift框架结构: FrameworkA ├── FrameworkA.swift └── Objective-C ├── ClassA.h └── ClassA.m 不幸的是,我无法访问FrameworkA.swift中的ClassA;错误是: 未解析标识符“ClassA”的使用 ClassA应受到保护/框架内部 我做错了什么 根据 将Objective-C导入Swift 在与目标相同的框架中导入一组Objective-C文件 您的Swift代码,您需要将这些文件导

我有以下Swift框架结构:

FrameworkA
├── FrameworkA.swift
└── Objective-C
    ├── ClassA.h
    └── ClassA.m
不幸的是,我无法访问
FrameworkA.swift
中的
ClassA
;错误是:

未解析标识符“ClassA”的使用

ClassA
应受到保护/框架内部

我做错了什么

根据

将Objective-C导入Swift

在与目标相同的框架中导入一组Objective-C文件 您的Swift代码,您需要将这些文件导入 用于框架的Objective-C伞形标题

将Objective-C代码从同一框架导入Swift

在“生成设置”下的“打包”中,确保定义了模块 该框架目标的设置设置为“是”。在你的伞里 头文件,导入要公开的每个Objective-C头 敏捷的例如:

#import <XYZ/XYZCustomCell.h>
#import <XYZ/XYZCustomView.h>
#import <XYZ/XYZCustomViewController.h>
#导入
#进口
#进口

因此,官方看来,在Swift文件中不公开Objective-C类是不可能的。☹️

在.h framework文件中导入它不是一个选项,因为您希望它是内部的,对吗?实际上是的。如果我需要公开所有Objective-C文件,那么框架就不再有意义了,对吗?:-)如果您想保证代码的安全,那么首先就不应该使用Objective-C。如果您进行类转储,那么即使您将其链接为静态库,也会显示所有接口。唯一安全的方法是在C、C++或SWIFT中编写,并将其作为静态库添加到主应用程序中。然后你可以去掉所有的符号,让它更安全。如果您想在代码上使用Hopper反汇编程序进行测试,您将看到我的意思,还可以尝试Steve Nygard的类转储实用程序,您将看到代码的公开程度。