What does NSString*myString =[ NSString string ] means?
我在读一本关于学习目标C的书,但我不理解以下代码:
1
| NSString* myString = [NSString string]; |
我知道如果您键入[ object method ]或object.method,那么类中的方法将被调用,但是[ Class method ]意味着什么?
[Class method]是一个类方法。
阅读文档了解更多详细信息。
顺便说一下,您不需要在Objective-C中编写object.method。点语法只用于访问或设置对象的属性。
- 哦,谢谢你回答了我的第二个问题。现在不用写了。谢谢:)
- 顺便说一下,你可以写object.method…它甚至做同样的事情。
- 仅仅因为它是编译的,并不意味着它是一种良好的实践。Objective-C中的点语法不用于方法,只用于@properties。实际上,如果您尝试执行类似于object.method;的操作,则会得到一个警告属性访问结果unused-getter不应用于副作用。
正如您可能知道的,不仅有方法可以发送到类的实例。还有一些方法可以发送到方法的类对象。此特定方法返回一个空字符串,并将其赋给"mystring"。有关类对象的更多信息,请阅读Apple文档"Objective-C编程语言"
第一行创建一个新的空字符串。长度0。它只是"@"。通过NSString *myString = @"";类vs实例,您可以完成相同的事情,这是最后一个问题。类是"我想做这个方法给我的"。如果您使用的是[NSString string],那么实际上您使用的是[[NSString alloc] init]。因此,该实例允许您访问类实例(也就是mystring)的方法和变量,所以[myString length]。你不能做[NSString length]。
类方法是获取实例(或获取类类型)的接口,实例方法用于实际使用的类的内存实例。
很抱歉回答得很复杂。
它是一个类方法——它基本上是一个在类本身上调用的方法,而不是在类的特定实例(对象)上调用的方法。请参阅此问题以获得进一步解释。
- 非常感谢,但是我什么时候需要写+(void)myClassMethod,什么时候需要写-(void)myInstanceMethod,如果它是用你发给我的代码写的,我很抱歉,但也许我没有注意到它。
- @omar+用于类方法,-用于实例方法。读一篇客观的报告。现在。