Iphone 与x2B之间的差异;Objective-c中的and-方法

Iphone 与x2B之间的差异;Objective-c中的and-方法,iphone,objective-c,cocoa,Iphone,Objective C,Cocoa,使用声明的方法与使用声明的方法之间有什么区别+ e、 g 根据: 实例方法以-开头,类级方法以+ 有关更多信息,请参阅。减号是实例方法(只能通过实例化对象访问) 另外还有类方法(如在Java Math.abs()中,您可以在没有实例化对象的情况下使用它)第一个是实例方法,第二个是类方法。您应该阅读苹果的Objective-C文档来了解差异。前缀为-的方法是实例方法。这意味着它们只能在类的实例上调用,例如: [myStringInstance length]; 前缀为+的方法是类方法。这意味着可

使用声明的方法与使用声明的方法之间有什么区别+

e、 g

根据:

实例方法以-开头,类级方法以+


有关更多信息,请参阅。

减号是实例方法(只能通过实例化对象访问)


另外还有类方法(如在Java Math.abs()中,您可以在没有实例化对象的情况下使用它)

第一个是实例方法,第二个是类方法。您应该阅读苹果的Objective-C文档来了解差异。

前缀为
-
的方法是实例方法。这意味着它们只能在类的实例上调用,例如:

[myStringInstance length];

前缀为
+
的方法是类方法。这意味着可以在类上调用它们,而不需要实例,例如:

[NSString stringWithString:@"Hello World"];
+(void)methodname
是类变量,
-(void)methodname
是对象变量

假设您创建了一个实用程序类,该类有一个反转字符串的方法。您称之为MYUtility的类

如果你使用+,比如

+ (NSString *)reverse:(NSString *)stringToReverse
你可以像这样直接使用它

NSString *reversed = [MYUtility stringToReverse:@"I Love objective C"];
如果你用-,比如

- (NSString *)reverse:(NSString *)stringToReverse
您必须使用:

MYUtility *myUtil = [[MYUtility alloc] init];
NSString *reversed = [myUtil stringToReverse:@"There are many ways to do the same thing"];
使用基于类的函数,您只需直接调用,但除了#定义之外,您无法访问任何局部变量,因为类没有实例化

但是使用字符串,您必须在使用之前实例化该类,并且您可以访问所有局部变量


这不是一个简单的选择,很多类都有,只要看看NSString的头文件,它到处都是+函数和-函数。

只是好奇:为什么选择这种表示法?+/-让我觉得有点不舒服(可能是因为它让我想起perl如何使用“@”、“#”、“$”来表示某些东西)我不能对符号的选择发表评论,因为我只是不知道……对不起。也许其他人会知道?UML使用+/-当然。UML也使用+/-来注释方法。然而,除此之外,UML的使用和Obj-C的使用完全不同。@Françoisbausoleil我认为UML使用+/-符号来表示公共/私有属性或函数。()
MYUtility *myUtil = [[MYUtility alloc] init];
NSString *reversed = [myUtil stringToReverse:@"There are many ways to do the same thing"];