Cocoaに、NSMutableStringというクラスがある。
リファレンスを見ると、
inherits from NSString : NSObject
などと書かれているが、これはNSStringを継承しているということなので、NSStringのインスタンス変数やメソッドは全て使えるということ。
なので、NSStringのstringWithString:メソッドも使える。
書き方は、こう
NSMutableString* boku = [NSMutableString stringWithString:@"Doraemon"];
MacRubyで書くとしたら
boku = NSMtableString.stringWithString "Doraemon"
となる。
NSStringで作ったインスタンスの文字列は変更ができない。NSMutableStringのインスタンスでならできる。
で、文字列を後ろに追加するメソッドとかもある。
- (void)appendString:(NSString*)string
これをObjective-Cで使ってさっきのインスタンスに文字列を追加すると
[boku appendString:@"desu"];
MacRubyでは
boku.appendString "desu"
となる。
あとは、MacRubyのチュートリアルにも載っているNSWindowのinitWithContentRect:styleMask:backing:defer:メソッド
リファレンスで見ると
- (id)initWithContentRect:(NSRect)contentRect styleMask:(NSUInteger)windowStyle backing:(NSBackingStoreType)bufferingType defer:(BOOL)deferCreation
とかなってて一見意味不明だが、これも引数とかが増えただけで基本的に同じ。
- (返り値型)メソッド名:(引数型)引数名 ラベル:(引数型)引数名: ラベル(引数型)引数名: ラベル(引数型)引数名
コロンの数と引数の数が同じになることを覚えておくと多少わかりやすい。
Objective-Cで使うときは
NSWindow *window = [[NSWindow alloc] initWithContentRect:frame
styleMask:NSBorderlessWindowMask
backing:NSBackingStoreBuffered
defer:false];
MacRubyで使うときは
window = NSWindow.alloc.initWithContentRect frame,
styleMask:NSBorderlessWindowMask,
backing:NSBackingStoreBuffered,
defer:false
とかになる。改行してる部分を半角スペースにして一行で書いても同じはず。
0 件のコメント:
コメントを投稿