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