Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 语法理解困难_Objective C - Fatal编程技术网

Objective c 语法理解困难

Objective c 语法理解困难,objective-c,Objective C,声明如下: -(BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile; 我将其解释为writeToFile方法返回一个BOOL结果。它需要两个参数。第一个是NSString引用。第二个是原子调用并向其传递BOOL值的结果 我说对了吗 本教程接着说,您可以这样调用上述方法: BOOL result = [myData writeToFile:@"/tmp/log.txt" atomically:NO]; 这就是“

声明如下:

-(BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile;
我将其解释为
writeToFile
方法返回一个
BOOL
结果。它需要两个参数。第一个是
NSString
引用。第二个是原子调用
并向其传递
BOOL
值的结果

我说对了吗

本教程接着说,您可以这样调用上述方法:

BOOL result = [myData writeToFile:@"/tmp/log.txt" atomically:NO];
这就是“发现”。但我想知道我是否必须使用“原子:否”

我能做点像这样的事吗

resultOfAtomically = atomically:NO
BOOL result = [ myData writeToFile:@"/tmp/log.txt" resultOfAtomically ];
假设我正确地声明了
resultofatomic


另外,将
@
预加到
“/tmp/log.txt”
是否意味着“给我参考而不是值”

文本以原子方式
引入了
writeToFile:atomicly:
方法的第二个参数,它不是一个单独的函数。因此,不能简单地以原子方式调用
:NO
。然而,这是正确的:

BOOL myBool=NO

BOOL result=[myData writeToFile:@”/tmp/log.txt“原子化:myBool]

当谈到Objective-C方法时,您不会将此方法称为“writeToFile”,而是将其称为“writeToFile:atomically:”。通过这种语法,您知道该方法需要两个参数(每个冒号一个)

下面是一种思考方法声明如何分解的方法:

-(BOOL)writeToFile:(NSString*)原子路径:(BOOL)UseAxiliaryFile

-
=定义实例方法(
+
将用于类方法)

(BOOL)
=返回布尔值

write
=这个方法是关于写东西的(没有什么神奇的,只是一个友好的词语选择-可能是
print
或其他东西)

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


原子:(BOOL)使用辅助文件=该方法的第二个参数UseAxiliaryFile是一个布尔值,友好的文本“原子地”(仍然没有什么特别的)提示布尔值决定是否以原子方式写入文件。

关于@before@”/tmp/log.txt,@“”定义了一个NSString对象,而没有@,则是一个简单的定义C样式字符串。仍不清楚。这是属于writeToFile引用的obj的原子方法的定义吗?没有原子方法,原子只是writeToFile的一个参数:原子:。下面是另一个具有类似结构的示例:
-(int)addThisNumber:(int)num1到thisone:(int)num2
方法是
addThisNumber:toThisOne:
,“toThisOne”只是为方法设置第二个参数。没有单独的“toThisOne”方法。在另一种语言中,原始方法的编写方式可能是:(BOOL)writeToFile(字符串文件名,BOOL原子化);Objective-C只是对参数使用了一种不同的语法。不是故意装傻,但在你的例子中,你说这个方法是addThisNumber:toThisOne,它与你的陈述相矛盾,你说原子不是一个写的方法。文件:原子是一个打字错误吗?没有矛盾:“addThisNumber:toThisOne:”是这个方法的全名。。。整个短语。在对话中,出于方便的考虑,您可能将其称为“addThisNumber”方法,但从技术上讲,整个短语都是方法名。类似地,说“writeToFile”更容易,但正确的方法名是“writeToFile:atomically:”,这也是整个短语。该方法可能被命名为(尽管不是那么准确)“writeToFile:Now:”或“writeToFile:Bubba:”。关键是“原子”只是整个方法名称的一部分,它本身或在方法之外没有任何意义。我重新编写了我的答案,使其在技术上更加准确,并添加了如何阅读方法声明的详细说明。希望这能让事情变得更清楚一点。