2013-01-16 87 views
1

tutorial有以下声明:很难理解语法

-(BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile; 

我解释这是writeToFile方法返回一个BOOL结果。它需要2个参数。第一个是NSString参考。第二个是调用atomically并将值传递给BOOL的结果。

我知道了吗?

本教程接着说你拨打上面的方法是这样的:

BOOL result = [myData writeToFile:@"/tmp/log.txt" atomically:NO]; 

这是找到。但我不知道如果我必须用“原子:NO”

难道我做了什么样

resultOfAtomically = atomically:NO 
BOOL result = [ myData writeToFile:@"/tmp/log.txt" resultOfAtomically ]; 

假设我宣布resultOfAtomically正常。

此外,是否预先@"/tmp/log.txt"的意思是像“给我参考不是价值”?

+0

关于@ before @“/ tmp/log.txt”,@“”定义了一个NSString对象,而没有@,简单的“”定义了一个C风格的字符串。 –

回答

2

文字atomically介绍了writeToFile:atomically:方法的第二个参数,它不是一个单独的函数。因此,您不能简单地致电atomically:NO。这将是正确的,但是:

BOOL myBool = NO;

BOOL result = [myData writeToFile:@"/tmp/log.txt" atomically:myBool];

在谈到Objective-C的方法,你就不会调用此方法 “将writeToFile”,你会称它为 “将writeToFile:原子”。通过这个语法,你知道该方法需要两个参数(每个冒号一个参数)。

这里有一个方法来思考方法声明如何分解:

-(BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile;

- =定义一个实例方法(+将是一个类的方法)。

(BOOL) =返回一个布尔值。

write =这种方法是关于写东西(没有什么魔力,只是友好的词选择 - 可能是print或其他)。

ToFile:(NSString *)path =该方法的第一个参数path是NSString指针,友好文本“ToFile”(再次只是一个词的选择,没有什么特别)暗示我需要为该参数提供一个文件路径。

atomically:(BOOL)useAuxiliaryFile; =该方法的第二个参数useAuxiliaryFile是一个布尔值,并且友好的文本“原子地”(仍然没有特别的)暗示该布尔值决定是否以原子方式写入文件。

+0

仍不清楚。 这是属于被writeToFile引用的obj的原子方法的定义吗? – user1126515

+0

没有原子方法,原子只是writeToFile的一个参数:atomically :.这里是另一个具有相似结构的例子:' - (int)addThisNumber:(int)num1 toThisOne:(int)num2;'方法是'addThisNumber:toThisOne:'和“toThisOne”简单地设置方法的第二个参数。没有单独的“toThisOne”方法。在另一种语言中,你的原始方法可能写成:(BOOL)writeToFile(string fileName,BOOL); Objective-C只是使用不同的参数语法。 –

+0

不要成为一个混蛋,但在你的例子中,你说的方法是addThisNumber:toThisOne它违背了你的声明,原子不是在writeToFile中的方法:原子 这是一个错字? – user1126515