Objective-c表达解释

时间:2013-04-19 03:17:40

标签: objective-c

这些线是什么意思?

   for(ContactInfo *item in fullContactsArray) {
        if(item->contactId || item->listId)
            [contactsArray addObject:item];
    }

特别是,我想知道->的含义。请帮忙。

2 个答案:

答案 0 :(得分:3)

使用指向基于结构的数据类型的指针时,一种特殊的解除引用语法允许您在一个步骤中使用指针并访问结构中的特定字段。为此,我们使用 - >运算符,如下所示:

struct box * p = ...; 
p->width = 20; 

- >在第二行上演示的运算符取消引用指针p,然后访问结构中的宽度字段。在跟踪指向读取或改变它指向的值的指针时,有时比较两个指针以检查它们是否指向相同的值也是有帮助的。

Pointers in Objective-C

答案 1 :(得分:2)

->运算符的工作方式与C或C ++相同... item->contactId(*item).contactId相同。 (在这种情况下,点是成员访问运算符,而不是属性访问运算符。)

  • for循环是通过Objective-C容器快速迭代的一个示例。它只是检查数组fullContactsArray中的每个对象,依次将每个对象分配给循环变量item

  • item是指向ContactInfo类型对象的指针,每次循环都指向不同的对象。 if语句使用->运算符来检查contactIdlistId实例变量的值。

  • 如果其中任何一个变量非零,则item指向的对象将添加到contactsArray

在Objective-C代码中看到->有点不寻常,尤其是现在,因为属性和属性访问器通常更倾向于直接实例变量访问。