我正在开发一个API,它将NSData返回给调用者。我需要在函数参数中提供对象(而不是作为返回值)。 以下哪种方法是首选,为什么?Objective C - 有什么更好的传递给NSData或使用NSMutableData
NSData* data;
[self foo1:&data];
-(BOOL)foo1:(NSData**)data {
*data = [@"1234" dataUsingEncoding:NSUTF8StringEncoding];
...
}
或
NSMutableData* data = [[NSMutableData alloc] init];
[self foo2:data];
-(BOOL)foo2:(NSMutableData*)data {
[data setData:[@"1234" dataUsingEncoding:NSUTF8StringEncoding]];
}
出于好奇,为什么你不能使用返回值(如果需要,在失败时返回'nil')?这比以上两个选项都要好。 – Rob
当方法附加数据时,'foo2'是合适的。我会做' - (NSData *)foo3'并返回'nil'而不是'NO'。 – Willeke
我知道最好的方法是返回NSData。然而,我不能够返回NSData对象,因为在真正的API中,它返回了其他的东西(API的主要数据),我需要的NSData是一些较小的附加数据(可能是零/空)。所以假设这必须作为参数传递,哪种方法是首选? – liorco