我需要为我正在处理的项目创建一个框架(需要一个静态库).我使用本教程创建框架,然后将静态库复制到项目中并且它工作正常.
但是,当我将框架拖到iOS项目时,它显示了大量的错误.
`Undefined symbols for architecture i386:"_OBJC_CLASS_$_SomeClassFromTheStaticLibrary",referenced from:_OBJC_CLASS_$_AnotherClass in MyFramework`
Run Code Online (Sandbox Code Playgroud)
我认为正在发生的是iOS项目想要重新编译框架而不能,因为它找不到静态库.如果我将静态库添加到iOS项目,所有错误都会消失.这是我想要避免的.
基本上我想要iOS项目 - > Framework - > Library,而不是在项目和框架中都有库.
我已经尝试将静态库添加为框架中的资源,但它不起作用.
我当前遇到的问题是Build和Archive将构建我当前的目标,但在完成构建之后,会出现一个弹出窗口,其中包含以下消息:
"操作无法完成.没有这样的文件或目录"
我重新安装了Xcode(3.2.3与SDK 4.0),重新启动了我的机器,清理了缓存,清理了项目,手动删除了项目构建目录.没有任何效果.
我也检查了~/Library/MobileDevice/Archived Applications
它是空的.
有任何想法吗?
ps这让我抓狂!
我正在尝试从Obj-C慢慢迁移到Swift.我的第一步是将小的,简单的方法迁移到Swift扩展,所以我决定尝试迁移,didRegisterForRemoteNotifications
但这不起作用,因为它认为该方法是在我的Objective-C代码中的其他地方实现的.它不是.
我正在使用Xcode 7.3(7D175)
这是一些复制步骤:
AppDelegate-Extension.swift
.这也会创建一个Bridging头文件.#import AppDelegate.h
到Briding头文件.转到空的Swift文件并键入:
extension AppDelegate {
public func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {
}
}
Run Code Online (Sandbox Code Playgroud)这导致编译器抱怨:
方法'application(_:didRegisterForRemoteNotificationsWithDeviceToken :)'与Objective-C选择器'application:didRegisterForRemoteNotificationsWithDeviceToken:'与之前的声明冲突与相同的Objective-C选择器公共func应用程序(应用程序:UIApplication,didRegisterForRemoteNotificationsWithDeviceToken deviceToken:NSData){^ __ObjC.AppDelegate :38:17:注意:'application'以前在这里声明了public func application(应用程序:UIApplication,didRegisterForRemoteNotificationsWithDeviceToken deviceToken:NSData)
我究竟做错了什么?
编辑: 我尝试过的一些建议:
添加
override
到方法声明,以便读取override public ...
这将返回以下错误(除了原始错误)
error:方法不会覆盖其超类覆盖公共func应用程序中的任何方法(应用程序:UIApplication,didRegisterForRemoteNotificationsWithDeviceToken deviceToken:NSData)
给出以下方法:
- (void)doThingWith:(NSString *)string changeBoolean:(BOOL *)booleanPointer
{
// Do Something
*booleanPointer = NO;
}
我应该如何将其翻译为Swift?
objective-c ×3
ios ×2
iphone ×2
swift ×2
boolean ×1
cocoa ×1
cocoa-touch ×1
frameworks ×1
xcode ×1
xcode3.2 ×1