トップページ⇒tech
1001コメント302KB

Objective-C

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん05/01/29 16:18:12
ほんとプログラマにとってはMacって
本当に興味が無いOSだよねw

Macでの標準的な言語であるObjective Cのスレすら無いし。
過去にはあったんだろうけど。
015914205/03/10 17:25:10
>>149
Mix-in の概念は実装の追加のみに限定されるものでもないと思うんだが…
Java の interface や Objc の protocol も Mix-in な型として使われ
る場合があるし,それも Mix-in と呼べると思うけど…

Mix-in について解説したドキュメントでいいのないかな?
Mix-in評論家(?)の日記くらいか?

ttp://www.rubyist.net/~matz/0128.html
0160デフォルトの名無しさん05/03/10 22:45:41
Cocoaをはじめようと思います。Objective-Cを学ぶにはC言語を覚えてからオブジェクト指向を理解したうえで、というのが近道だと聞きましたが、ベースとなるC言語の知識はどれくらい必要でしょうか。
0161デフォルトの名無しさん05/03/11 00:02:58
そりゃ、基本的事項は全てだろ。
テキストがあれば、それの最初から最後まで。
心配しなくてもそんなに分量はない。
けと、その都度実践していかないと(つまり、ソースを作っては試す)
身にはつかない。
0162デフォルトの名無しさん05/03/11 01:11:55
同意。
でも、多くの人がポインタで挫折すんだよねー。
まぁ、今は良い参考書もいっぱいあるから、昔に比べりゃ全然楽だ。
0163デフォルトの名無しさん05/03/11 01:40:32
「すればんだよ」とか「けと、」とか日本語じゃない言葉が飛び交ってて
話てるのか何か良く分からないんです。
0164デフォルトの名無しさん05/03/11 01:42:50
>>162
>でも、多くの人がポインタで挫折すんだよねー。
それは数あるポインタの解説書がことごとく間違っていたり
嘘言っていたりして学習者の混乱を増長させているから。
0165デフォルトの名無しさん05/03/11 02:05:42
ポインタと配列の間に関係性を持たせてしまったCの仕様にも責任がある希ガス。
0166デフォルトの名無しさん05/03/11 02:23:51
どうして? ごく自然な仕様だろ。
0167デフォルトの名無しさん05/03/11 03:15:52
int *p;
において、
「*(p+i)はp[i]って書き方もできます」って仕様は余計だと思う。
これのせいで、ポインタと配列は全く別ものなのに、
なんだか同じもののように初心者を混乱させている希ガス。
0168デフォルトの名無しさん05/03/11 05:20:10
同じものですよw
0169デフォルトの名無しさん05/03/11 08:06:55
Xcode2.0はどの程度現状と変わるのか。

Tigerを買うかどうかは、そこの評価次第なんだけど。
0170デフォルトの名無しさん05/03/11 11:37:37
>>169
一番の売りはUML風味のクラス図自動生成とかでない?
その辺実際どの位使えるのかは確かに気になる所。
Rationalのアレ並みにとは言わんけどさ(w。それなりにパパッと書いたのがぐりぐり動いてるよーだといいな
0171デフォルトの名無しさん05/03/11 12:40:57
快適な開発環境がOSに標準でついてくるなら
もう少し、Cocoaプログラマが増えてもいいと思うんだが。

Macを再評価する動きというのは無いものか。
0172デフォルトの名無しさん05/03/11 13:18:32
ついにObjCのみのAPIの登場だ。

Developing with Core Image
http://developer.apple.com/macosx/tiger/coreimage.html
0173デフォルトの名無しさん05/03/11 13:20:47
>>170
EOFっていうベースがあるから、
そこそこ行けそうな気がする。
なんで別けたんだろうね。
0174デフォルトの名無しさん05/03/12 00:27:53
Core Imageって,Cocoa系のAPIだったとは。てっきり
Carbonだと思っていた。
0175デフォルトの名無しさん05/03/12 01:33:37
Carbonからも呼べるんで、困りはしないんだけど、
Core Image使うところは、.mにせにゃならん。
0176デフォルトの名無しさん05/03/12 15:12:42
>>162
ポインタは難しい的な先入観もたせるのも
どうなんだろうなって感じだよね。
何の先入観も無しにやってみて難しくて挫折するのは
しょうがないとして、余計な先入観のせいで混乱しちゃうと
ちょっとね。
0177デフォルトの名無しさん05/03/12 17:22:57
たぶん、ポインタの理解が「指し示すもの」「アドレス」の2つで混乱してるんだろうな
わかる人は両方をちゃんと使い分けてるけど、説明される時はこのうち1つ側の説明しかされないし
0178デフォルトの名無しさん05/03/12 23:38:06
コンピュータってものを理解してれば全く混乱なんかしないよなあ。
もしかしてメモリやアドレスの概念を出さずに説明されるのだろうか?
またはCPUやメモリの概念程度の基礎知識すらない奴がC言語を学んでいるのか?
0179デフォルトの名無しさん05/03/12 23:56:55
メモリとレジスタを絡めて教わったよ。
少なくともオレらは。
0180デフォルトの名無しさん05/03/13 03:34:30
やっぱり最初はアセンブラから?(w
って、今頃そんなのをやれっても無理あるよなぁ。
0181デフォルトの名無しさん05/03/13 08:58:19
君が知りたくなければ一生知らないままでいいよ。
0182デフォルトの名無しさん05/03/13 12:13:04
そこでBrainfuckですよ
018318005/03/15 01:26:13
>>181
いや、漏れではなく今頃の人に教えるのにアセンブラって言うのも厳しいもんがあるよなぁと。
漏れなんかはTK-80をガキの頃に親から奪って遊びだした世代なんで最初はハンドアセンブル
しかなかったんだよな。
今だとそういういい教材はあるけれどなかなかにニッチだしなという事で。
0184デフォルトの名無しさん05/03/15 06:31:47
>>180 にとってアセンブラは厳しかった訳か
0185デフォルトの名無しさん05/03/15 07:40:38
180の言ってる事はよくわかるけど?
0186デフォルトの名無しさん05/03/15 08:54:28
最終的にShark使ってG5最適化とか、
今でもアセンブラの知識は役に立つが、
全くもってスレ違い。
0187デフォルトの名無しさん05/03/15 23:12:17
まあまあ、そんなことより
>>158のテクニックの実装方法について、
まじめに考えてみようぜ
0188デフォルトの名無しさん05/03/16 00:16:11
「スレ番だよ」というのがよくわんない。
0189デフォルトの名無しさん2005/03/27(日) 01:31:22
MacOSXのターミナルで、Cocoaのフレームって使用できますか。
Object をNSObjectにしたいけど、リンクでエラーがでます。
Cocoaのライブラリを探してリンクすればいい、という発想はおかしいですか?
0190デフォルトの名無しさん2005/03/27(日) 02:04:35
-framework Foundation
つけとけ
0191デフォルトの名無しさん2005/03/27(日) 11:41:02
>>190 おお、ありがとうございます!
0192デフォルトの名無しさん皇紀2665/04/01(金) 16:42:30
Cocoaはやっぱり!
0193デフォルトの名無しさん2005/04/03(日) 16:03:44
CoreDetaに期待。Cocoa+Objective-Cはどんどん進化して欲しいね。
ttp://homepage.mac.com/mkino2/backnumber/2004_10.html#October%2020_1
ttp://www.hmdt-web.net/bbs/bbs.cgi?bbsname=mkino&mode=res&no=248&oyano=248&line=0

Mac OS X v10.4 Tiger
ttp://developer.apple.com/ja/macosx/tiger/index.html

Xcode 2.0
ttp://www.apple.com/jp/macosx/tiger/xcode.html

QTKit
ttp://blog.so-net.ne.jp/MyCometG3/2005-03-26-1
ttp://homepage.mac.com/mkino2/backnumber/2005_03.html#March%2025_1
ttp://slashdot.jp/journal.pl?op=display&uid=15678

Dashboard
ttp://numata.aquasky.jp/programming/dashboard/dashboard.shtml
0194デフォルトの名無しさん2005/04/17(日) 12:08:04
Mac欲しいなぁ・・・。やっぱWWDCが終わるまでは待ったほうが賢いんだろか。
スレ違いすまん。
0195デフォルトの名無しさん2005/04/17(日) 16:11:01
PowerMacG5の最上位機種+メモリ8Gなら、今買ってもそれほど損は無いはず。
そんな金の無い俺は夏まで待ちますが。

これだけではなんなので、今Cocoa入門本としてヒレガス本を買うなら原著の第二版がお勧め。
日本語版=第一版は開発環境として10.2を対象としてるので情報が古い。
第二版では10.3=Xcodeに対応して、、GNUstepについてもちょこっと触れていたりする。
著者のページからサンプルも落とせるので、第一版を持っている人なら、
新旧のソースを見比べるだけでも勉強になるかもしれん。
http://www.bignerdranch.com/products/cocoa1.shtml

Xcode2.0対応の第三版も出そうな気もするが参考までに。
0196デフォルトの名無しさん2005/04/17(日) 17:16:32
OSXは欲しいがMacは要らん
01971942005/04/17(日) 19:32:51
会社でPowerBookG4+XserveG5使ってるんですが、自宅にも欲しいなぁと思って。
ヒレガス本ってのは黄色い表紙でべスパだか何かが写ってる奴ですよね?
いまこれを読みながらCocoaプログラミングの勉強中です。Unixyな使い方だけでは
もったいないかなと思って。で、ますますMac欲しいなぁ、と。

>>196
OSXってMac以外で動作可能なんですか?自宅にラック導入する予定はないのでXserveはパスね。
0198デフォルトの名無しさん2005/04/17(日) 21:06:02
>>197
OSXはMacだけ。
GNUstepなら他のプラットフォームでいろいろいける。
が、i18n関係はまだまだダメなので(w
是非そっち方面にも助力を
0199デフォルトの名無しさん2005/05/20(金) 02:03:50
[self age];
0200age2005/05/26(木) 17:04:19
教えてください
NSString* str = [NSString stringWithUTF8String:"test"];
で取得した str は 何時 [str release]; すべきなのでしょうか?
0201デフォルトの名無しさん2005/05/26(木) 17:34:52
>>200
そもそも release するべきでない。
0202デフォルトの名無しさん2005/06/06(月) 08:55:32
>>201
たしかにそうだけど、NSAutoreleasePool のインスタンスが用意されてなかったらメモリリークの悪寒。
0203age2005/06/06(月) 10:00:13
教えてください
ワーカスレッド(POSIXスレッド)内で
NSString* str = [NSString stringWithUTF8String:"test"];
を行った場合、どのNSAutoreleasePoolが使われるのでしょうか?
02042032005/06/06(月) 10:59:18
続き...
NSAutoreleasePoolは、スレッド毎に独立しているのでしょうか?
0205デフォルトの名無しさん2005/06/06(月) 15:51:59
なんか釣られてるような気もするけど…

>>203,204
NSAutoreleasePool はスレッドを生成するときに、プログラマが自分で用意するものだと思われ。
要するにスレッドごとに存在する必要あり。
ttp://developer.apple.com/samplecode/SimpleThreads/listing3.html
とか見るよろし。
もっと言うと、AppKit(NSApplicationMain) を使ってない場合は、メインスレッドにも NSAutoreleasePool は(自動では)用意されないんで、この場合も自前で用意してやる必要がある。
GNUStep で遊ぼうとして、その罠にはまった人間が約一名(おれだが)。

あと、ワーカスレッドってのが何を意味してるのかわからんが、pthread_create とかで直接 POSIX スレッドを生成して云々って話なら、やめておいた方が良さそう。つーかその場合、おそらく NSAutoreleasePool がそもそも使えない気がする。
素直に NSThread 使いましょう。

それはそれとして、203(200 も?)の名前欄の age はコテハンなのか、それとも age てるのを主張したいだけなのか、それが問題だ(そうか?)
02062002005/06/06(月) 16:24:46
SimpleThreadのURL、ありがとうございました。参考になりました。
やはり、POSIXスレッドは使わないほうがよさそうですね...。
0207デフォルトの名無しさん2005/06/06(月) 16:43:03
>>205
> つーかその場合、おそらく NSAutoreleasePool がそもそも使えない気がする。

ttp://developer.apple.com/documentation/Cocoa/Conceptual/MemoryMgmt/Concepts/AutoreleasePools.html

Note: If you are creating secondary threads using the POSIX thread
APIs instead of NSThread, you cannot use Cocoa, including
NSAutoreleasePool, unless Cocoa is in multithreading mode. Cocoa
enters multithreading mode only after detaching its first NSThread. To
use Cocoa on secondary POSIX threads, your application must first
detach at least one NSThread, which can immediately exit. You can test
whether Cocoa is in multithreading mode with the NSThread class method
isMultiThreaded.
02082052005/06/06(月) 16:53:51
>>207
ごめん、英文読み違ってたか。
あらかじめ NSThread を使って一つスレッドを生成しておけば、Cocoa が multithreading mode ってのになって、その後は POSIX スレッドでも Cocoa(NSAutoreleasePool 含む)を使えるようになる。
マルチスレッドモードかどうかは、NSThread クラスの isMultiThreaded メソッドで確認できる。
…ってな理解で良い?
0209デフォルトの名無しさん2005/06/08(水) 23:34:03
NSなんちゃらと ネイティブは混ぜるな危険。pthredとか。
0210デフォルトの名無しさん2005/06/10(金) 00:30:51
>>209
>混ぜるな危険
確かにおれもそう思うが、Objective-C++ で書かれたコードとか読んでると、なんかどうでも良くなってくるぞw
0211age2005/06/15(水) 23:34:33
教えてください
以下のように作成された NSString* selstr は何時解放するべき、まはた何時解放されるのでしょうか?
%pの出力は毎回変わりますが、メモリリークは起きていないようです。
- (IBAction)button1Click:(id)sender
{
SEL sel = @selector(button1Click:);
NSString* selstr = NSStringFromSelector(sel);
NSLog(selstr);
NSLog(@"%p", selstr);
}
0212デフォルトの名無しさん2005/06/16(木) 00:56:12
それを解放するのは AutoreleasePool です。
0213デフォルトの名無しさん2005/06/16(木) 09:33:10
>>212
何時解放されるのでしょうか?
[pool release] のときでしょうか?
0214デフォルトの名無しさん2005/06/16(木) 19:35:27
>>213
ちみはメモリ管理のことがよくわかってない風味なので、

ttp://developer.apple.com/ja/documentation/cocoa/Conceptual/ObjectiveC/4objc_runtime_overview/chapter_8_section_2.html

ここのページを隅から隅まで読む事をお薦めする。
あと、厳密には NSAutorelasePool がするのは『解放』じゃなくて、
単に release メソッドを呼ぶことだ。
もしそのインスタンスに対して、どこかで retain が使われてれば、
実際には解放されないじょ。
02152112005/06/16(木) 22:19:09
Google で AutorelasePool イベントループ で検索したら、以下のURLで納得しました。
http://www.tech-arts.co.jp/macosx/macosx-jp/htdocs/4600/4618.html
0216デフォルトの名無しさん2005/06/17(金) 08:00:31
Objective-Cは CやC++、Javaと比べて簡単?便利に感じてる?
0217デフォルトの名無しさん2005/06/17(金) 09:25:52
本が無い点を除けばいいと思う
0218デフォルトの名無しさん2005/06/17(金) 12:30:56
簡単だよ
0219デフォルトの名無しさん2005/06/17(金) 13:28:02
Objective-Cは簡単だと思うが、Cocoaその他のAPIが辛い。
ドキュメントなさ過ぎ。
0220デフォルトの名無しさん2005/06/17(金) 16:00:27
あるよ
0221デフォルトの名無しさん2005/06/17(金) 17:16:17
ないとは言ってないだろ
0222デフォルトの名無しさん2005/06/17(金) 21:06:13
ないよ
0223デフォルトの名無しさん2005/06/18(土) 02:36:58
ありすぎ>>>>>ある>>>>>>ない>>>>>なさすぎ
0224デフォルトの名無しさん2005/06/18(土) 02:59:22
マジ?
ありすぎ>ある>なさすぎ>ない
こうじゃないの?
0225デフォルトの名無しさん2005/06/18(土) 03:00:21
違った
ある>ありすぎ>なさすぎ>ない

理由
過ぎたるは及ばざるが如し
0226デフォルトの名無しさん2005/06/20(月) 20:48:52
掃除を
しすぎ>>する>>しない>>しなさすぎ
 ||    ||    ||     ||
潔癖性  普通   不潔   ゴミ屋敷

な?
0227デフォルトの名無しさん2005/06/21(火) 03:29:37
きれいずきは?

0228デフォルトの名無しさん2005/06/21(火) 13:46:44
セックスを
しすぎ>>する>>しない>>しなさすぎ
 ||      ||     ||       ||
ヤリチン 一般人  インポ    童貞
0229デフォルトの名無しさん2005/06/22(水) 14:48:28
つまり
  O  b  j  e  c  t  i  v  e  -  C  は  童  貞
0230デフォルトの名無しさん2005/06/22(水) 14:57:34
>>224 でいいんじゃね?
ありすぎ: » 1
ある:   ≥ 1
なさすぎ: ≈ 0
ない:   = 0
0231デフォルトの名無しさん2005/06/22(水) 16:43:07
なんだこの流れは?
0232デフォルトの名無しさん2005/06/22(水) 17:18:55
んじゃ本来の流れというか質問
NSWindowのkeyDown:やperformKeyEquivalent:ではcommand等の修飾キー"だけ"押したのはわからないぽいんですが、
どうすれば取れますか?
0233デフォルトの名無しさん2005/06/22(水) 21:11:39
気合いで取る。
02342322005/06/22(水) 21:32:41
んな殺生な
というか自己解決
ファーストレスポンダで
- (void)flagsChanged:(NSEvent *)theEvent
をオーバーライドですね
NSResponder見てませんでした
0235デフォルトの名無しさん2005/07/08(金) 02:17:14
メソッドにアクセス指定子つけられないとか
抽象クラスがないとかクラス変数がない等の点が
Javaに比べていまいち使いにくい気がするんですが
これは漏れの認識不足のせいですか?
0236デフォルトの名無しさん2005/07/08(金) 02:26:55
気のせいです。
0237デフォルトの名無しさん2005/07/08(金) 15:49:13
>>235
アクセス指定子はないけどヘッダに書いたら公開扱いで書かなかったら
非公開扱いってことにして使うんだろう.
# 実際にはヘッダに書かなくても呼出せるはずだから private ではないけれど…
抽象クラスはあったら嬉しいかもしれんがなくてもそれほど困らない.

逆に Java に出来なくて ObjC に出来ることとして category 使って既存クラス
にメソッド追加したり override したりとかがある.

コンパイル時の静的型チェックのゆるさとか考えても全体的に Java よりも
柔軟でプログラマ任せの言語になってると思う.
#というより Java が堅すぎとも言えるけど…
0238デフォルトの名無しさん2005/07/08(金) 21:46:06
>>235
認識が不足しているのは

×誤 使いにくい
○正 使い慣れない

という部分だな

0239デフォルトの名無しさん2005/07/28(木) 21:55:33
保守age
0240デフォルトの名無しさん2005/07/29(金) 01:44:57
>>239
保守する暇があるなら新Mac板のCocoaスレの質問に答えてあげてよ!
0241デフォルトの名無しさん2005/07/29(金) 02:34:54
質問者乙
0242デフォルトの名無しさん2005/08/08(月) 20:39:10
いままでProject BuilderでビルドしてMacOSX 10.2.8で動いていたプロジェクトを
Xcode 1.5でコンパイルしたら10.2.8ではもう動かなくなってしまいました。Xcodeからコンパイルして10.2.8でも動くようにするオプションなどはありませんか?
0243デフォルトの名無しさん2005/08/09(火) 01:03:32
たしかXcodeをインストールするときにクロスコンパイル関連のリソースを入れるかどうか
っている設定がカスタマイズのところにあったはず。

それを入れた上で、ビルド設定を見直せばいけるのではないだろうか。
すまんがいまMacが手元にないので確認できない....
0244デフォルトの名無しさん2005/08/10(水) 20:45:09
>>243
非常に参考になりました。どうもありがとうございます
0245デフォルトの名無しさん2005/08/19(金) 20:08:31
メモリ管理に抜けが無いか確認する方法を探しています。
Delphiの話なんですが、リンクするだけで確保と開放の組み合わせ数が一致しているかどうか検出できるライブラリがあります。
開放洩れがあると、アプリの終了時に警告ダイアログが出ます。
似たような事をCocoaアプリで行う方法を知っている方は居ないでしょうか?
# Fundationでコマンドツールを作った時は標準出力に開放洩れ警告が出るので、組み込みで機能があるような気もしています。
0246デフォルトの名無しさん2005/08/22(月) 00:57:00
>>245
http://www.big.or.jp/%7Ecrane/cocoa/7000_cocoaNote/cocoaNote_050424.117.pdf
0247デフォルトの名無しさん2005/08/22(月) 13:25:16
>>246
ありがとうございます。
MallocDebugは以前から使っていますが、終了時点で内部を歩けなくなるので、開放洩れの確認には向いていないと思います。
# WindowやDocument単位では出来ますけど、それもすごい手間が必要です。

単純に、「確保が500回で開放が480回なんで、20個どっかにリークしてるよん」みたいな情報が欲しいと思っています。
0248デフォルトの名無しさん2005/08/23(火) 07:19:21
>してるよん

ふざけるな
0249デフォルトの名無しさん2005/08/24(水) 01:40:03
朝から何キレてんの
0250デフォルトの名無しさん2005/08/26(金) 13:21:01
>>247 使ったことないけど、leak コマンドってのがあるらしい。
ここにちょこっと紹介されている→ ttp://webkit.opendarwin.org/blog/
0251デフォルトの名無しさん2005/08/26(金) 20:37:33
>>250
使ってみました。
実行中のプロセスに対して使うコマンドであるようです。
0252デフォルトの名無しさん2005/08/28(日) 01:01:36
Objective-Cの
[]が嫌い
0253デフォルトの名無しさん2005/08/28(日) 01:03:46
そのこころは?
0254デフォルトの名無しさん2005/08/28(日) 01:28:51
Objective-Cから[]取ったら、只のCじゃん。
0255デフォルトの名無しさん2005/08/28(日) 01:40:56
個人的にはオブジェクトにメッセージを送っている、という感じがして好きだな。
あの表記とCocoaのおかげでクラスと構造体の違いとかオブジェクト指向という
考えとかにピンと来た。

Objective-Cのあの記法は「Cのオブジェクト指向拡張なんだ」という発想から
来てるんだろうね。Cという割とマシンに近いレイヤーと、オブジェクトの
メッセージのやり取りのレイヤーを分ける、みたいな。逆にC++のCに習った
記法は「Cは本当はこうあるべきだ」みたいな発想からなんだと思う。

>>254
というわけで、[]とったらただのCになるようにしたかったからああいう風に
なったんじゃないかな。
0256デフォルトの名無しさん2005/08/28(日) 11:25:19
元祖のSoftwareICのライブラリって、未だにフリーにはなっちゃいないんだっけ?
最近ちょっとあっちのクラスがどーなってるのか気になって仕方ない(w
0257デフォルトの名無しさん2005/08/28(日) 16:58:07
C++もObjCもあんま差ないよね
0258デフォルトの名無しさん2005/08/28(日) 17:45:16
使い方によるのでは。
■ このスレッドは過去ログ倉庫に格納されています