swiftとobjective-c混在プロジェクトについて
Swift5で開発をしているのですが、既存のobjective-cソースを混在させて、データを共有したり、相互にメソッドコールをしたいです。
そこで教えて頂きたい質問が3点あります。
- データ共有する場合は、どの方法がよいのでしょうか?
- AppDelegate.swiftに変数をおく
- AppDelegate.swiftに共有クラス(シングルトン?)を作る
- 共有用のクラス(新規ファイル)を作る
- Objective-cからSwiftメソッド(引数あり)がコール出来ませんでした。
引数なしだとコール出来ました。
抜粋になりますが、下記の感じです。
sampleSwift.swift
@objc func test1(string:String)
{
print(string)
}
@objc func test2()
{
print("test2")
}
sampleObj.m
sampleSwift * obj = [sampleSwift alloc];
[sampleSwift test1:@"abc"]; // NG
[sampleSwift test2]; // OK
NGの所は、「NO Visible @interface for 'sampleSwift' declares the selector 'test1:string:'
」
と赤メッセージ表示が出ます。
- swiftのほうにある配列に、Objective-c側のメソッドからセットしたいのですが
(1の共有にもからむのですが)、swiftで共有の配列変数として定義しても
Objective-cでは配列の定義が違うため、共有変数にセット出来ませんでした。
swiftで共有定義
var hairetu:[Int] = [] // 共有定義と仮定して・・・
objective-c側で
hairetu.append(1)
のように追加したいのですが、可能でしょうか?
直接が難しい場合は、質問2に戻りますが、引数で渡せるようになれば
それでも良いのですが、もっと効率的に出来る方法があれば助かります。
ご教授のほど、よろしくお願いいたします。