在 Objective-C 中,我看到我们可以使用点运算符来设置和获取一个值,对于相同的任务,我在方括号方法调用中看到了类似“[ob 方法]”的内容,我们对这种语法的调用是什么?
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];
括号表示法实际上非常重要,以至于编译器在编译时将大多数点表示法优化为括号表示法。
method
这称为消息传递或消息发送,您正在向对象发送消息ob
它类似于在 java 或 C++ 中调用方法
所以java中的等价物是
ob.method();
[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,因为您有机会使用@property
and创建它们@synthesize
。
这被称为函数调用..
就像你在其他编程语言中调用函数一样,比如在 java 或 c# 中:
ob.method() // where ob is object and method is the function name..
同样,如果您想在目标 c 中调用函数,则调用函数的语法如下:
[ob method];