0

Xcode でアウトレットを作成すると、MonoTouch はその特定のビューの *.designer.cs ファイルに同一のプロパティを作成します。

namespace MyApp
{
    [Register ("CustomCell")]
    partial class CustomCell
    {
        [Outlet]
        MonoTouch.UIKit.UISwitch Toggle { get; set; }

        void ReleaseDesignerOutlets ()
        {
            if (Toggle != null) {
                Toggle.Dispose ();
                Toggle = null;
            }
        }
    }
}

しかし、ご覧のとおり、これらのプロパティのスコープを非公開にしています。

XCodeまたはMonoTouchを介して、これらをパブリック、保護、または内部として生成する必要があることをシステムに伝える方法はありますか?

この部分クラスの実装側で、これらのプロパティのプロキシとして機能するプロパティを公開することはできますが、よりクリーンな方法があることを願っています。

4

2 に答える 2

2

それらがプロパティであることを心配しないでください。これはアウトレットの実装の詳細です。これらはプライベート フィールドと考えることができます。そのため、非デザイナー クラス パーツのよりアクセスしやすいプロパティを介してそれらを公開しても問題ありません。

アクセスしやすくするもう 1 つの方法は、非デザイナー クラス パーツに移動することです。アウトレットは、デザイナー クラス パーツにある必要はありません。

同期の仕組み:

デザイナー ファイルが機能する方法は、MD が Xcode と同期するときに、デザイナー クラスを含むクラスのすべての部分ですべてのアウトレットを見つけ、それらを obj-c ヘッダー ファイルに同期することです。obj-c ヘッダー ファイルを MD に同期して戻すとき、非デザイナー クラス パーツ内の各アウトレットを見つけようとし、一致しないアウトレットでデザイナー ファイルを再生成します。

これは、obj-c ヘッダー ファイルにアウトレットを追加すると、デザイナー ファイルに追加されることを意味します。また、obj-c ヘッダー ファイル内のアウトレットを削除すると、デザイナー ファイルが再生成されたときに実質的にデザイナー ファイルから削除されることも意味します。ただし、それが他のクラス パーツにある場合を除きます。この場合、削除は同期されません。 .

obj-c ヘッダー ファイルのアウトレットにはアクセシビリティがないため、MD はヘッダー ファイルを再生成するときにそれを同期できません。プライベートはカプセル化を促進するため、適切なデフォルトであり、必要に応じてラッパー プロパティまたは経由で簡単に公開できます。それらを動かすことによって。

于 2012-08-24T23:24:16.347 に答える
0

現在、MonoDevelop に、公開されているアウトレットに対して異なる可視性属性を生成させる方法はありません。

どのようなユース ケース シナリオを念頭に置いていますか?

于 2012-08-24T18:31:01.340 に答える