iphone中的void和+(void)有什么区别
我一直在使用Objective-C中使用的不同方法。有人能很好地解释以下方法之间的差异吗iphone中的void和+(void)有什么区别,iphone,objective-c,ios5,Iphone,Objective C,Ios5,我一直在使用Objective-C中使用的不同方法。有人能很好地解释以下方法之间的差异吗 void append(NSString *msg); -(void) append:(NSString *)msg; +(void)append:(NSString *)msg) 是一个实例方法 +void append:NSString*msg 是一个类方法 void appendNSString*msg 是一个C函数。这表示一个实例方法。必须持有该类的有效实例才能调用此方法 -(void) +(v
void append(NSString *msg);
-(void) append:(NSString *)msg;
+(void)append:(NSString *)msg)
是一个实例方法
+void append:NSString*msg
是一个类方法
void appendNSString*msg
是一个C函数。这表示一个实例方法。必须持有该类的有效实例才能调用此方法
-(void)
+(void)
这表示一个类方法。调用此方法不需要类的实例
-(void)
+(void)
它是类实例可以调用的实例方法,如
您拥有类似NSString的类对象
NSString *strObj=@"hi";
要使strObj为大写,可以调用NSString类方法-NSString*uppercaseString
[strObj uppercaseString]
+(void)append:(NSString *)msg)
它是类方法或静态方法。
示例:NSString*strObj1=[NSString]
这里:string方法是类方法,声明为:+idstring;
这将返回自动释放的字符串
-(void) append:(NSString *)msg; // IT is instans method it's always call with object of class.
+(void)append:(NSString *)msg;//it is class method always call with class name .
例如。
“alloc”是一个类名为.like的类方法调用
[ClassName alloc];
void append(NSString *msg); it is a cFunction.
假设您有一个这样的测试类
@interface Test : NSObject
// c function
void append(NSString *msg);
// instance method
- (void)append:(NSString *)msg;
// class method
+ (void)append:(NSString *)msg;
@end
然后您可以实现如下功能:
#import "Test.h"
@implementation Test
void append(NSString *msg)
{
// there is no self inside of a C-function!
NSLog(@"%@", msg);
}
- (void)append:(NSString *)msg;
{
// self in a instance method points to the instance
NSLog(@"%@, %@", msg, self);
}
+ (void)append:(NSString *)msg
{
// self in a class method points to the class
NSLog(@"%@, %@", msg, self);
}
@end
最后,您可以通过以下方式调用函数:
// C function: append(@"hello");
append(@"hello");
// instance method: - (void)append:(NSString *)msg;
[[[Test alloc] init] append:@"hello"];
// class method: + (void)append:(NSString *)msg;
[Test append:@"hello"];
另请参见void appendNSString*msg是一个C函数。与Objective-C方法不同,C函数的调用使用括号而不是Objective-C括号表示法。在iOS中,C函数通常出现在较低级别的组件和框架中,例如图形库
-void append:NSString*msg是一个实例方法。这意味着,必须对该方法写入的任何类的实例调用该方法
这与+void append:NSString*msg不同,后者是一种类方法。这意味着该方法必须在类本身上调用,而不是在该类的任何单个实例上调用。类方法通常保留给本质上是通用的,而不是特定于实例的实用方法。看看类内方法,您不能使用实例变量,但可以使用全局变量和局部变量。
// C function: append(@"hello");
append(@"hello");
// instance method: - (void)append:(NSString *)msg;
[[[Test alloc] init] append:@"hello"];
// class method: + (void)append:(NSString *)msg;
[Test append:@"hello"];