Objective-c表达式解释
这些线是什么意思Objective-c表达式解释,objective-c,Objective C,这些线是什么意思 for(ContactInfo *item in fullContactsArray) { if(item->contactId || item->listId) [contactsArray addObject:item]; } 特别是,我想知道->是什么意思。请提供帮助。使用指向基于结构的数据类型的指针时,特殊的取消引用语法允许您在一个步骤中遵从指针并访问结构中的特定字段。为此,我们使用->操作符,如下所示
for(ContactInfo *item in fullContactsArray) {
if(item->contactId || item->listId)
[contactsArray addObject:item];
}
特别是,我想知道
->
是什么意思。请提供帮助。使用指向基于结构的数据类型的指针时,特殊的取消引用语法允许您在一个步骤中遵从指针并访问结构中的特定字段。为此,我们使用->操作符,如下所示:
struct box * p = ...;
p->width = 20;
第二行中演示的->运算符取消对指针p的引用,然后访问结构中的宽度字段。在跟随指针读取或更改其指向的值时,有时比较两个指针以检查它们是否指向相同的值也很有帮助
使用指向基于结构的数据类型的指针时,特殊的取消引用语法允许您在一个步骤中遵从指针并访问结构中的特定字段。为此,我们使用->操作符,如下所示:
struct box * p = ...;
p->width = 20;
第二行中演示的->运算符取消对指针p的引用,然后访问结构中的宽度字段。在跟随指针读取或更改其指向的值时,有时比较两个指针以检查它们是否指向相同的值也很有帮助
< P> <代码> -> < /C> >操作与C或C++相同。代码>项目->联系人ID与
(*项目)相同。联系人ID
。(本例中的点是成员访问操作符,而不是属性访问操作符。)
循环是通过Objective-C容器进行快速迭代的一个例子。它只需检查数组中的每个对象for
,将每个对象依次分配给循环变量fullContactsArray
项
是指向类型为item
的对象的指针,每次通过循环它都指向不同的对象。ContactInfo
语句使用if
运算符检查->
和contactId
实例变量的值listId
- 如果这些变量中的任何一个非零,则
指向的对象将添加到项
contactsArray
<>在Objto-C代码中看到代码< > ->代码>,这是有点不寻常的,因为这些属性和属性访问器通常是首选的实例变量访问。 < P> <代码> -> /COD>操作符的工作方式与C或C++相同。代码>项目->联系人ID与
(*项目)相同。联系人ID
。(本例中的点是成员访问操作符,而不是属性访问操作符。)
循环是通过Objective-C容器进行快速迭代的一个例子。它只需检查数组中的每个对象for
,将每个对象依次分配给循环变量fullContactsArray
项
是指向类型为item
的对象的指针,每次通过循环它都指向不同的对象。ContactInfo
语句使用if
运算符检查->
和contactId
实例变量的值listId
- 如果这些变量中的任何一个非零,则
指向的对象将添加到项
contactsArray
在Objective-C代码中看到
->
是有点不寻常的,尤其是现在,因为属性和属性访问器通常比直接访问实例变量更受欢迎。。。。这取决于历史上的Objective-C类是包含所有实例变量的结构。它们不在现代运行时中-有一个额外的间接级别来消除脆弱的基类问题并允许在运行时添加属性-但是语法已经向前推进了。。。。这取决于历史上的Objective-C类是包含所有实例变量的结构。它们不在现代运行时中-有一个额外的间接级别来消除脆弱的基类问题并允许在运行时添加属性-但是语法已经向前推进。->
操作符也用于访问Objective-C类中的IVAR,而不仅仅是C-Struct。事实上,在问题中,ContactInfo
是一个Objective-C类,而不是一个C-struct。在这种情况下,它必须是非常罕见的鸟,一个带有公共实例变量的Objective-C类。@matt不一定。如果此代码在ContactInfo
类中,则ivar可以是私有的。->
操作符也用于访问Objective-C类中的ivar,而不仅仅是C-structs。事实上,在问题中,ContactInfo
是一个Objective-C类,而不是一个C-struct。在这种情况下,它必须是非常罕见的鸟,一个带有公共实例变量的Objective-C类。@matt不一定。如果此代码在ContactInfo
类中,ivar可以是私有的。非常感谢,这正是我想知道的@卡莱布:对不起。放弃。在我发表声明之前我应该核实一下。我以前从未见过它与Objective-C ivar引用一起使用。但你是对的。它确实有用。@RMADY不用担心。正如我所说,在Objective-C中并不常见。有一件事我非常不喜欢看到,那就是像self->ivar
这样的代码。A) 您可以只说ivar
,不需要self->
部分。B)如果你打算使用self
,你最好把它变成self.ivar
,并把ivar
变成一个属性。非常感谢,这正是我想知道的@卡莱布:对不起。放弃。在我发表声明之前我应该核实一下。我以前从未见过它与Objective-C ivar引用一起使用。但你是对的。它确实有用。@RMADY不用担心。正如我所说,它在Objective-C中并不常见。有一件事我真的很讨厌看到,那就是类似代码