0
所以这里就是我试图做我有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