0

この方法で実装するシングルトンがあります。

PhotoViewController* sharedSingleton = [PhotoViewController sharedManager];

メソッドを起動するには、[sharedSingleton メソッド] を実行する必要があることを知っています。

しかし、PhotoViewController.h ファイルで宣言されている整数を NSInteger* tagNumber として変更したい場合はどうすればよいでしょうか? 私はこれを試しました:

[sharedSingleton.tagNumber = 1];

しかし、うまくいきません!

編集:

エラー: タイプ photoViewController のオブジェクトにプロパティ tagNUMber が見つかりません

@interface PhotoViewController : UIViewController{

BOOL newMedia;
UIPopoverController *popoverController;
DBRestClient *restClient;
NSInteger* tagNumber;
}

+ (PhotoViewController *) sharedManager;

@end
4

1 に答える 1

1

シングルトンは通常のオブジェクトです。唯一の違いは、クラスからインスタンスが 1 つだけ作成されることです。

tagNumber を設定できない場合は、他のタイプのコーディング エラーが発生している可能性があります。おそらく、tagNumber プロパティがクラス拡張で宣言され、アクセサ/ミューテータ メソッドが非公開になっていますか?

tagNumber の宣言方法で質問を編集し、表示されるエラー メッセージも含めると、この回答を編集して、より具体的なアドバイスを提供できます。

編集: ...そして、はい、NSInteger をポインターとして宣言していないことを確認するために必ず再確認してください... NSInteger はスカラー型です (したがって、直接値を取り、逆参照を使用しません ' *' 演算子)。

インスタンス変数に直接アクセスする代わりに、プロパティを使用することをお勧めします。

@interface PhotoViewController : UIViewController

@property (nonatomic, assign) BOOL newMedia;
@property (nonatomic, strong) UIPopoverController *popoverController;
@property (nonatomic, strong) DBRestClient *restClient;
@property (nonatomic, assign) NSInteger tagNumber;

+ (PhotoViewController *) sharedManager;

@end

次に、括弧なしで変数を次のように設定します。

sharedSingleton.tagNumber = 1;
于 2012-11-30T13:01:59.597 に答える