トップページ > ココアな掲示版
Writed by しましま at 2/12/08 8:31 PM
ikmさん、こんばんは。
記事の方は、元にもどしておきました。
記事へのリンクは消したけど、記事そのものを消したつもりはなかったのに、なぜか消えてました^^;
Writed by ikm at 2/12/08 10:57 AM
こんにちは、ikmといいます。
以前自分のブログの方で、NSTextInputまわりで変換中の文字列をマウスクリックに反応させる方法について情報をいただいたのですが、それが書かれた文章はすでに削除されているようです ;-(
もしよろしければ、その方法を教えていただけないでしょうか。
メールでその文章を送っていただいてもかまいません。
よろしくお願いいたします。
件のブログの記事:
http://aerial.st/archive/2006/04/24/position-control-of-conversion-list
当該文章の旧URL:
http://www.stripe-net.jp/cocoa/documents/application3/application3-8.html
Writed by しましま at 2/6/08 7:31 PM
> と、言う事はコピーばかり走るObjective-Cはちと処理的にガンガン回すと遅そうということですか。。。
値渡しがコピーになるのは、Objective-CではなくC言語の仕様です。
Objective-Cのメソッドは内部では、C言語の関数として実装されているので、この辺りの部分においては、言語の差がでません。
ただ、NSRectはたかが16バイトの容量しかないので、いくらコピーが発生しても、パフォーマンスに影響は出ません。
ちなみに、NSRectについては、空っぽのRectを表す、NSZeroRectという定数が定義されています。
また、そのRectが空っぽかどうかをテストするBOOL NSIsEmptyRect(NSRect)という関数も用意されていますので、それらを使ってうまくやってください。
Writed by pon_000 at 2/6/08 1:18 AM
しましまさん回答ありがとうございます。
値として取れるのはなんとなくわかっていたのですが、関数の引数がnilだったら。。。というような処理にしたいと思い、参照はどのようにするのかと思っていたら。。。
毎回コピーが走るという事なんですね。そういう仕様なんですね。
と、言う事はコピーばかり走るObjective-Cはちと処理的にガンガン回すと遅そうということですか。。。
その辺はObjective-C++と仲良くやっていこうかと思います。
ご回答ありがとうございました。
Writed by しましま at 2/5/08 10:13 PM
こんばんは。
まず、NSRectはオブジェクトじゃなくて、ただの構造体です。
Cocoaでは、ポインタとしてではなく、値として直接取り扱います。
NSViewのframeメソッドは、NSRectを値渡しで返してきます。値渡しの場合、値のコピーが返されるので、そのコピーのアドレスを参照しても無意味です。
この辺は、c/c++でも同じはずで、コンパイル時に警告が出ると思います。
Writed by pon_000 at 2/5/08 12:19 AM
おしえてgoo!に投稿したものです。
あちらよりこちらの方がobjective-cに関して適切かと思い投稿させていただきました。
c/c++は結構使っているのですがObjective-Cは全くの初心者です。
メンバ変数とかの参照(アドレス)を取得するにはどうすれば良いのでしょうか?
下記のようなサンプルを書いてもコンパイルエラーになってしまいます。Objective-C ってCと記述が同じだと思っているので「&」演算子でアドレスが取れると思っていたのですが。。。
@interface AAA : NSView
{
}
-(void) test:(NSRect *)rct;
@end
@implementation AAA
-(void) test:(NSRect *)rct
{
NSRect *p = nil;
if (nil == rct)
p = &[self frame]; <- フレームのアドレスをポインタに入れたい
else
p = rct;
}
@end
以上 宜しくお願い致します。
Writed by りん at 8/3/06 12:42 AM
しましまさん、こんばんは。
ご返答ありがとうございました。
おっしゃる通りでした。
素直に読んでいれば、ちゃんと出来ていましたね。
早く試してみたくて、先走り過ぎでした。
本当のプログラム初心者なので、出来たときは、ちょっと感動しました。
これからこちらのサイトでいろいろ勉強していきたいと思います。
本当にありがとうございました。
Writed by しましま at 8/2/06 10:18 PM
りんさん、こんばんは!
ターゲットアクションのコネクションで、「Not Aplicable」が出る件ですが。
たぶん、コネクションの方向を間違えていませんか?
Outletsのコネクションと違って、Target/Actionのコネクションは、計算ボタンが起点でCalculatorオブジェクトが終点になります。
その辺をもう一度確認してみてください。
Writed by りん at 7/31/06 11:37 PM
プログラムかなり初心者です。
こちらのCocoa-Java Applicationの超低計算電卓をやってみようと試みたのですが、どうしてもうまくいきません。
「インスペクタでtarget/Actionタブのなかのcalculate()を選択し、Connectボタンを押します。」
というところで、target/actionに「calculate()」が、表示されてこないのです。
毎回、「Not Aplicable」と表示されたままです。
ちなみにこちらのソースもダウンロードして、確かめても、同じ状態になります。
先に進めず困っています。
何が悪いのか教えて頂けるとありがたいのですが。。。
かなりど素人な質問で大変恐縮しておりますが、宜しくお願い致します。
ちなみにこちらの環境は、下記のようになっています。
Xcode2.3
Interface Builder Version 2.5.4 (446.1)
PowerBook G4 15" 1.5GHz