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