-1

完全な開示、私は本業のプログラマーではありません。私は実際に手術プログラムのレジデントであり、臨床実習での最近の iPad の使用の増加によって助長された私の研究期間中にプログラミングに興味を持ちました。言い換えれば、これは私の通常の分野ではなく、この問題でしばらく苦労したので、無知や悪い習慣を許してください.

私は、臨床診療に関連する特定の計算を行うための小さなアプリケーションを作成しています。基本的な要点は、少なくとも 2 つのタブと、タブごとに個別のビュー コントローラーを備えたタブ付きアプリケーションで作業していることです。私のアプリケーションでは、すべての計算を行い、すべての患者データを管理する単一のオブジェクトを作成しました。私の問題は、計算を実行してデータを管理するために作成したクラスのインスタンスにすべてのビュー コントローラーがアクセスできるようにする戦略が見つからないように見えることです。インスタンスの初期化を appdelegate m ファイルに配置し、それを各コントローラーにインポートしようとしましたが、繰り返し宣言から複数のエラーが発生します。1 つのビュー コントローラーの m ファイルに配置し、同じコンパイル エラーで 2 番目のビュー コントローラーにインポートしようとしました。私'

とにかく、私はこの戦略についてすべて間違っているかもしれませんが、これが可能であるか、代替戦略があるかどうかについての方向性は高く評価されます. また、コンパイラ エラーを間違って読んでいる可能性があります。

シンボル _OBJC_IVAR_$_AppDelegate._window を複製: /Users/Joshua/Library/Developer/Xcode/DerivedData/NutritionAppAlpha-cgnuaytpdjbxqfediwqybepqfbte/Build/Intermediates/NutritionAppAlpha.build/Debug-iphonesimulator/NutritionAppAlpha.build/Objects-normal/i386/AppDelegate. o /Users/Joshua/Library/Developer/Xcode/DerivedData/NutritionAppAlpha-cgnuaytpdjbxqfediwqybepqfbte/Build/Intermediates/NutritionAppAlpha.build/Debug-iphonesimulator/NutritionAppAlpha.build/Objects-normal/i386/FirstViewController.o 重複シンボル _OBJC_METACLASS_$_AppDelegate: /Users/Joshua/Library/Developer/Xcode/DerivedData/NutritionAppAlpha-cgnuaytpdjbxqfediwqybepqfbte/Build/Intermediates/NutritionAppAlpha.build/Debug-iphonesimulator/NutritionAppAlpha.build/Objects-normal/i386/AppDelegate.o /Users/Joshua/Library/Developer/Xcode/DerivedData/NutritionAppAlpha-cgnuaytpdjbxqfediwqybepqfbte/Build/Intermediates/NutritionAppAlpha.build/Debug-iphonesimulator/NutritionAppAlpha.build/Objects-normal/i386/FirstViewController.o 重複シンボル _OBJC_CLASS_$_AppDelegate: /Users/Joshua/Library/Developer/Xcode/DerivedData/NutritionAppAlpha-cgnuaytpdjbxqfediwqybepqfbte/Build/Intermediates/NutritionAppAlpha.build/Debug-iphonesimulator/NutritionAppAlpha.build/Objects-normal/i386/AppDelegate.o /Users/Joshua/Library/Developer /Xcode/DerivedData/NutritionAppAlpha-cgnuaytpdjbxqfediwqybepqfbte/Build/Intermediates/NutritionAppAlpha.build/Debug-iphonesimulator/NutritionAppAlpha.build/Objects-normal/i386/FirstViewController.o 重複シンボル _OBJC_IVAR_$_AppDelegate._window:/Users/Joshua/Library/Developer/Xcode/DerivedData/NutritionAppAlpha-cgnuaytpdjbxqfediwqybepqfbte/Build/Intermediates/NutritionAppAlpha.build/Debug-iphonesimulator/NutritionAppAlpha.build/Objects-normal/i386/AppDelegate.o /Users/Joshua/Library/Developer /Xcode/DerivedData/NutritionAppAlpha-cgnuaytpdjbxqfediwqybepqfbte/Build/Intermediates/NutritionAppAlpha.build/Debug-iphonesimulator/NutritionAppAlpha.build/Objects-normal/i386/SecondViewController.o 重複シンボル _OBJC_METACLASS_$_AppDelegate in: /Users/Joshua/Library/Developer/ Xcode/DerivedData/NutritionAppAlpha-cgnuaytpdjbxqfediwqybepqfbte/Build/Intermediates/NutritionAppAlpha.build/Debug-iphonesimulator/NutritionAppAlpha.build/Objects-normal/i386/AppDelegate.o /Users/Joshua/Library/Developer/Xcode/DerivedData/NutritionAppAlpha-cgnuaytpdjbxqfediwqybepqfbte/Build/Intermediates/NutritionAppAlpha.build/Debug-iphonesimulator/NutritionAppAlpha.build/Objects-normal/i386/SecondViewController.o 重複シンボル _OBJC_CLASS_$_AppDelegate: /Users/Joshua/Library/Developer/Xcode/DerivedData/NutritionAppAlpha-cgnuaytpdjbxqfediwqybepqfbte/Build/Intermediates/NutritionAppAlpha.build/Debug-iphonesimulator/NutritionAppAlpha.build/Objects-normal/i386/AppDelegate.o /Users/Joshua/Library/Developer /Xcode/DerivedData/NutritionAppAlpha-cgnuaytpdjbxqfediwqybepqfbte/Build/Intermediates/NutritionAppAlpha.build/Debug-iphonesimulator/NutritionAppAlpha.build/Objects-normal/i386/SecondViewController.o ld: アーキテクチャ i386 clang の 6 つの重複シンボル: エラー:リンカ コマンドが終了コード 1 で失敗しました (-v を使用して

4

1 に答える 1

4

これに対処する最も簡単な方法は、共有インスタンス デザイン パターンです。共有したいクラスの名前が次のようになっていると仮定しますCalculator

//Calculator.h
@interface Calculator : NSObject

+ (instancetype)sharedCalculator;

@end

共有インスタンスを実装するには、staticキーワードを使用して、常に同じオブジェクトを使用していることを確認します。

//Calculator.m
@implementation

+ (instancetype)sharedCalculator
{
    static Calculator sharedInstance = nil;
    if (!sharedInstance)
    {
        sharedInstance = [[Calculator alloc] init];
    }
    return sharedInstance;
}

@end

電卓を使用する必要がある[Calculator sharedCalculator]場合は、クラスの新しいインスタンスを作成する代わりに使用するだけです。

于 2013-11-05T20:57:41.770 に答える