0

そのため、関数の外で書式設定された日付にアクセスして表示したいと思います。私が使用している日付形式については、NSDateFormatterうまく機能します..

私の関数 ( didFinishUpdatesSuccessfully) は何らかのアクションを実行し、成功した場合UIAlertViewはフォーマットされた日付を含む を表示します。すべて正常に動作します..

- (void) didFinishUpdatesSuccessfully {

    //--- Create formatted date
    NSDate *currDate = [NSDate date];
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
        [dateFormatter setDateFormat:@"dd/MM/YYYY - hh:mm:ss a"];
    NSString *dateString = [dateFormatter stringFromDate:currDate];     // dateString contains the current date as a string

    [dateFormatter release];


    //--- UIAlertView
    NSString *title = @"The update has been performed!";

    UIAlertView *alert = [[UIAlertView alloc] initWithTitle: title
                                                    message: dateString
                                                   delegate: nil
                                          cancelButtonTitle: [FileUtils appResourceForKey:@"UPDATE_GENERAL_BUTTON_TITLE_OK"]
                                          otherButtonTitles: nil];
    [alert show];
    [alert release];

    //--- create new string
    // NSMutableString* lastUpdated = [NSMutableString stringWithFormat:@"%@",dateString];

}

dateStringの値をグローバルに書き込むNSStringNSMutableString 、コード内の別の場所、たとえば別の関数などにアクセスしたいと考えています。

私はこのようなものを作成することを考えましたNSMutableString: そしてどこかNSMutableString* lastUpdated = [NSMutableString stringWithFormat:@"%@",dateString];にアクセスするために、しかしこの関数の外側は空です...助けてもらえますか?乾杯lastUpdatedlastUpdated

4

2 に答える 2

0

のように文字列を保持する必要があります。

NSMutableString* lastUpdated;
lastUpdated = [[NSMutableString stringWithFormat:@"%@",dateString] retain];

ここで、outside にアクセスしてみます。

于 2011-07-25T04:56:24.790 に答える
0
NSMutableString* lastUpdated = [NSMutableString stringWithFormat:@"%@",dateString];

これを行うと、 という名前のローカル変数を宣言することになりますlastUpdated。同じ名前の別のグローバル変数がある場合でも、このローカル変数は、スコープ内にある限り (関数の寿命)、グローバル変数を非表示にします。

これを機能さlastUpdatedせるには、関数またはメソッドの外側のどこかでグローバルを宣言する必要があります。おそらく .m ファイルの先頭付近です。

NSMutableString *lastUpdated;

その後、.m ファイルのどこからでもその変数にアクセスできます。他の .m ファイルでアクセスする場合は、対応するヘッダー (.h) ファイルに extern 宣言を追加します。

extern NSMutableString *lastUpdated;

その宣言により、lastUpdatedそのヘッダー ファイルを含む任意のファイルで使用できます。

知っておくべき2つのこと:

  1. これは C の基本的なものなので、なじみがないと思われる場合は、C のスコープ規則を確認する必要があります。グローバル変数、静的変数、ローカル変数、インスタンス変数の違いを理解してください (わかりました、単純な古い C にはそれらがありません)。 )、およびパラメーター。

  2. グローバル変数は恐ろしいです。違うことを言う人を信用しないでください。差し迫った問題を解決するために上記のアドバイスを提供しますが、より良い解決策は、コードをリファクタリングして、グローバル変数の必要性を回避できるようにすることです。(そして、IMOシングルトンも答えではありません。グローバルデータにアクセスするためだけに使用されるシングルトンは、派手なグローバル変数以上のものではありません。)

于 2011-07-25T04:47:07.963 に答える