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