objective-c中的[myString-length]和myString.length有什么区别



我目前正在学习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的超集,所以.用于其他事物(通常是结构或并集)。

相关内容

  • 没有找到相关文章

最新更新