2011-07-21 12 views
4

%newと%classはMobileSubstrateの調整の意味は何ですか?例えば:二重の質問には申し訳ありません%new&%classの目的は何ですか?

%class TPBottomLockBar; 

%new([email protected]:) 

+0

Theosを使用していますか?ドキュメンテーションをチェックしたり、IRCで質問したりするのはなぜですか? – EmilioPelaez

+0

これは便利ですよhttp://iphonedevwiki.net/index.php/Logos http://iphonedevwiki.net/index.php/Special:AllPages –

答えて

16

これらは両方ともLogos構成です。 %newは、実行時にクラスに新しいメソッドを追加するためのもので、その構文は%new(typeencoding)です。 Objective-C型エンコーディングin Apple's Objective-C runtime documentationに関する情報を取得できます。これらのメソッドの最初の2つの引数は常にidとSELなので、タイプエンコーディングの2番目の文字は "@:"でなければなりません。最初の文字は戻り値の型で、その他はカスタム引数のセットです。一例として、

は、ここではかなり非有用な方法である:

%hook NSMutableString 
%new([email protected]:) 
- (void)appendAwesomeThings { 
    [self appendString:@"Awesome."]; 
} 
%end 

(これは実際にはおそらく、NSStringのように動作しませんと、クラスクラスタであるが、それは小さくない例として役立つ!)

%classは、実行時に使用されるクラスを前方宣言するための非推奨ディレクティブです。インラインで使用される%c(ClassName)に置き換えられました。 たとえば、

[[%c(NSString) alloc] initWithString:@"Cool."]; 
関連する問題