0

プログレス バーは、配信された電子メールの割合を示すために使用されます。私は電子メールを送信するために使用libetpan.xcodeprojしており、パーセンテージは次のコードで計算できます。cで書かれています。問題は、パーセンテージが増加したことをオブザーバー (objective-c クラス) に通知するために c.file に通知を投稿する方法です。どんな助けでも大歓迎です:)

mailstream_helper.c

static inline int send_data_crlf_progress(mailstream * s,
                      const char *message, size_t size,
                      int quoted, size_t progr_rate,
                      progress_function * progr_fun,
                      mailprogress_function *
                      progr_context_fun, void *context)
{
    const char *current;
    size_t count;
    size_t last;
    size_t remaining;

    count = 0;
    last = 0;

    current = message;
    remaining = size;

    int i = 0;
    while (remaining > 0) {
        ssize_t length;

        if (quoted) {
            if (current[0] == '.')
                if (mailstream_write(s, ".", 1) == -1)
                    goto err;
        }

        length = send_data_line(s, current, remaining);
        if (length < 0)
            goto err;

        current += length;

        count += length;
        if (progr_rate != 0) {
            if (count - last >= progr_rate) {
                if (progr_fun != NULL) {
                    (*progr_fun) (count, size);
                }
                if (progr_context_fun != NULL) {
                    (*progr_context_fun) (count, size, context);
                }
                last = count;
            }
        }

        remaining -= length;
        //I need to post a notification here to let my
            //progress bar know how much data has been sent.        
        printf("No.%d rateOfSentData:%d end\r\n", ++i,
               1.0 - (float) remaining / (float) size);

    }

    return 0;

err:
    return -1;
}
4

1 に答える 1

2

ファイルの名前を.mサフィックスを持つように変更します。これで、純粋なCコードを含むObjCファイルになりました(現在)。次に、NSNotificationCenterを使用する他の場所と同じように、最後にメッセージを追加して通知を送信します。

何らかの理由でこの名前変更を実行できない場合は、ac関数を呼び出して、既存の.mファイルに追加して通知を実行します。

于 2012-09-14T12:12:22.030 に答える