Objective-Cの質問
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。
NGNGC++で言うコンストラクタはObjective-Cでは
どのような名前なんでしょうか?initialize、initなどを見ます。
Objectクラスにある+new、+allocメソッドは
+new: コンストラクタなどを起動したりする。
+alloc: 領域を割り当てるだけ。
と考えて良いのですか?
+new、+allocで確保されたメモリは自分で解放する必要がありますか?
(ガーべジコレクタがやってくれる???それとも処理系依存?)
Objectクラスの-freeメソッドは何のためにありますか?
解放用のメソッドですか?
Objective-CにはC++のSTLのような物(仕様で定められている物)は存在しますか?
存在していなくても事実上標準みたいな物があれば教えてください。
00021
NGNGその後、色々調べると以下のことがわかりました。
コンストラクタはないようです。
主にinitというメソッドを使用して
id obj=[[HogeObject alloc] init];
などどするようです。
ガーべジコレクションはどうやら処理系依存みたいです。
http://www.fsinet.or.jp/~nito/objective-c/answer-16.html
となるとオブジェクトにfreeメッセージを送って解放する必要があるんでしょうか?
クラスライブラリについてはlibobjectsというものがあるようです。
ftp://ftp.gnu.org/gnu/libobjects/
0003名無しさん@お腹いっぱい。
NGNG「スコープ」の勉強してください。
あとはデバッガでコンストラクタ・デストラクタにブレークポイント張って
何時通るのか眺めて喜ぶ。
他は多分付属のインクルード群を端から端までながめれば判る。
0004名無しさん@お腹いっぱい。
NGNGWinやMacではどうすりゃいい?
00051
NGNG最後に聞きたいのですがgccで
[Object douyo];//douyoメソッドは存在しない
とかすると例外みたいなのが発生しますがこれを捕捉する方法はありませんか?
事前に調べるしかないんでしょうか?
>>3
スコープって
{
int _2ch;
{
int _2ch;
}
}
みたいなスコープですか?
>>4
http://www.fsinet.or.jp/~nito/objective-c/answer-17.html
http://www.fsinet.or.jp/~nito/objective-c/answer-15.html
このへんかな。
0006名無しさん@お腹いっぱい。
NGNGなぜ今Objective-Cなの?
0007名無しさん@お腹いっぱい。
NGNG0008名無しさん@お腹いっぱい。
NGNGそれはCDがある現在でもLPが売られているのと同じ事だよ。
0009名無しさん@お腹いっぱい。
NGNG0010名無しさん@お腹いっぱい。
NGNGよくわからんが、MacOSXが出ることだしObj-Cに興味を
持つ人が出てきてもおかしかないんじゃないかなぁ。
でもApple自身はCocoaフレームワークに関してはJava
を使うよう誘導している気がする...
00111
NGNGSmalltalkに興味があるのもそうなんだけど、
ネイティブコードを吐けるのとCのような文法と
C++よりシンプルな文法とC++より動的なのに興味をもちまして...
ちょっと情報が少ないのがつらいですけど。
00121
NGNGObjective-Cの仕様?
http://www.toodarkpark.org/computers/objc/
チュートリアル
http://www.slip.net/~dekorte/Objective-C/New/GettingStarted/GettingStarted.html
知っている中で唯一日本語のページ
http://www.fsinet.or.jp/~nito/
Objective-C FAQ
http://faqs.jmas.co.jp/FAQs/computer-lang/Objective-C/faq
GNUstepに含まれるクラスライブラリのリファレンス
http://developer.apple.com/techpubs/macosx/Cocoa/Reference/Foundation/ObjC_classic/FoundationTOC.html
GNUstep
http://www.gnustep.org/
更に調べた所、
GNUstepに含まれるクラスライブラリはlibobjectsをベースにしているようです。
なのでlibobjectsがメーク出来ない場合はGNUstepを入れると良いかと思います。
(私はlibobjectsをメーク出来なかったのでGNUstepを入れました。)
0013名無しさん@どーでもいいことだが。
NGNG私も興味あるんすよー
数年前言語マニアの知り合いがSmalltalk&obj-Cに燃えはじめて、横で見てたのでずっと興味が・・・
0014名無しさん@どーでもいいことだが。
NGNGそこでNeXT買収決定以降、Appleも当初これからはOcjective-Cで行くと言っていたので特集や連載記事が組まれていた記憶があります。
私は興味無かったので読み飛ばしていた記憶がありますが。
あと当初Objective-C移行をApple自身が言っていたので(今のOSXはC++標準ということになってる)、メトロワークスもCodeWarriorのObjective-C版を試作したはずです。
(あのあっという間に早々にCodeWarriorをObjective-C対応にしたのには驚いた。メトロワーク惚れた(笑))
英語苦手なのでメトロワークスの海外サイト見てないんですが、あの試作版落ちてないんですかね
0015名無しさん@お腹いっぱい。
NGNGhttp://www.metrowerks.com/desktop/pro/why/
0016名無しさん@お腹いっぱい。
NGNG英語読めません。なんて書いてあるん?
0017名無しさん@お腹いっぱい。
NGNG…かな?
0018名無しさん@お腹いっぱい。
NGNGhttp://www.elec.ucl.ac.be/Apple/1997/msg00111.html
Rhapsody(MacOSX Server)の開発ではgcc、CodeWarrior、Openstepでクロス開発あたりが選択肢としてあるようです。
MPWもやりようがあるそうです。
0019名無しさん@お腹いっぱい。
NGNGMacOSXですが、Objective CからC++に移行というわけでもないみたいです。
http://www.tech-arts.co.jp/macosx/macosx-jp/htdocs/1500/1587.html
IOKitのところがそう変わっただけの話しみたい。
けどそうなるとC++を使うほうが普通ということですよね
その理屈でいけば現行MacOSじゃPascal使うのが普通って話しになっちゃいますが。
0020名無しさん@お腹いっぱい。
NGNGOpenStep 4.2 Enterprise(NT)上でのObjective-Cを使っているのですが…
allocとinitとnewについてですが、allocは領域割り当て、initがコントラクタ
呼び出しです。派生クラス側でinitをオーバーライドして、その中で基底クラス
のinitを呼んであげるのが基本です。newはallocとinitを足したものです。
OpenStep4.2上ではFreeメソッドは見当たらないのですが、そのかわり、releaseと
autoreleaseがあります。releaseはオブジェクトの開放。autoreleaseは、その
オブジェクトのガーベージコレクタのスイッチを入れ、他からまったく参照されなく
なったときに自然消滅できるようにします。あと、OpenStep4.2上ではNeXTStep
ライブラリNSobject@` NSImage etc...が装備されていて、ほとんどこれらを
使ってすべて済ましてます。Cで書いてもいいんですが、NS...を使うとコトが
簡単にサッサと済んでくれます。
0021マリベル
NGNGドライバがC++で書けるのかぁ、こりゃ良いですね、うらやましいぞ〜
00221
NGNG見つかりませんでした。
20さんので解決しました。
-freeメソッドはgccのObjectクラスに存在するものみたいです。
objc/Object.h
このOpenStepのUNIXでの実装(?)はGNUstepなどがありますので
GNUstepをインストールすることによってこれらのクラスを使うことができます。
あと気になるのがgccでの例外捕捉とか
[o error: "Error!!!"];でエラーは投げれるけどどうやってキャッチするんだろう?
http://gcc.gnu.org/とかgcc関連のメーリングリストは検索しました。
0023名無しさん@お腹いっぱい。
NGNGObjective-Cについては、こちらではNT上でのApple OpenStep4.2の
みでの開発で、GNUStepなるものは触れたこともありません。ですので、
こちらに関しては1さんの方が詳しいだろうと思って質問します。
OpenStepのUNIXでの実装のことですが、UNIX+GNUStepでOpenStep4.2
のアプリは動くのでしょうか…。互換性に関する情報があれば、いただ
きたいです。GNUStepに、NSWindowとかNSConnectionなどのような
クラスはありますか? よろしくお願いします。
00241
NGNG私も逆にOpenStepなるものは触れたことも見たこともないのですが...(^^;;
NSWindow、NSConnectionとかありますよ。
GUIアプリケーションについてはチュートリアルなどがあるようです。
http://www.gnustep.org/
http://www.gnustep.it/nicola/Tutorials/WindowsAndButtons/node18.html
一度使ってみてはどうでしょう?
00251
NGNGObjective-CではJavaのabstract classは出来るんですか?
abstract classというのは
@メソッドが実装出来る。
@実装せずにインターフェース宣言だけも出来る。
@なのでインスタンスを作ることは出来ない。
このabstract classを継承するとその継承したクラスは
@インターフェース宣言だけのメソッドを実装しなくてはならない。
です。
とここまで書いててひらめきました!
abstract classをACと略します。
@interface "ACを継承したいクラス" : "ACの実装クラス"<ACのインターフェース>
とすれば疑似的に出来るかなぁ?
でもプロトコルを入れないとそのまま動いてしまいそうだ。
他に方法はありますか?
0026古いスレ上げてごめん。
NGNGMac OS XのCocoa frameworkを使っています。
Clickしたり、Tabキーを押すとNSEventに対するResponderが変化しますよね。
これを変化しないように、Responderをあるオブジェクトに固定しておくには
どうしたら良いのでしょうか?
具体的にはキーボードイベントを、ある特定のウィンドウが常に受け取れる
ようにしたいと考えています。
0027ObjC見習い3ヶ月
NGNG26です。
http://www.fsinet.or.jp/~nito/OSPT/UsingText.html
ここにあるTextDemo.tar.gzをコンパイルしてみたのですが、上手く動きません。
キーの入力位置がNSTextFieldに戻らなくなってしまいます。
inputメソッドにある [respond makeFirstResponder:inputLine]; という行が
うまく処理されていないように思えるのですが、これはProjectBuilderのバグでしょうか?
タイピング練習ソフトの様な物を作りたいと思って、↑これを参考にしたいと思っています。
それとウィンドウをクリックしてもキー入力位置が変わらないようにするにはどうすれば
よいのでしょうか。御教示ください。お願いします。
00281
NGNG私はOPENSTEPもNEXTSTEPも持ってないので
http://www.tech-arts.co.jp/macosx/
あたりで聞いてみるとか、、、
0029デフォルトの名無しさん
NGNGEmbedded C++というやつだから注意が必要です
サブセットなC++だから
0030デフォルトの名無しさん
NGNGテンプレートも使えないんじゃほとんど意味ないね。(ほぼライブラリ全滅でしょ)
デカイ言語はこれだから。
■ このスレッドは過去ログ倉庫に格納されています