1

在 Objective-C 中,我看到我们可以使用点运算符来设置和获取一个值,对于相同的任务,我在方括号方法调用中看到了类似“[ob 方法]”的内容,我们对这种语法的调用是什么?

4

4 回答 4

4

括号符号:闲聊语言的主要内容,现在是 ObjC 语言的可爱外观。

括号是 SmallTalk 的表达方式,“你在那儿,接受这个消息并用它做点什么”,这就是它们在 Objective C 中的实现方式。我们向第一部分 [Object] 发送一条消息,并在第二部分中声明该消息[对象消息];

当然,它们也具有类似的功能。大多数语言中的属性都是用点表示法 (Object.property) 编写的,但是使用 Objective-C 和现代运行时对非 ivar 支持的属性的支持以及 @synthesize 指令,属性会自动生成名称相同的 getter。听起来很复杂?它不是。如果我有属性示例,那么我可以通过以下两种方式之一访问它:

self.example; 

或者

[self example];

简单的!

但@synthesize 指令并不止于此。我们得到了一个 getter 和一个setter。可以通过与 getter 相同的方式访问 setter。

self.example = foo;

相当于

[self setExample:foo];

括号表示法实际上非常重要,以至于编译器在编译时将大多数点表示法优化为括号表示法。

于 2012-06-28T07:24:17.883 回答
1

method这称为消息传递或消息发送,您正在向对象发送消息ob

它类似于在 java 或 C++ 中调用方法

所以java中的等价物是

ob.method();
于 2012-06-28T07:24:37.883 回答
0
[ob method]

这是你在objective-c中调用方法的方式。myObject.method()在 Java por 示例中,您调用 的方式相同。

ob.myProperty

是如何使用它的 getter/setter 方法访问 ivars,例如:

获取方法 ->NSLog(@"%@",ob.myProperty);

设置方法->ob.myProperty = @"Hello World";

请注意,您还可以像这样使用 set 方法:

[ob setMyProperty:@"Hello World"];

或者像这样使用 get 方法:

NSLog(@"%@",[ob myProperty]);

在 Objective-c 中,您通常不会手动创建 setter 和 getter,因为您有机会使用@propertyand创建它们@synthesize

于 2012-06-28T07:29:13.170 回答
-1

这被称为函数调用..

就像你在其他编程语言中调用函数一样,比如在 java 或 c# 中:

ob.method() // where ob is object and method is the function name.. 

同样,如果您想在目标 c 中调用函数,则调用函数的语法如下:

 [ob method];
于 2012-06-28T07:34:49.280 回答