我有一个3d party预编译的swift框架,我们称它为// Model objective function 3X + 4Y
IntVar OBJ = model.intVar("objective", 0, 999);
model.scalar(new IntVar[]{X,Y}, new int[]{3,4}, OBJ)).post();
// Specify objective
model.setObjective(Model.MAXIMIZE, OBJ);
(无源代码访问,只有该框架),我需要在自己的Objective-C静态库中使用它(这是我的情况)。我已经创建了一个Objective-C静态库,我们将其称为SomeCoolSwiftFramework
,将其拖放到该框架中,并在要使用该框架的地方创建了一个新类:
MyCoolObjCLibrary
如果我不是创建ObjC静态库,而是切换到swift静态库,它可以正常工作,我可以看到所需的类和方法。但就我而言,我不得不使用ObjC静态库,因此想了解如何从静态库访问swift框架。
在添加3d零件框架的依赖项时我错过了任何步骤吗?
答案 0 :(得分:2)
事实证明,由于3d第三方SDK library(ggmap)
stores <- data.frame((read.csv(file="./mapData")
# Fetch the map
madison = get_map(location = location, source = "osm")
# Draw the map
madisonMap = ggmap(madison)
# Add the points layer
madisonMap = madisonMap +
geom_point(data = stores,
aes(x = Longitude, y = Latitude, colour = Color),
size = 5)
并未遵循规则来正确公开ObjC使用的必需类,因此生成的标头没有必需的声明,而我看不到它们。
ObjC使用的Swift成员的规则是:
Latitude, Longitude, Seed, Color
45.508785, -122.632101 , 8, #22DD00
45.515093, -122.642574, 11, #55AA00
45.485144, -122.596184, 15.3, #9F6000
的班级或成员SomeCoolSwiftFramework
public
的课程NSObject
的成员为克服3d参与者框架的这一限制,我创建了自己的具有3d参与者依赖性的快速框架objc(<name>)
,公开了我的代码所需的所有API,并应用了上面的规则,并确保{{ 1}}已正确生成并具有必需的声明。完成后,我可以将生成的objc
文件导入ObjC静态库(或ObjC代码中的其他任何位置),并访问所需的代理类/方法。
我的Swift代理框架声明如下:
SomeCoolSwiftFrameworkProxy
我发现this blog post回答了我的问题