@interface <filename =“”>:NSObject和@interface NSObject(文件名)之间有什么区别?</file>

时间:2014-04-10 06:30:23

标签: objective-c

文件名:ABC.h&amp; ABC.m

1)

@interface < ABC > : NSObject

//methods

@end

2)

@interface NSObject (ABC)

//methods

@end

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

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

6 个答案:

答案 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

是一个类别。