我目前正在学习objective-c。事物周围的方括号究竟意味着什么,使用它和使用句点之间有什么区别(我来自.NET世界,所以这对我来说更简单)。
谢谢。
我目前正在学习objective-c。事物周围的方括号究竟意味着什么,使用它和使用句点之间有什么区别(我来自.NET世界,所以这对我来说更简单)。
谢谢。
在您的示例中,他们都做同样的事情。.
是一种用于访问对象属性的简写 。[]
用于向对象发送消息。在您的示例中,这些恰好是同一件事。如果您尝试发送不直接映射到属性名称的消息,您会注意到差异。
例如:[myString length]
andmyString.length
是一样的,但是如果你想设置长度(让我们假设这对例子来说是有意义的),你需要做类似的事情[myString setLength:newLength]
or myString.length = newLength
。除此之外,还有一些与属性名称不同的消息——比如这个例子:
[myString stringByReplacingOccurrencesOfString:@"hello" withString:@"world"];
.
使用速记没有有意义的等价物。
Objective-C 使用消息,而不是方法,这是主要语法(引入点语法作为简单 get/set 消息的替代方案)。方法和消息之间有明显的相似之处,但也有区别。
在 Objective-C 中,对象在运行时响应消息具有完全的灵活性。他们可以处理完全出乎意料的消息,例如通过将其代理到另一个对象。或者,您可以在运行时将消息映射到列。这是基于可追溯到 Smalltalk 的遗产。
.NET只是dynamic
通过//获得了这种灵活性DynamicObject
。IDynamicMetaObjectProvider
当然,在任何一种语言中,在编译时定义的方法/消息名称通常更合适。但是动态的也有值得注意的用例。
当然,Objective-C 是 C 的超集,因此.
用于其他事物(通常是结构或联合)。