2

我目前正在学习objective-c。事物周围的方括号究竟意味着什么,使用它和使用句点之间有什么区别(我来自.NET世界,所以这对我来说更简单)。

谢谢。

4

2 回答 2

3

在您的示例中,他们都做同样的事情。.是一种用于访问对象属性的简写 。[]用于向对象发送消息。在您的示例中,这些恰好是同一件事。如果您尝试发送不直接映射到属性名称的消息,您会注意到差异。

例如:[myString length]andmyString.length是一样的,但是如果你想设置长度(让我们假设这对例子来说是有意义的),你需要做类似的事情[myString setLength:newLength]or myString.length = newLength。除此之外,还有一些与属性名称不同的消息——比如这个例子:

[myString stringByReplacingOccurrencesOfString:@"hello" withString:@"world"];

.使用速记没有有意义的等价物。

于 2012-03-15T22:23:10.463 回答
1

Objective-C 使用消息,而不是方法,这是主要语法(引入点语法作为简单 get/set 消息的替代方案)。方法和消息之间有明显的相似之处,但也有区别。

在 Objective-C 中,对象在运行时响应消息具有完全的灵活性。他们可以处理完全出乎意料的消息,例如通过将其代理到另一个对象。或者,您可以在运行时将消息映射到列。这是基于可追溯到 Smalltalk 的遗产。

.NET只是dynamic通过//获得了这种灵活性DynamicObjectIDynamicMetaObjectProvider当然,在任何一种语言中,在编译时定义的方法/消息名称通常更合适。但是动态的也有值得注意的用例。

当然,Objective-C 是 C 的超集,因此.用于其他事物(通常是结构或联合)。

于 2012-03-15T22:22:34.097 回答