Objective-C在自定义方法中将NSError指针传递给NSFileManager

时间:2012-06-13 15:15:56

标签: objective-c pointers nsfilemanager nserror

我有一个使用ARC并使用NSError指针的方法,然后将其传递给contentsOfDirectoryAtPath:error: NSFileManager方法,如下所示:

+ (NSArray *) getContentsOfCurrentDirectoryWithError: (NSError **)error
{
    // code here

    _contentsOfCurrentDirectory = [_fileManager contentsOfDirectoryAtPath: _documentDirectory error: error];

    // more code here
}

我不确定这段代码是否正确,因为由于受托管语言的破坏,我不太熟悉指针。但是,我最初的反应是这样做:

_contentsOfCurrentDirectory = [_fileManager contentsOfDirectoryAtPath: _documentDirectory error: &error];
然而,Xcode对我这样尝试大吼大叫。关于这可能如何工作的我的假设是contentsOfDirectoryAtPath:error:方法要求指针,因为我在getContentsOfCurrentDirectoryWithError:error:方法中要求指针,所以我只能通过error使用解除引用运算符。

我只是想确保我这样做是为了避免以后的麻烦,所以我有什么问题吗?

1 个答案:

答案 0 :(得分:0)

方法可以像.h文件中的 NSError ** errorMessage 一样:

+ (NSArray *) getContentsOfCurrentDirectory
{ 
  NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,    NSUserDomainMask, YES);
  NSString *_documentsDirectory = [paths objectAtIndex:0]; 
  NSArray *_contentsOfCurrentDirectory = [[NSFileManager defaultManger]  contentsOfDirectoryAtPath: _documentDirectory error: errorMessage]; 
  return contentsOfCurrentDirectory ;
}

每当出现错误时 errorMessage 引用都会出现错误消息[错误说明]