Cocoa 在Snow Leopard上,为什么在调用[ABPerson beginLoadingImageDataForClient:]之后未调用-[<;ABImageClient>;consumeImageData:forTag:]?

Cocoa 在Snow Leopard上,为什么在调用[ABPerson beginLoadingImageDataForClient:]之后未调用-[<;ABImageClient>;consumeImageData:forTag:]?,cocoa,osx-snow-leopard,abaddressbook,abperson,Cocoa,Osx Snow Leopard,Abaddressbook,Abperson,我正在尝试加载共享ABAddressBook中个人条目的图像日期。特别是,我打电话来 -[ABPerson beginLoadingImageDataForClient:] 并将采用ABImageClient并实现的对象作为参数传递 -[<ABPersonClient> consumeImageData:forTag:] 我是否误用了ABAddressBook调用来加载ABPerson实例的图像数据?这是雪豹上的ABAddressBook的bug吗?如果是,是否有解决办法 #im

我正在尝试加载共享
ABAddressBook
中个人条目的图像日期。特别是,我打电话来

-[ABPerson beginLoadingImageDataForClient:]
并将采用
ABImageClient
并实现的对象作为参数传递

-[<ABPersonClient> consumeImageData:forTag:]
我是否误用了ABAddressBook调用来加载
ABPerson
实例的图像数据?这是雪豹上的
ABAddressBook
的bug吗?如果是,是否有解决办法

#import <Foundation/Foundation.h>
#import <AddressBook/AddressBook.h>

@interface ImageConsumer : NSObject <ABImageClient>
@property (nonatomic, strong) NSMutableDictionary *imagesForNumbers;
@end

@implementation ImageConsumer

- (id)init
{
    self = [super init];
    if (self) {
        self.imagesForNumbers = [NSMutableDictionary dictionary];
    }
    return self;
}

- (void)consumeImageData:(NSData *)data forTag:(NSInteger)tag
{
    [self.imagesForNumbers setObject:data forKey:[NSNumber numberWithInteger:tag]];
    NSLog(@"%s: loaded data of length %zu for tag %zd", __PRETTY_FUNCTION__, data.length, tag);
}

@end

int main(int argc, const char * argv[])
{
    @autoreleasepool {
        NSArray *persons = [[ABAddressBook sharedAddressBook] people];
        ImageConsumer *imageConsumer = [[ImageConsumer alloc] init];
        for (ABPerson *person in persons) {
            NSInteger loadingKey = [person beginLoadingImageDataForClient:imageConsumer];
            NSLog(@"requested data person named %@ %@ and received tag %zd", [person valueForProperty:kABFirstNameProperty], [person valueForProperty:kABLastNameProperty], loadingKey);
        }
        [[NSRunLoop mainRunLoop] run];
    }
    return 0;
}