objective-c - 正在调用方法但未执行

标签 objective-c ios cocoa-touch ios4

因此,在我的应用程序中实现 Twitter/Facebook 是一种学习体验,但我快要完成了,我还有最后一个可能很简单的问题。使用 MGTwitter 引擎,我从

中的 View Controller 调用一个方法
 - (void) setAccessToken: (OAServiceTicket *) ticket withData: (NSData *) data {

该方法正在启动,(由 NSLog 调用确认)。但是,它没有做它应该做的事情,这在我的 Twitter 注销按钮中淡出。我仍在了解 Objective-C 处理方法的方式等等,我觉得我只是没有将我的变量指向正确的位置。非常感谢任何方向,这里是下面的代码:

SA_OAuthTwitterEngine.m -

//
// access token callback
// when twitter sends us an access token this callback will fire
// we store it in our ivar as well as writing it to the keychain
// 
- (void) setAccessToken: (OAServiceTicket *) ticket withData: (NSData *) data {
    if (!ticket.didSucceed || !data) return;

    NSString *dataString = [[[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding] autorelease];
    if (!dataString) return;

    if (self.pin.length && [dataString rangeOfString: @"oauth_verifier"].location == NSNotFound) dataString = [dataString stringByAppendingFormat: @"&oauth_verifier=%@", self.pin];

    NSString                *username = [self extractUsernameFromHTTPBody:dataString];

    if (username.length > 0) {
        [self setUsername: username password: nil];
        if ([_delegate respondsToSelector: @selector(storeCachedTwitterOAuthData:forUsername:)]) [(id) _delegate storeCachedTwitterOAuthData: dataString forUsername: username];
    }

    [_accessToken release];
    _accessToken = [[OAToken alloc] initWithHTTPResponseBody:dataString];
    //Call twit login from my view controller
    MyView *fvController = [[MyView alloc] init];
    [MyView twitLogin];
    [MyView helper];
    NSLog(@"LETS TWEET DIRECTLY AFTER SUCCESSFUL LOG IN!");

}

这是我的辅助方法在我的 .m 文件中所做的:

-(void)helper{
    NSLog(@"HELPER FUNCTION");
    [self fadeIn:twitterLogout withDuration:2 andWait:2.0];
}

这是它调用的方法

//FADE IN FUNCTION ------------------------------//////////////////////

-(void)fadeIn:(UIView*)viewToFadeIn withDuration:(NSTimeInterval)duration 
      andWait:(NSTimeInterval)wait
{
    [UIView beginAnimations: @"Fade In" context:nil];
    [UIView setAnimationDelay:wait];
    [UIView setAnimationDuration:duration];
    viewToFadeIn.alpha = 1;
    [UIView commitAnimations];

}

最佳答案

在 Objective-C 中,方法以两种方式之一声明:

- (returnType)methodName;

+ (returnType) methodName;

第一种是“实例”方法,第二种是“类”方法。

应该更改这些行:

[MyView twitLogin];
[MyView helper]; 

试试这个:

[fvController twitLogin];
[fvController helper];

此外,您可能会在委托(delegate)返回值之前调用辅助方法。您应该查看 MGTwitterEngine 是否包含委托(delegate)。 (如果没有,我会感到惊讶。)您应该仅在登录完成时使用可用的回调来调用方法。简单地按顺序调用方法不会做你想做的事。

关于objective-c - 正在调用方法但未执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7020177/

相关文章:

iphone - 长时间运行的 REST API

ios - UIDocumentInteractionController & ARC : [UIPopoverController dealloc] reached while popover is still visible

ios - 为 Star Ocean Second Story 和 Legend of Mana 等 2D 游戏存储游戏数据

ios - 数据源与后台 NSManagedObjectContext 合并后,UITableView 不会重新加载

iphone - iOS 将文件从主包复制到文档目录

objective-c - 将 Swift 3 升级到 4, objective-c 中不再有 swift 扩展

objective-c - C代码中的内存泄漏

ios - 在 PDFView 中设置内容插入

ios - 从 iOS 中的 Facebook SDK 检索 friend 的电子邮件地址

ios - CoreAudio,收集准确数量的样本