Gotta 変わったここに問題があります。 TestFrameworkObjective-CデバイスとシミュレータのアーキテクチャへのSwiftフレームワーク
TestFrameworkフレームワークをObjective-Cアプリケーションに正常にインポートすることができました。ただし、デバイスアーキテクチャまたはシミュレータアーキテクチャのいずれかを構築することしかできません。
どのアーキテクチャにもこの高速フレームワークを使用してObjective-Cアプリケーションを実行できるように設定するにはどうすればよいですか?
今は、アプリケーションからフレームワークを削除し、.frameworkファイルを再構築し(デバイスまたはシミュレータのいずれかを選択して)、このフレームワークをアプリケーションプロジェクトに再デプロイします。どんなプロジェクト(シミュレータまたはデバイス)でもこのフレームワークを使用できるようにしたいので、これを行うのは面倒です。
私はココアパッドを使用することができますが、まだこれを設定していません。
フレームワークでは、「Testing」というクラスがあります(下記の質問を参照)。私は私の客観的なアプリケーションでこのクラスにアクセスすることができます。 「テスト」オブジェクトをインスタンス化し、そのパブリック関数などを呼び出す。コードがコンパイルされます。ただし、フレームワークがコンパイルされていないアーキテクチャ用にビルドしようとすると、エラーが発生する問題があります。 エラー:ここ
ld: warning: ignoring file /Users/kersan/projects/TestApp2/TestApp2/TestFramework.framework/TestFramework, missing required architecture x86_64 in file /Users/kersan/projects/TestApp2/TestApp2/TestFramework.framework/TestFramework (2 slices)
Undefined symbols for architecture x86_64:
"_OBJC_CLASS_$__TtC13TestFramework7Testing", referenced from:
objc-class-ref in ViewController.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
は私のconfigsのスクリーンショットといくつかのコードです:
TestFramework.h:
#import <UIKit/UIKit.h>
//! Project version number for TestFramework.
FOUNDATION_EXPORT double TestFrameworkVersionNumber;
//! Project version string for TestFramework.
FOUNDATION_EXPORT const unsigned char TestFrameworkVersionString[];
// In this header, you should import all the public headers of your framework using statements like #import <TestFramework/PublicHeader.h>
Testing.swift:
私のObjective-Cのアプリで//
// Testing.swift
// TestFramework
//
// Created by Kaan Ersan on 2016-09-29.
// Copyright © 2016 Kaan Ersan. All rights reserved.
//
import Foundation
@objc open class Testing : NSObject {
open var testDescription : String?
open func printDesc() -> String {
print("testDescription: \(testDescription)")
return "Testing class -> Hello World"
}
}
のViewControllerを:私は見ての通り
//
// ViewController.m
// TestApp2
//
// Created by Kaan Ersan on 2016-09-29.
// Copyright © 2016 Kaan Ersan. All rights reserved.
//
#import "ViewController.h"
#import "TestFramework/TestFramework-Swift.h"
@interface ViewController()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
Testing *testing = [[Testing alloc] init];
[testing printDesc];
[_label setText:testing.printDesc];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
これは正しい方向に私を指摘し、Aggregateターゲットを使用して問題を解決しました。私はまだフレームワークをappstoreに提出していない、またはこのフレームワークを持つappをappstoreにまだ提出していない。うまくいけば、それらの答えにも説明されているようにうまくいくでしょう。ありがとう! – c0d3Junk13