Objective-C中方法内部错误的目的是什么

时间:2013-04-02 18:44:26

标签: objective-c

我开始用这里推荐的书(Objective-c编程)学习Objective-C,我有两个问题:

例如在复制文件的方法中:

NSString *path, newPath;
NSFilemanager;

if([fm copyItemToPath: path toPath newPath error: NULL] == NO)
{
    MSLOG(@"The file does not exist");
}
  1. if中的错误部分的目的是什么,为什么在示例中从book中取出它为null
  2. 我不理解if语句中的NO的含义

2 个答案:

答案 0 :(得分:4)

NOcopyItemToPath方法的返回值。如果文件复制操作不成功,则返回NO(与false相同)。

错误的NULL表示在这种情况下返回的错误并不重要,可以忽略。否则,您将指针传递给NSError对象:

NSError *error;
if([fm copyItemToPath: path toPath newPath error: &error] == NO) {
  NSLog(@"Error is %@", [error.localizedDescription]);

....

错误消息返回函数返回值为false的原因。

答案 1 :(得分:1)

首先需要清理代码:NSString的两个声明都是指针,你需要为NSFileManager声明一个变量指针,你的方法缺少一个:,并且if文字应为NSLog

所以我们有:

NSString *path, *newPath;
NSFilemanager *fm;

if([fm copyItemToPath: path toPath: newPath error: NULL] == NO)
{
    NSLog(@"The file does not exist");
}

NULL的{​​{1}}是默认操作,如果代码成功,errBOOL,如果失败则为YES

NO是返回值的自动防故障。因为有时它是==NO10true,这可能会导致错误。