2

在尝试为 NSInteger 创建类别时,编译器会抱怨它“找不到 'NSInteger' 的接口声明”。不能创建一个 NSInteger 类别吗?

一个简单的测试将显示编译器错误:

#import <Foundation/Foundation.h>

@interface NSInteger (NSInteger_Extensions)

-(NSInteger)simpleTest;

@end



#import "NSInteger_Extensions.h"

@implementation NSInteger (NSInteger_Extensions)

-(NSInteger)simpleTest {
    return self + 5;
}

@end

这应该可能吗?

谢谢!

4

2 回答 2

9

NSInteger 不是接口。所以这是不可能的。

http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Miscellaneous/Foundation_DataTypes/Reference/reference.html

从上面的链接:

Used to describe an integer.

#if __LP64__ || TARGET_OS_EMBEDDED || TARGET_OS_IPHONE || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64
typedef long NSInteger;
#else
typedef int NSInteger;
#endif

PS: 但是你可以做一个NSNumber. 我认为这是你想做的事情

于 2011-03-15T21:53:16.913 回答
6

NSInteger只是int原始类型的 typedef。由于它不是对象,因此您将无法向其添加类别。

您可以改为将其添加到NSNumberor NSValue

于 2011-03-15T21:54:30.277 回答