Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iphone中的void和+(void)有什么区别_Iphone_Objective C_Ios5 - Fatal编程技术网

iphone中的void和+(void)有什么区别

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

我一直在使用Objective-C中使用的不同方法。有人能很好地解释以下方法之间的差异吗

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"];