0

我有一个使用 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不使用取消引用运算符而通过。

我只是想确保我这样做是正确的,以避免以后出现麻烦,所以我所拥有的有问题吗?

4

1 回答 1

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引用都会有错误消息 [错误描述]

于 2012-06-13T15:40:23.397 回答