Objective c @interface<;文件名>;:NSObject和@interface NSObject(文件名)?

Objective c @interface<;文件名>;:NSObject和@interface NSObject(文件名)?,objective-c,Objective C,文件名:ABC.h&ABC.m (一) 首先,在另一个文件中不调用方法。 其次,在另一个文件中调用方法 第一个和第二个代码之间的区别是什么 @interface < ABC > : NSObject 这是NSObject上的一个类别。并且所有的category方法都可用于您所创建的类的所有子类。因此,在本例中,它位于NSObject中,大多数类继承自NSObject,(很少来自NSProxy) 这是ABC类的NSObject上的类别声明 子类化-为了访问实例,我们实例化了ABC (

文件名:ABC.h&ABC.m

(一)

首先,在另一个文件中不调用方法。 其次,在另一个文件中调用方法

第一个和第二个代码之间的区别是什么

@interface < ABC > : NSObject
这是
NSObject
上的一个类别。并且所有的category方法都可用于您所创建的类的所有子类。因此,在本例中,它位于
NSObject
中,大多数类继承自
NSObject
,(很少来自
NSProxy

这是ABC类的
NSObject
上的类别声明

子类化-为了访问实例,我们实例化了ABC

(二)

类别-对于访问,我们不使用ABC的实例。相反,您可以使用NSObject实例访问该方法。这就像向NSObject类本身添加其他方法。

对于第一个:

@interface < ABC > : NSObject

//methods and ivars to your new class

@end
1) @interface:NSObject

--->此语法用于类声明

--->若要调用类,则必须创建该类的对象

第二个:

2) @接口对象(ABC)

--->此语法用于类别声明

--->Category是特定预定义类的扩展

--->下面是如何使用NSString类别的示例

#import <Foundation/Foundation.h>

@interface NSString(MyAdditions)

+(NSString *)getCopyRightString;

@end

@implementation NSString(MyAdditions)

+(NSString *)getCopyRightString{
    return @"Copyright TutorialsPoint.com 2013";
}

@end


int main(int argc, const char * argv[])
{

   NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
   NSString *copyrightString = [NSString getCopyRightString];
   NSLog(@"Accessing Category: %@",copyrightString);
   [pool drain];
    return 0;
}
1) @interface:NSObject

//方法

@结束

是一个类声明

2) @接口对象(ABC)

//方法

@结束


是一个类别。

请注意,您必须将该类别导入任何您想要使用它的地方。您会惊讶于有多少初学者会犯这样的错误!当您的类别位于NSObject之类的东西上时,很容易忘记,毕竟您不需要导入NSObject.h!
@interface NSObject (ABC)
@interface < ABC > : NSObject
//methods
@end
@interface NSObject (ABC)
//methods
@end
@interface  ABC  : NSObject

//methods

@end
@interface NSObject (ABC)

//methods

@end
@interface < ABC > : NSObject

//methods and ivars to your new class

@end
@interface NSObject (ABC)

//methods to category of a specific class like NSString etc

@end
#import <Foundation/Foundation.h>

@interface NSString(MyAdditions)

+(NSString *)getCopyRightString;

@end

@implementation NSString(MyAdditions)

+(NSString *)getCopyRightString{
    return @"Copyright TutorialsPoint.com 2013";
}

@end


int main(int argc, const char * argv[])
{

   NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
   NSString *copyrightString = [NSString getCopyRightString];
   NSLog(@"Accessing Category: %@",copyrightString);
   [pool drain];
    return 0;
}
2013-09-22 21:19:12.125 Categories[340:303] Accessing Category: Copyright TutorialsPoint.com 2013