Objective c 有人能解释一下吗。及->;在目标c中?

Objective c 有人能解释一下吗。及->;在目标c中?,objective-c,Objective C,帮帮我:(我不知道为什么 @interface RootViewController : UITableViewController { BOOL isSearchOn; } self->isSearchOn = NO; ( no error) self.isSearchOn = NO; ( error) 当你有一个对象并且想要引用一个属性或方法时,使用“.”,而当你只握住指针时,你必须使用->而不是->你也可以选择“*”。但是我想你无

帮帮我:(我不知道为什么

    @interface RootViewController : UITableViewController {
        BOOL isSearchOn; 
    }

    self->isSearchOn = NO; ( no error)
    self.isSearchOn = NO; ( error)

当你有一个对象并且想要引用一个属性或方法时,使用“.”,而当你只握住指针时,你必须使用->而不是->你也可以选择“*”。但是我想你无论如何都应该阅读C中的指针。

。当你有一个对象并且想要引用一个属性或方法时,使用“>”,而你必须只握住指针时使用->而不是->你也可以选择*。但我想你无论如何都应该阅读C中的指针。

点运算符
用于访问
属性

箭头运算符
->
用于访问实例变量

所以你用

    self->isSearchOn = NO; // which is an instance not  a property
您也可以通过跳过
self->

    isSearchOn = NO; 

点运算符
用于访问
属性

箭头运算符
->
用于访问实例变量

所以你用

    self->isSearchOn = NO; // which is an instance not  a property
您也可以通过跳过
self->

    isSearchOn = NO; 

->是访问指针引用的结构成员的传统C运算符。由于Objective-C对象(通常)用作指针,并且Objective-C类是一个结构,因此可以使用->访问其成员,这些成员(通常)对应于实例变量

应用于指针时,箭头运算符相当于将点运算符应用于指针对象(ptr->field相当于(*ptr).field)

pSomething->someMember

相当于


(*pSomething)。someMember

->是访问指针引用的结构成员的传统C运算符。由于Objective-C对象(通常)用作指针,Objective-C类是结构,因此可以使用->访问其成员,这些成员(通常)对应于实例变量

应用于指针时,箭头运算符相当于将点运算符应用于指针对象(ptr->field相当于(*ptr).field)

pSomething->someMember

相当于


(*pSomething)。一些成员这里基本上有三个操作符,其中两个是从C继承的,第三个是从Objective-C继承的

在C语言中,
->
执行的操作与从结构中检索值相同,但是
-
会自动取消对结构指针的引用,因此以下两个表达式是等效的:

(*a).b
a->b
第二个运算符只是语法上的糖。然而,重要的是,
在应用于指针时没有任何意义,您必须使用
->

Objective-C允许将
与对象指针一起使用(并且仅与指针一起使用,因为所有Objective-C对象都是指针)来引用属性值,这是比C运算符提供的更高级别的构造


因此,您可以在对象上使用
来检索
@property
接口中定义的属性,但您需要使用
->
来检索IVAR(实例变量)直接引用,您的示例中有
isSearchOn
。但是,通常更好的做法是使用Objective-C中的属性公开变量,而不是使用C的
->
运算符直接引用变量。

这里基本上有三个运算符,其中两个是从C继承的,第三个是从Objective-C继承的

在C语言中,
->
执行的操作与从结构中检索值相同,但是
-
会自动取消对结构指针的引用,因此以下两个表达式是等效的:

(*a).b
a->b
第二个运算符只是语法上的糖。然而,重要的是,
在应用于指针时没有任何意义,您必须使用
->

Objective-C允许将
与对象指针一起使用(并且仅与指针一起使用,因为所有Objective-C对象都是指针)来引用属性值,这是比C运算符提供的更高级别的构造

因此,您可以在对象上使用
来检索
@property
接口中定义的属性,但您需要使用
->
来检索IVAR(实例变量)直接,在您的示例中是
isSearchOn
。但是,通常更好的做法是使用Objective-C中的属性公开变量,而不是使用C的
->
运算符直接引用变量