帮助我:(我不知道为什么?
@interface RootViewController : UITableViewController {
BOOL isSearchOn;
}
self->isSearchOn = NO; ( no error)
self.isSearchOn = NO; ( error)
答案 0 :(得分:2)
点操作符.
用于访问property
。
箭头运算符->
用于访问实例变量。
所以你使用
self->isSearchOn = NO; // which is an instance not a property
您也可以跳过self->
isSearchOn = NO;
答案 1 :(得分:2)
- >是传统的C运算符,用于访问由指针引用的结构的成员。由于Objective-C对象(通常)用作指针而Objective-C类是结构,因此可以使用 - >访问其成员(通常)对应于实例变量。
或
当应用于指针箭头时,运算符相当于将点运算符应用于pointee(ptr->字段相当于(* ptr).field)
或
pSomething-> someMember
相当于
(* pSomething).someMember
答案 2 :(得分:0)
。当你有一个对象并想要引用属性或方法时使用,而你必须使用 - >只握住指针时。而不是使用 - >你也可以去*。但我猜你在任何情况下都应该阅读C中的指针。
答案 3 :(得分:0)
这里基本上有三个运算符,其中两个从C继承而第三个来自Objective-C。
在C中,.
和->
执行相同的操作 - 它们从结构中检索值 - 但-
自动取消引用指向结构的指针,因此以下两个表达式是当量:
(*a).b
a->b
第二个操作符只是语法糖。但重要的是,.
在应用于指针时没有任何意义 - 您必须使用->
。
Objective-C允许.
使用对象指针(并且仅带指针,因为所有Objective-C对象都是指针)来引用属性< / em> value,比C运算符提供的更高级别的构造。
因此,您可以在对象上使用.
来检索在@property
接口中定义的属性,但是您需要使用->
直接检索ivars(实例变量),你的例子就是isSearchOn
。但是,通常更好的做法是使用Objective-C中的属性公开变量,而不是使用C&#39 {s} ->
运算符直接引用变量。