文件名:ABC.h& ABC.m
1)
@interface < ABC > : NSObject
//methods
@end
2)
@interface NSObject (ABC)
//methods
@end
首先,不在另一个文件中调用方法。 第二,方法在另一个文件中调用。
第一个和第一个之间的区别是什么?第二个代码。
答案 0 :(得分:1)
对于第一个:
1)@interface&lt; ABC&gt; :NSObject
---&GT;此语法用于类声明。
---&GT;如果你想调用类而不是你必须创建该类的对象
第二个:
2)@interface NSObject(ABC)
---&GT;此语法用于类别声明。
---&GT;类别是特定预定义类的扩展。
---&GT;下面是如何使用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;
}
现在,当我们编译并运行程序时,我们将得到以下结果。
2013-09-22 21:19:12.125 Categories[340:303] Accessing Category: Copyright TutorialsPoint.com 2013
答案 1 :(得分:0)
@interface < ABC > : NSObject
上面创建一个写在&lt;&gt;内的类(继承自NSObject
)。要使用此类的方法,您需要创建此类的实例。
@interface NSObject (ABC)
这是NSObject
上的一个类别。所有类别方法都适用于您所在类的所有后代。因此,在这种情况下,它位于NSObject
中,并且大多数类都继承自NSObject
,(很少来自NSProxy
)。
答案 2 :(得分:0)
@interface < ABC > : NSObject
//methods
@end
这是为ABC类创建头文件,您可以在其中声明所有公共变量和方法。
@interface NSObject (ABC)
//methods
@end
这是ABC类
上NSObject
的类别声明
答案 3 :(得分:0)
1)
@interface ABC : NSObject
//methods
@end
子类化 - 为了访问实例,我们实例化 ABC
2)
@interface NSObject (ABC)
//methods
@end
类别 - 访问我们不是 ABC 的实例。相反,您可以使用NSObject实例访问该方法。这就像向NSObject类本身添加其他方法一样。
答案 4 :(得分:0)
@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
答案 5 :(得分:0)
1)@interface&lt; ABC&gt; :NSObject
//方法
@end
是一个类声明。
2)@interface NSObject(ABC)
//方法
@end
是一个类别。