Swift5で開発をしているのですが、既存のobjective-cソースを混在させて、データを共有したり、相互にメソッドコールをしたいです。
そこで教えて頂きたい質問が3点あります。

  1. データ共有する場合は、どの方法がよいのでしょうか?
    1. AppDelegate.swiftに変数をおく
    2. AppDelegate.swiftに共有クラス(シングルトン?)を作る
    3. 共有用のクラス(新規ファイル)を作る
  2. 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:'
と赤メッセージ表示が出ます。

  1. swiftのほうにある配列に、Objective-c側のメソッドからセットしたいのですが
    (1の共有にもからむのですが)、swiftで共有の配列変数として定義しても
    Objective-cでは配列の定義が違うため、共有変数にセット出来ませんでした。

swiftで共有定義

  var hairetu:[Int] = [] // 共有定義と仮定して・・・

objective-c側で

  hairetu.append(1)

のように追加したいのですが、可能でしょうか?
直接が難しい場合は、質問2に戻りますが、引数で渡せるようになれば
それでも良いのですが、もっと効率的に出来る方法があれば助かります。

ご教授のほど、よろしくお願いいたします。