Ios 无法在NSMutableDictionary中存储UIImage

Ios 无法在NSMutableDictionary中存储UIImage,ios,objective-c,uiimage,nsmutabledictionary,Ios,Objective C,Uiimage,Nsmutabledictionary,我正在从解析服务器获取一个图像,但当我收到它并将其存储在NSMutableDictionary中时,当我检查它时,它无法停留在那里 NSString* messageSenderId = [receivedMessage objectForKey:@"Sender Id"]; NSLog(@"messageSenderId = %@", messageSenderId); if([self.avatarDictionary objectForKey:messageSenderId] == ni

我正在从解析服务器获取一个图像,但当我收到它并将其存储在
NSMutableDictionary
中时,当我检查它时,它无法停留在那里

NSString* messageSenderId = [receivedMessage objectForKey:@"Sender Id"];
NSLog(@"messageSenderId = %@", messageSenderId);

if([self.avatarDictionary objectForKey:messageSenderId] == nil) { // avatar image for sender not yet stored

PFQuery* userQuery = [PFUser query];
[userQuery whereKey:@"objectId" equalTo:messageSenderId];
PFUser* messageSender = (PFUser *)[[messageSenderQuery findObjects] firstObject];

PFFile *avatarImage = messageSender[@"profilePictureSmall"];
[avatarImage getDataInBackgroundWithBlock:^(NSData * _Nullable data, NSError * _Nullable error) {

        UIImage* storedImage = [UIImage imageWithData:data];
        [self.avatarDictionary setObject:storedImage forKey:messageSender.objectId];
        NSLog(@"objectForKey: %@", [self.avatarDictionary objectForKey:messageSender.objectId]);
        [self.collectionView reloadData];
    }];
}

当我检查
storedImage
变量时,我可以看到它不是空的。但是,
NSLog
显示,在我将该密钥存储在内部后,该密钥没有对象。

当然可以,但我不会。
您的问题可能是因为您没有初始化可变字典。
图像占用大量内存,如果您存储大量图像,系统可能会关闭您的应用程序。
更好的方法是在本地保存图像,并将其路径存储在可变字典中。

或者,如果您仍然想在RAM中存储图像,可以使用。NSCache基本上是一个可变字典,但它通过自动退出资源而具有更好的内存管理,并且是线程安全的。
当然可以,但我不会。
您的问题可能是因为您没有初始化可变字典。
图像占用大量内存,如果您存储大量图像,系统可能会关闭您的应用程序。
更好的方法是在本地保存图像,并将其路径存储在可变字典中。

或者,如果您仍然想在RAM中存储图像,可以使用。NSCache基本上是一个可变字典,但它通过自动退出资源具有更好的内存管理,并且是线程安全的。

您是否初始化了您的
self.avatarDictionary
请检查,您必须执行
self.avatarDictionary=[NSMutableDictionary]???您是否初始化了您的
self.avatarDictionary
请检查,您必须执行
self.avatarDictionary=[NSMutableDictionary]???是的。这不是草签的,谢谢。我不知道我的应用程序会因为NSDictionary中存储的许多图像而被杀死。你知道限制是什么吗?如果占用的内存超过限制,你的应用程序可能会被杀死。限制取决于设备,不会写入任何位置。苹果公司建议你保持低内存。这不是草签的,谢谢。我不知道我的应用程序会因为NSDictionary中存储的许多图像而被杀死。你知道限制是什么吗?如果占用的内存超过限制,你的应用程序可能会被杀死。限制取决于设备,不会写入任何位置。苹果建议你保持低内存配置。