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的->
运算符直接引用变量