Так вот что я пытаюсь сделатьЯ имею ошибку BAD_ACCESS - Это мое распределение памяти понять правильно
@implementation someHelper
+(BOOL) GetInfo:(NSData **)info1, (NSString**) info2
{
__block _Bool out = NO;
//do stuff to get input
[[Bool result] startSession:input callsBack:^(Abc obj, Bool status)
{
if(status)
{
*info1 = [obj.Data1 subdataWithRange:NSMakeRange(0,2);
*info2 = obj.string1;
out = true;
}
else
out = false;
}];
return out
}
Призвание выглядит что-то вроде
NSString *a;
NSData *b;
output = [someHelper GetInfo:(NSData **)&a (NSString **)&b];
Я думаю, что я здесь отсутствует - фактическое распределение памяти для info1
и info2
. Я очень новичок в Obj C, и мне непонятно, что мне нужно сделать для правильного распределения.
Когда я пытаюсь с
NSMutableData *info1 = [NSMutableData dataWithCapacity: 2];
*info1 = [obj.Data1 subdataWithRange:NSMakeRange(0,2);
я Assigning to NSMutableData from incompatible type NSData
.
Может кто-то, пожалуйста, помогите мне понять это лучше и как я могу исправить проблемы?
За исключением NSError, какие другие типы фундамента получают разыменованные в типичном коде? Едва ли кто-либо. Я не понимаю, почему была бы какая-то причина передавать NSData по ссылке здесь. – stevesliva
@stevesliva Без причины, это просто не сработает. Поскольку 'startSession: callsBack:' является (скорее всего) асинхронным, к тому времени, когда выполняется блок, 'GetInfo' уже вернулся и попытка установить эти inout-параметры совершенно бессмысленна. – bbum