我一直在使用 Objective-C 中使用的不同方法。任何人都可以很好地解释以下方法之间的区别吗?
void append(NSString *msg);
-(void) append:(NSString *)msg;
+(void)append:(NSString *)msg)
我一直在使用 Objective-C 中使用的不同方法。任何人都可以很好地解释以下方法之间的区别吗?
void append(NSString *msg);
-(void) append:(NSString *)msg;
+(void)append:(NSString *)msg)
void append(NSString *msg)
是一个 C 函数。与 Objective-C 方法不同,C 函数是使用括号而不是 Objective-C 括号表示法调用的。C 函数经常出现在 iOS 中较低级别的组件和框架中,例如图形库。
-(void) append:(NSString *)msg
是一个实例方法。这意味着,该方法必须在它已写入的任何类的实例上调用。
这与+(void) append:(NSString *)msg
类方法不同。这意味着该方法必须在类本身上调用,而不是在类的任何单个实例上调用。类方法通常保留给本质上通用的实用方法,而不是特定于实例的方法。
-(void) append:(NSString *)msg;
is an instance method.
+(void) append:(NSString *)msg;
is a Class method.
void append(NSString *msg);
is a C
function.
void append(NSString *msg); // c function
-(void) append:(NSString *)msg; // instance method
+(void)append:(NSString *)msg;// class method
void append(NSString *msg); // C Style function declaration.
-(void) append:(NSString *)msg;
它是类实例可以调用的实例方法。
你有 NSString 类对象。
NSString *strObj=@"hi";
要将 strObj 设为大写,请调用 NSString 类方法 - (NSString *)uppercaseString;
[strObj uppercaseString]
+(void)append:(NSString *)msg)
它是类方法或静态方法。示例:NSString *strObj1=[NSString 字符串];
这里: string 方法是类方法,它被声明为: + (id)string; 这将返回自动释放的字符串。
-(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)
这表示一个类方法。您不需要类的实例来调用此方法。
+(void)