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 です。オブジェクトではないため、カテゴリを追加することはできません。

NSNumber代わりに、これをまたはに追加できますNSValue

于 2011-03-15T21:54:30.277 に答える