小编Mor*_*ris的帖子

在NSDictionary(ARC)中块被释放

我正在尝试保留对通过方法传递给我的类的块的引用,以便稍后调用.然而,我遇到了麻烦,保持对它的引用.

我认为,显而易见的方法是将它添加到ivar集合中,所有这些集合都应该保持对其内容的强烈引用.但是当我试图将它拉回来时,它是零.

代码非常简单:

typedef void (^DataControllerCallback)(id rslt);

@interface DataController : NSObject {
    NSMutableArray* queue;
}
- (void) addBlock:(DataControllerCallback)callback;
- (void) functionToBeCalledLater;
@end

@implementation DataController

- (id) init {
    self = [super init];
    if (self != nil) {        
        queue = [NSMutableArray new];
    }
    return self;
}

- (void) addBlock:(DataControllerCallback)callback {
    NSDictionary* toAdd = [NSDictionary dictionaryWithObjectsAndKeys:
        [callback copy], @"callback",
        @"some other data", @"data", nil];
    [queue addObject:toAdd];
}

- (void) functionToBeCalledLater {
    NSDictionary* dict = [queue lastObject];
    NSLog(@"%@", [dict objectForKey:@"data"]; //works
    DataControllerCallback callback …
Run Code Online (Sandbox Code Playgroud)

objective-c ios objective-c-blocks automatic-ref-counting

14
推荐指数
1
解决办法
4425
查看次数

MKMapSnapshotter使用了大量的CPU和RAM

MKMapSnapshotter在模拟器中似乎使用高达2GB的RAM,并触发内存警告并在设备上长时间挂起我的应用程序.我不确定我的设置的哪一部分导致了这个问题.

当同时检索多个图像时会出现这种巨大的用法,但即使一个接一个地检索多个图像,似乎也会使用大量的RAM,峰值时为600MB,并且使用高达190%的CPU占用CPU.我已经尝试删除所有其他逻辑,甚至在请求后保存图像,并且仍然会出现巨大的RAM和CPU使用率.

这不是故意的.必须有一些我没有设置的东西,导致这个失控的资源占用.这是我的选项代码:

    MKMapSnapshotOptions* options = [MKMapSnapshotOptions new];
    options.region = MKCoordinateRegionMake(CLLocationCoordinate2DMake(self.lat.doubleValue, self.lng.doubleValue), MKCoordinateSpanMake(0.01, 0.01));
    options.scale = 2.0;
    options.size = CGSizeMake(300, 44);
    options.showsBuildings = NO;

    MKMapSnapshotter* snapshotter = [[MKMapSnapshotter alloc] initWithOptions:options];
    [snapshotter startWithCompletionHandler:^(MKMapSnapshot *snapshot, NSError *error) {
        // even if I do nothing in here, it still goes crazy
    }];
Run Code Online (Sandbox Code Playgroud)

我在这里错过了什么?

mapkit ios mkmapsnapshotter

10
推荐指数
0
解决办法
467
查看次数

区分字典和字典列表的Python方法是什么?

所以,我想是一个很好的Python程序员和鸭类的地方我可以,但我有一个有点问题,在我的输入可以是一个dict或一个listdict秒。

我无法区分它们是可迭代的,因为它们都是。

我的下一个想法只是打电话list(x),希望能完整地恢复我的清单,并把我的辞典作为清单中的唯一项目。las,它只给了我字典的键列表。

我现在正式没主意(isinstance众所周知,这不怎么称呼,不是很pythonic)。即使我输入的是一个单独的字典,我也只想以字典列表作为结尾。

python dictionary list

3
推荐指数
1
解决办法
821
查看次数