2009-06-06 9 views
1

これは単純なもののようですが、どこでも解決策を見つけることができません。ココアタッチでオブジェクトをキャストする

あなたはiPhone用のココア対物レンズcでオブジェクトをどのようにキャストしていますか?

私はそうのようなnsuintegerオブジェクト内の文字列の長さを取得しようとしている:

 NSUInteger *phoneNumberLength = [phoneNumber length]; 

私は警告の初期化は、キャストなしで整数からポインタになり得ます。

このオブジェクトとすべてのオブジェクトを一般にどのようにキャストしますか?

答えて

3

cobbalとアンディは正しいですが、将来のために、あなたは単にObject1 *obj = (Object1 *)object2;

を行うだろうオブジェクトをキャストしたい場合
6

NSUIntegerはオブジェクトではなくintです。おそらく、それへのポインタをしたいので、単に

NSUInteger phoneNumberLength = [phoneNumber length]; 
1

cobbalが正しい使用していない、NSUIntegerはプリミティブ型ではなく、ポインタです。この場合、lengthメソッドはプリミティブへのポインタではなく、プリミティブ型を返すだけです。

(場所はあなたがSDKをインストールした場所に応じて異なる場合があります)

/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.2.1.sdk/System/Library/Frameworks:このヘッダファイルを参照してください。 /Foundation.framework/Headers/NSObjCRuntime.h

#if __LP64__ || (TARGET_OS_EMBEDDED && !TARGET_OS_IPHONE) || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64 
typedef long NSInteger; 
typedef unsigned long NSUInteger; 
#else 
typedef int NSInteger; 
typedef unsigned int NSUInteger; 
#endif 
関連する問題