【问题标题】:Value stored to 'beaconsData' during its initialization is never read在初始化期间存储到“beaconsData”的值永远不会被读取
【发布时间】:2015-04-20 14:00:41
【问题描述】:

我收到标记行的“在初始化期间存储到'beaconsData'的值从未被读取”消息,我不太明白为什么会发生这种情况。

- (void)locationManager:(KTKLocationManager *)locationManager didRangeBeacons:(NSArray *)beacons
{
    //NSLog(@"Ranged beacons count: %lu", [beacons count]);
    _beaconKontaktArr = [[NSMutableArray alloc] init];

    for (CLBeacon *beacon in beacons) {
        NSDictionary *beaconsData = [[NSDictionary alloc] init]; //problem is there
        KTKBeacon *beaconData = [self _getDataForBeacon:beacon];
        if (beaconData)
        {
            beaconsData = @{@"beacon": beacon, @"ktkBeacon": beaconData};

            [_beaconKontaktArr addObject:beaconsData];
        }
    }
}

【问题讨论】:

  • 您不需要在这里分配、初始化信标数据,因为您已经在 if 语句中使用 @{}。

标签: ios objective-c memory-leaks


【解决方案1】:

在定义从未使用过的变量期间将对象添加到 beaconsData,然后在 if 循环中用新数据覆盖空字典。变量应该移到循环内部。

- (void)locationManager:(KTKLocationManager *)locationManager didRangeBeacons:(NSArray *)beacons {
    _beaconKontaktArr = [[NSMutableArray alloc] init];

    for (CLBeacon *beacon in beacons) {
        KTKBeacon *beaconData = [self _getDataForBeacon:beacon];
        if (beaconData) {
            NSDictionary *beaconsData = @{@"beacon": beacon, @"ktkBeacon": beaconData};
            [_beaconKontaktArr addObject:beaconsData];
        }
    }
}

【讨论】:

    猜你喜欢
    • 2011-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-11
    • 1970-01-01
    • 2018-07-26
    • 2015-07-26
    • 2012-01-19
    相关资源
    最近更新 更多