【IOS】OC FAQ

1085 ワード

1.  typedefvoid(^HandlerType)(id);理解方法
実はtypedefは1つのパラメータがvoidで、タイプがvoidのblockを返します.
つまり、void(^)(void)タイプを使用する場合は、HandlerTypeで代用することができる.これはtypedef int myintと何の違いもなく、定義されたタイプがblockに変更されただけです.
2.OCとC,C++の混成問題
A.OCはCと直接ミキシングすることができる.OCはCの拡張であるため、ミキシングの接尾辞は用いる.mエンディング.名前がmm末尾ではコンパイルは可能ですが、buildの場合はリンクエラーが報告され、メソッドが定義されていないことを示します.
B.OCとC++の混合、採用.mmの末尾は、mファイル呼び出しは、呼び出すもよい.CPPファイルは、一般的に中間ファイルとして扱われる.
3.可変パラメータ、およびマクロ定義について.
OCにおける可変パラメータはCにおける可変パラメータと同様に共通である.
#define LogDbg(...) [WbxLogUtil LogTo:LOG_LEVEL_DEBUG format:__VA_ARGS__]

次のように実装されます.
WbxLogUtil.h
@interface WbxLogUtil : NSObject
+ (void)LogTo:(LOG_LEVEL)level format:(NSString * )format, ...;
@end

WbxLogUtil.mm
@implementation WbxLogUtil
+ (void)LogTo:(LOG_LEVEL)level format:(NSString * )format, ...
{
.....
}
@end

そのうち、.mmファイルからc++のファイルが呼び出されます.
実際の呼び出しでは、次のコードが使用されます.
LogDbg(@"The segment index is: %d", index);