Objective c NSString*mystring和NSString*mystring之间有什么区别

Objective c NSString*mystring和NSString*mystring之间有什么区别,objective-c,Objective C,我遇到了几个示例,它们在头文件中声明的类与 NSString* mystring; 或 有什么区别吗?没有区别,只是编码风格偏好 没什么,它们之间有空间甚至都不重要。您甚至可以编写NSString*mystring实际上没有区别。在C(以及Objective-C,作为C的超集)中,*的位置仅仅是风格问题 我建议您查看Google的样式指南。是首选项,如果您在同一行中声明多个变量,即 NSString* mystring1, mystring2; // Misleading, mystring

我遇到了几个示例,它们在头文件中声明的类与

NSString* mystring;


有什么区别吗?

没有区别,只是编码风格偏好

没什么,它们之间有空间甚至都不重要。您甚至可以编写
NSString*mystring

实际上没有区别。

在C(以及Objective-C,作为C的超集)中,
*
的位置仅仅是风格问题


我建议您查看Google的样式指南。

是首选项,如果您在同一行中声明多个变量,即

NSString* mystring1, mystring2;  // Misleading, mystring2 is not a *

NSString *mystring1, mystring2;  // Is more clear 

一点也没有-这是个人偏好,你是否认为

  • 这里有一个NSString pointer类型的变量(
    NSString*mystring

  • 这里有一个NSString类型的变量,它是指针(
    NSString*mystring


  • …更清晰。也就是说,只要你保持一致,你就不应该放松睡眠。

    没有区别。这是风格的问题

    在Objective-C中,您几乎可以将星形视为变量“类型”的一部分

    但是,编译器将star解释为“将此变量视为指向声明类型的指针”(在本例中为NSString)。有趣的是一次定义多个变量:

    NSString *myString, *yourString;
    

    必须在每个变量上使用星号。

    这是三个完全不同的词汇元素,它们之间的空白量完全无关。就编译器生成的内容而言,这些都是等效的:

    NSString*x;
    NSString *x;
    NSString* x;
    NSString * x;
    NSString                 *                 x;
    NSString /* comment here */ * /* and another */ x;
    
    我更喜欢
    NSString*x
    变体,因为指针说明符属于变量,而不是类型。我的意思是,这两个:

    int *x, y;
    int* x, y;
    

    创建一个名为
    x
    的整数指针和一个名为
    y
    的整数指针,而不是两个整数指针。

    没有区别。这是一个偏好和风格的问题

  • 这里有一个类型为
    NSString
    pointer
    (NSString*mystring)
  • 这里有一个
    NSString
    类型的变量,它是一个指针
    (NSString*mystring)
  • 第一种方法的优点:

    当编码到协议时,有些变量有星型,有些没有星型,这是没有问题的。例如:

    NSString*        _myString
    id<SomeProtocol> _collaborator
    

    现代OO语言(如Java)倾向于不鼓励在一行中使用多个变量:

    记住,选择一个,并在整个项目中始终使用它。我不管是哪一个,只要始终如一。谢谢!我一直在思考这个问题——我正在学习的这本书的用法不一致,让我感到困惑。
    NSString*        _myString
    id<SomeProtocol> _collaborator
    
    NString          *_myString
    id<SomeProtocol> _collaborator
    
    //Only the first is a pointer. 
    NSString* _myString, _anotherString