我正在开发适用于 iOS 的 SDK,并使用预处理器宏来更改代码的行为,例如:
#ifdef Home
NSLog(@"I'm at home");
#endif
Run Code Online (Sandbox Code Playgroud)
现在,我构建了一个框架来交付我的 SDK,但如果我尝试将其导入测试应用程序,则代码永远不会执行。我尝试将相同的预处理器宏添加到应用程序目标,但没有成功。
请您告诉我如何设置在第 3 方框架内定义的预处理器宏?
谢谢朱利奥
我做了一个 Swift 3 框架,现在我想在一个示例应用程序中测试它。为此,首先,我构建了它,将它放入我的示例应用程序中,将它链接到所需的二进制文件和框架,然后添加 import MyFramwork到我的源文件中。
效果很好……只有当目标是“通用 iOS 设备”时。如果我选择其他内容,例如“iPhone 7”,则会出现错误:
cannot call value of non-function type 'module<MyFramework>'
...当我调用我的类构造函数时:
let myClassHandler = myFrameworkClass(value1: "Foo", value2: "bar")
我对问题的根源一无所知,我在互联网上一无所获。
我会很感激任何想法,谢谢:)
如果我将 xcodeproj 文件与框架链接放在一起,它就可以工作。但是如果我只包括我的框架。我得到以前的错误。我不能将我的框架源代码提供给我们的客户,所以我不能包含 xcodeproj 文件。
我open BaseViewController在核心框架中有一个类,它实现了 tableview 数据源方法。假设我有另一个类(在模块之外)ClassA,BaseViewController因为它是超类。当我尝试覆盖 tableview 数据源方法时,它抛出了这个错误Overriding non-open instance method outside of its defining module。
BaseViewController 看起来像这样
open class BaseViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
...
public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 0
}
public func numberOfSections(in tableView: UITableView) -> Int {
return 0
}
public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
return UITableViewCell()
}
}
Run Code Online (Sandbox Code Playgroud)
A类
import CustomCoreFramework
class ClassA : BaseViewController { …Run Code Online (Sandbox Code Playgroud) 我将整个Objective-C框架转换为Swift. 构建后,当我检查框架的头文件时,它仍然显示旧Objective-c功能。
我Objective-C从框架项目中删除了所有文件。我曾尝试清理和构建项目。但没有成功。
我们正在开发一个名为 FramworkSDK 的 iOS 框架,并希望将其作为二进制文件分发给我们的客户。FrameworkSDK 依赖于一个名为 swift-GRPC 的框架。我们使用 Swift 包管理器来添加此依赖项。
目前,当我将 FrameworkSDK 的二进制版本添加到我的测试应用程序时,它会抛出“无法找到模块 x”之类的错误。错误引用的模块是 swift-GRPC 包中包含的模块。
我假设,当我构建 FrameworkSDK 时,所有依赖项都包含在捆绑包中,这是正确的吗?如果是这样,我做错了什么?
我使用https://github.com/Carthage/Carthage/issues/3019#issuecomment-665136323创建了一个 SVProgressHUD 框架并添加到 Xcode 项目中。
xcodeproj 的常规选项卡的图像:

xcodeproj 的构建阶段选项卡的图像:

构建成功,但应用程序崩溃,也没有显示任何错误日志。
它显示 AppDelegate window]: unrecognized selector sent to instance 0x283840470"
我已经尝试过 StackOverflow 的各种解决方案,但没有任何效果。我正在使用最新版本的 Xcode:12.0.1 (12A7300) 并在具有最新操作系统 14.0.1 的 iPad 上运行该应用程序。
我该如何解决?帮我。提前致谢。
我有我的第一个iOS应用程序(一个相对简单的iPad应用程序,将在一个月左右发布),但现在我正在转向更雄心勃勃的东西,并可以使用一些建议.
我的下一个项目实际上是两个截然不同但密切相关的iPad应用程序,它们将共享相当多的核心功能和通用数据格式.因此,我的本能是开发这两个应用程序并结合两者共享的核心框架的开发,我希望这个共享框架能够使用CoreData并提供可供其使用的GUI元素(NIB,视图控制器).各自的应用.因此,我的另一个本能是创建3个Xcode项目:一个用于app A的iOS应用程序项目,一个用于app B的第二个iOS应用程序项目,以及一个用于共享框架的第三个CocoaTouch框架项目.
问题:
1)这是构建我的开发的正确方法,还是有更好的方法来同时开发两个密切相关的应用程序和共享框架?
2)框架可以使用CoreData吗?(我问这个是因为在Xcode中创建CocoaTouch框架项目时,没有提供使用CoreData的选项 - 也没有选择单元测试 - 就像创建iOS应用程序项目时一样).
3)是否有办法将iOS应用程序项目"转换"为框架项目,或者最好是将应用程序项目构建到框架目标中?这将让我创建包含所有Xcode设置免费赠品(NIB,核心数据等)的框架项目,而不是手动添加所有这些东西.
谢谢!
卡尔
我必须为android和iphone构建相同的应用程序.我尝试过罗兹,这很棒,但是有些原生的ui功能缺失了......
我想知道,有没有一个策略,sdk,框架,或用于构建Android和iPhone的本机应用程序,以某种方式减少返工?或任何其他框架的建议,如罗德...
谢谢
如果我想把一个框架库出售给那么我怎么能把许可证放到它上面,以便它不能被iOS/iPhone转让.
我的想法很少:
任何信息都会有所帮助.问候.
ios-frameworks ×10
ios ×9
swift ×5
frameworks ×2
iphone ×2
objective-c ×2
xcode ×2
android ×1
carthage ×1
grpc ×1
import ×1
inheritance ×1
mobile ×1
projects ×1
shared ×1
uitableview ×1
xcode12 ×1