在Appcelerator模块中,ENSURE_UI_THREAD在设备上崩溃

时间:2012-04-23 07:44:26

标签: ios appcelerator-mobile titanium-modules

我的代码无法在设备上运行,有人可以帮忙..?

- (id) TweetPost : (id) args {
    NSArray *arr = args;
    _post = [args objectAtIndex: 0];
    NSLog(_post, nil);
    [_post retain];
    ENSURE_UI_THREAD(Tweet, args);
}

- (id) Tweet : (id) args {
        NSLog(@"Routine Twitter Module", nil)
        if (![_engine isAuthorized]) {
            UIViewController *controller = [SA_OAuthTwitterController controllerToEnterCredentialsWithTwitterEngine:_engine delegate:self];
            if (controller) {
                [[TiApp app] showModalController:controller animated: YES];
            }
        } else {
            [_engine sendUpdate: _post];
        }
}

执行此代码时,在模拟器上运行正常但在设备上应用程序在NSLog(_post, nil);方法TweetPost之后立即崩溃。我认为这是由于ENSURE_UI_THREAD(Tweet, args);。谁能帮帮我..?

1 个答案:

答案 0 :(得分:0)

我已将上述两个函数替换为:

 - (void) TweetPost : (id) args {
    NSArray *arr = args;
    _post = [arr objectAtIndex: 0];
    [_post retain];
    NSLog(_post, nil);

    [self Tweet: args];
}

- (void) Tweet : (id) args {
    NSLog(@"Routine Twitter Module", nil);
    ENSURE_UI_THREAD(Tweet, args);
    if (![_engine isAuthorized]) {
        UIViewController *controller = [SA_OAuthTwitterController controllerToEnterCredentialsWithTwitterEngine:_engine delegate:self];
        if (controller) {
            [[TiApp app] showModalController:controller animated: YES];
        }
    } else {
        [_engine sendUpdate: _post];
    }
}

这很好用。我不知道错误是什么。