1

我已经根据文档设置了 ObjectiveFlickr,并且我在按钮操作中编写了这个块

OFFlickrAPIContext *context = [[OFFlickrAPIContext alloc] initWithAPIKey:FLICKR_API_KEY sharedSecret:FLICKR_API_SHARED_SECRET];
OFFlickrAPIRequest *request = [[OFFlickrAPIRequest alloc] initWithAPIContext:context];
[request setDelegate:self];
[request fetchOAuthRequestTokenWithCallbackURL: [NSURL URLWithString:FLICKR_CALLBACK]];

但是当我点击按钮时,什么都没有发生

- (void)flickrAPIRequest:(OFFlickrAPIRequest *)inRequest didObtainOAuthRequestToken:(NSString *)inRequestToken secret:(NSString *)inSecret

没有被调用,几乎没有任何反应

4

1 回答 1

1

(是的,老问题,希望这对其他人有帮助)

确保在分配您的 OFFlickrRequest 对象时,它以某种方式保留,例如通过使其成为类的属性而不是局部变量。如果您仅将其存储在当前范围内,ARC 将在您退出范围时将其删除,因此当异步 fetchOAuthRequest 调用返回时,它不会引用要调用的委托。

即这是错误的:

- (void)doDBLogin:(UIButton*)button {
    OFFlickrAPIRequest *flickrRequest = [[OFFlickrAPIRequest alloc] initWithAPIContext:_flickrContext];
    [flickrRequest setDelegate:self];
    [flickrRequest fetchOAuthRequestTokenWithCallbackURL:[NSURL URLWithString:MY_AUTH_URL]];

    // At this point, flickrRequest is about to be destroyed.
}
于 2014-02-18T11:14:24.150 回答