Objective-C
..
697:デフォルトの名無しさん
06/09/21 03:46:18
>>688
いやいや、使えないと思いますが。。。
もし使えたら、Java言語でのクラスメソッド内でthisが使えるということと同じになりますよ??
では逆に、クラスメソッドでselfが使えたとして、そのselfは何を指すのかお聞きしたい。
698:デフォルトの名無しさん
06/09/21 04:18:56
>>697
> もし使えたら、Java言語でのクラスメソッド内でthisが使えるということと同じになりますよ??
いいえ、Objective-C は Java ではありません。
699:デフォルトの名無しさん
06/09/21 04:26:28
>>698
失礼しました。Javaの話は忘れて下さい。今はObjective-Cの話ですものね。
では、クラスメソッドでselfが使えたとして、そのselfは何を指すのかということに関してはどうお考えですか?
700:デフォルトの名無しさん
06/09/21 04:31:55
なにも考えていませんが、
Inside an instance method, self refers to the instance; but inside a
class method, self refers to the class object.
ということです。
701:デフォルトの名無しさん
06/09/21 04:36:16
>>700
クラスメソッド内でのselfはクラスオブジェクトを指すんですか。
それは初耳です。自分の勉強不足である可能性がかなり高いので、
確認のため紹介いただいた英文の出典を教えていただけないですか?
702:デフォルトの名無しさん
06/09/21 04:45:07
OBJECT-ORIENTED PROGRAMMING AND THE OBJECTIVE-C LANGUAGE
あるいは
URLリンク(developer.apple.com)
の The Language > How Messaging Works
703:デフォルトの名無しさん
06/09/21 04:48:24
>>702
丁寧な回答ありがとうございます。やはりAppleのDeveloper Connectionのページでしたね。
早速読んで勉強します。ありがとうございましたm(__)m
704:デフォルトの名無しさん
06/09/21 08:17:21
>クラスメソッド内でのselfはクラスオブジェクトを指す
Rubyでも同じですね。
smalltalk的で動的、というのがRubyと相性良い理由なのかな。
705:デフォルトの名無しさん
06/09/21 10:02:59
>>701
> 自分の勉強不足である可能性がかなり高い
どうして、まっさきに、その可能性を疑わない?! オマエは mkino か?
706:デフォルトの名無しさん
06/09/21 13:01:23
普通のCocoaプログラマなら誰でも知ってることをmkino氏が知らないわけないだろ。
メタクラスとかよく分からない俺でも、Obj-Cのクラスはオブジェクトであって、
NSObjectのインスタンスメソッドをクラスオブジェクトに対して呼べるくらいは知ってるぞ。
707:デフォルトの名無しさん
06/09/21 17:07:41
rubyCocoaってWindowsの世界で言うVBAというかCOMというか
マクロ(スクリプト?)みたいな使い方が出来るようになるの?
708:デフォルトの名無しさん
06/09/21 17:23:33
WinのVBAとかCOMに相当するものはOSAだと思うんだが。
709:デフォルトの名無しさん
06/09/22 00:07:42
>>706
>NSObjectのインスタンスメソッドをクラスオブジェクトに対して呼べるくらいは知ってるぞ。
NSObjectクラスの-classメソッドなんかはそのいい例だね。
710:デフォルトの名無しさん
06/09/22 13:20:08
あのぉ、ちょっとよろしいでしょうか?
[[NSObject new] class]; が NSObject なのは分かるのですが、
[NSObject class]; が NSObject になるのはなぜですか?
NSObject のクラスメソッドはどこに定義されているのでしょう。
711:デフォルトの名無しさん
06/09/22 13:25:52
>>710
定義はどこって。。。
とりあえず宣言は Foundation/NSObject.h にあるけど。
>790を見なかったことにすれば全く問題ないね。
712:デフォルトの名無しさん
06/09/22 13:31:19
>>790に期待
713:デフォルトの名無しさん
06/09/22 13:42:15
>>710
ここ読むと分かるかも。
URLリンク(journal.mycom.co.jp)
714:デフォルトの名無しさん
06/09/22 13:50:35
ようし、お前らがその気ならこっちは
ProceduralSmalltalkだ
715:710
06/09/22 15:37:11
>>713
ありがとうございます。すべての謎が解けました。
Objective-C のメタクラスはオブジェクトではないのですね。
716:デフォルトの名無しさん
06/09/24 21:10:17
今までGUIプログラミングはCocoaしかやったことないんですが、
Cocoaプログラマが一番取っ付きやすいWindows のAPIってなんでしょうかね。
717:デフォルトの名無しさん
06/09/24 21:52:07
VB
718:・∀・)っ-○◎●新世紀ダンゴリオン ◆DanGorION6
06/09/24 22:11:28
Visual C# 2005はタダだから使ってみるといいかも
719:デフォルトの名無しさん
06/09/25 03:25:50
↓無料だよ。
URLリンク(www.turboexplorer.com)
720:デフォルトの名無しさん
06/09/25 19:12:06
>>716
GNUstep
www.gnustep.org
721:デフォルトの名無しさん
06/09/25 22:23:36
GNUstepってOSXで使える?
722:デフォルトの名無しさん
06/09/26 06:44:45
もちろん
723:デフォルトの名無しさん
06/09/26 10:49:05
しかしOSXでGNUStep使う意味があるのだろうか…?
724:デフォルトの名無しさん
06/09/26 11:08:22
>>716
WebObjects
.NET Framework
725:デフォルトの名無しさん
06/09/26 18:53:33
>>723
クロスプラットフォームなソフトをObjective-Cで書きたいとか。
726:デフォルトの名無しさん
06/09/26 19:04:08
>>723
古いバージョンのOSXで新しいAPIを使いたいとか。
727:デフォルトの名無しさん
06/09/27 09:52:43
>>726
そんなに新しいAPI実装されてるの?
728:デフォルトの名無しさん
06/09/27 15:36:01
メモリリークについての質問です。
Xcodeで新規プロジェクトとしてCocoa Applicationを作成→ビルド→
パフォーマンスツールを使用して起動からMallocDebugを選択→MallocDebugのLaunchボタン→
MallocDebugのポップアップからLeaksを選択(この時点でリークはなし)→
Cocoa Applicationのウィンドウをクリックするなりしてアクティブにする→
MallocDebugのUpdateボタンを押す→「40 bytes in 1 node」のリーク発生
さらにCocoa Applicationをアクティブにするたびにリークが増えていくのですが、
これって気にしなくてもいいんでしょうか?
ちなみにターミナルからexport MallocStackLogging=YESした後、openで起動して
leaksで確認したところ、やはりリークが起こっているようです。
729:728
06/09/27 15:41:02
書き忘れましたが、
OSX 10.4.7
G4
Xcode 2.4
の環境です。
730:デフォルトの名無しさん
06/09/28 11:05:31
OCUnitでUnitTestをしているのですが、
「オブジェクトがdealloc済であることをチェックする」にはどうしたら良いでしょうか?
dealloc 済のオブジェクトなので、何かメッセージを送ると落ちてしまいますし、
かといって、nil になっているわけでもないので、STAssertNil によるチェックも
できません。
731:デフォルトの名無しさん
06/09/29 00:28:56
>>728
自分も試しに、以前作った自作CocoaアプリのMalloc Debugやってみたら、
ウィンドウアクティブにするたびにリークが増えてくorz
一番最初はノーリーク。一回ウィンドウをアクティブにして、Updateすると、
40 bytes in 1 nodeのリーク。
症状全く同じだわ。
もしかして、アクティブにするたびに40bytesずつ増えてったりしない??
40 bytes in 1 node
80 bytes in 2 nodes
120 bytes in 3 nodes
160 bytes in 4 nodes
みたいに…
どなたかご存知の方いましたら、ご教示お願いします。
732:731
06/09/29 01:33:14
まさかと思い、Apple純正のCocoaアプリ「計算機」でMallocDebug
やってみたら、なんと同じリークが…。ウィンドウアクティブにする
たびにリークが同じく40bytesずつ増えてく。
これって仕様なの??それとも他の理由が??
気にしなくていいということですかね?
もし本当にリークしてるなら、ウィンドウをアクティブにするのは
極力控えた方がいいってことなのかな〜(^^;)
733:・∀・)っ-○◎●新世紀ダンゴリオン ◆DanGorION6
06/09/29 02:04:09
どう見てもココアのバグです。本当にありがとうございました。
734:731
06/09/29 02:46:52
>>733
やっぱそうなんですかね。
Appleは自分のCocoaアプリをMallocDebugにかけてないとは思えないですが…。
本当にCocoaのバグなら残念です。
735:デフォルトの名無しさん
06/09/29 04:27:46
設計が古いからしょうがないですね。.NETなら原理的にありませんよ
736:728
06/09/29 09:45:54
Safariをleaksで確認してて気がついたんだけど、リークしてるメモリの内容が...
英字入力状態:
Leak: 0x0581ad70 size=48 instance of 'NSCFString'
0xa07b9674 0x0001078c 0x1b636f6d 0x2e617070 .{.t.....com.app
0x6c652e69 0x6e707574 0x6d657468 0x6f642e52 le.inputmethod.R
0x6f6d616e 0x00000000 0x00000000 0x00000003 oman............
ひらがな入力状態:
Leak: 0x004a8d30 size=48 instance of 'NSCFString'
0xa07b9674 0x0001078c 0x1e636f6d 0x2e617070 .{.t.....com.app
0x6c652e69 0x6e707574 0x6d657468 0x6f642e4a le.inputmethod.J
0x6170616e 0x65736500 0x00000000 0x00000003 apanese.........
カタカナ入力状態:
Leak: 0x0584e340 size=64 instance of 'NSCFString'
0xa07b9674 0x0001078c 0x27636f6d 0x2e617070 .{.t....'com.app
0x6c652e69 0x6e707574 0x6d657468 0x6f642e4a le.inputmethod.J
0x6170616e 0x6573652e 0x4b617461 0x6b616e61 apanese.Katakana
0x00610076 0x006f0072 0x0076006f 0x00726525 .a.v.o.r.v.o.re%
全角英字入力状態:
Leak: 0x0574b260 size=64 instance of 'NSCFString'
0xa07b9674 0x0001078c 0x2d636f6d 0x2e617070 .{.t....-com.app
0x6c652e69 0x6e707574 0x6d657468 0x6f642e4a le.inputmethod.J
0x6170616e 0x6573652e 0x46756c6c 0x57696474 apanese.FullWidt
0x68526f6d 0x616e0072 0x00660061 0x0075006c hRoman.r.f.a.u.l
英字とひらがなの場合はウィンドウをアクティブにするたびにリークが増えますが、
カタカナと全角英字は増えません。やっぱinputmethodのバグですかね。
737:デフォルトの名無しさん
06/09/29 10:23:37
>>735
Objective-C 2.0でガベージコレクションが導入されたら、
Cocoaも原理上リークがなくなるはずだ。
738:728
06/09/29 10:24:14
とりあえずバグレポート提出してきたです。下手な英語で書いたけど、
どこか日本語で受け付けてくれるところはないんでしょうかね。
739:731
06/09/29 10:36:08
>>738
おぉ、助かります!!早く解決されることを祈るばかりです。
できれば、Cocoaのバグではなくて、MallocDebugのバグであってほしいです。
740:デフォルトの名無しさん
06/09/29 21:16:08
>>730
とりあえず思いついた方法
・ひとつ余分なretainをして、retainCount == 1となることを検証
・MallocScribble環境変数を設定して、idのサイズ分0x55になっていることを検証
741:デフォルトの名無しさん
06/09/29 21:20:21
>>740
そもそもretainできない件
742:デフォルトの名無しさん
06/09/29 21:31:30
-dealloc の中で「dealloc されました」って通知すればいいんでないの
743:デフォルトの名無しさん
06/09/29 22:00:28
>>742
確かに。自作クラスだったら-deallocをオーバーライドして通知のためのコード
入れればいいもんね。
744:デフォルトの名無しさん
06/10/03 22:26:27
Java出身ですが、objcに興味津々
てかcocoaとかのライブラリーに興味あり
今とりあえずCを勉強中。preprocessorってコード読みにくい。。。
で、Cをひとまず覚えたらobjcの本とかPDFとか何を読むのがおすすめですか?
英語でかまいません。むしろ英語がよい。
745:デフォルトの名無しさん
06/10/03 22:45:17
Apple のサイトに一杯あります。
あと、Cをそんなに勉強する必要はないと思う。
URLリンク(developer.apple.com)
から好きなだけ読め。
言語自体は
URLリンク(developer.apple.com)
それをさっと眺めたら
URLリンク(developer.apple.com)
で実際にappをかいてみて、そのあと
URLリンク(developer.apple.com)
で基本を学ぶのがいいと思う
746:デフォルトの名無しさん
06/10/03 22:54:10
>>744
自作のCでやるクラス・ライブラリーは完成したんですか?
747:デフォルトの名無しさん
06/10/04 01:17:36
>>746
すいません。よくわかりません。
>>745
サンクスです。本とかよりappleのpdfで十分ってことですね。
とりあえずcは基礎だけは勉強しておこうと思ってます。
structすらまだ学んでないので。。。
748:744
06/10/04 01:31:01
cocoaのこの辺りがいけてるとか、充実してるとかってありますか?
CやJavaに比べて
ぱっとみCoreAudio, CoreImageは凄そうと思いました
749:デフォルトの名無しさん
06/10/04 02:39:43
Cocoaっつーか、IBが面白い。
750:デフォルトの名無しさん
06/10/04 09:28:13
Objective-C のいいところは、C++/Java とちがって
非常にダイナミックなところでしょう。
binding 多用しだすともう殆どスクリプト言語状態だと思います。
751:745
06/10/04 09:30:31
>サンクスです。本とかよりappleのpdfで十分ってことですね。
充分かどうかは... 本もいいのがいろいろあるよ。
ヒレガスとか。
URLリンク(www.cocoadev.com)
に書評があるのでみてみてね。
752:デフォルトの名無しさん
06/10/04 20:57:38
>>751
ひれがす?
753:デフォルトの名無しさん
06/10/05 06:36:37
>>744はCocoaとObjective-Cを混同している予感
754:デフォルトの名無しさん
06/10/05 08:20:41
混同してるようには見えんが
755:744
06/10/05 12:38:03
>>753
Cocoaはobjcのライブラリーでしょ?
>>751
ありがとうございます。参考にします。
756:・∀・)っ-○◎●新世紀ダンゴリオン ◆DanGorION6
06/10/06 06:37:45
Obj-C自体実質MacOS X専用言語だからなー
757:デフォルトの名無しさん
06/10/06 11:40:45
はつみみです
758:デフォルトの名無しさん
06/10/06 14:38:05
はなしし?
759:デフォルトの名無しさん
06/10/06 15:35:07
Mr.ダンゴリオン・・・あなたは一体何者なんですか?
760:デフォルトの名無しさん
06/10/06 15:37:17
お団子ちゃんの退化系
761:デフォルトの名無しさん
06/10/06 15:46:14
ウソップとそげキングみたいなものでつか?
762:デフォルトの名無しさん
06/10/07 00:37:38
ってか Mac 以外の環境で Objective-C 触ってる物好きなヤツっているの??
763:デフォルトの名無しさん
06/10/07 00:39:14
いまだにOpenStep使ってる椰子とか
764:デフォルトの名無しさん
06/10/07 01:16:13
白豚さんとか
765:デフォルトの名無しさん
06/10/07 01:52:05
GNUstepではだめ?Windows環境で学びたいんだが...
つーわけで、とりあえずcygwinでApacheモジュール作ってみた
766:デフォルトの名無しさん
06/10/09 10:18:53
Objective-Cのソースコード整形ツールってあるん?
人から渡されたコード読んでるけど汚くってかなわん。
両刀使いだからWinでもMac用でもかまへん。
767:デフォルトの名無しさん
06/10/09 13:11:40
ObjC 2.0でますますCocoa専用言語な印象が強まったんですが。
768:デフォルトの名無しさん
06/10/09 21:41:54
GNUstepの中の人たちが頑張ってくれるだろう。
もしくは中の人になれ。
769:デフォルトの名無しさん
06/10/10 01:00:55
>>766
汚いソースの例が見たい
770:デフォルトの名無しさん
06/10/10 01:53:17
WinとMacで両刀使いか
ならばMonaも使ってると三所責めだな
771:デフォルトの名無しさん
06/10/14 20:42:55
ObjCをコンパイルできる無料のコンパイラってgcc以外にある?
772:デフォルトの名無しさん
06/10/15 00:09:03
POC 使えば、原理的にはどんな C Compiler でもコンパイル出来るはず。
URLリンク(users.pandora.be)
773:デフォルトの名無しさん
06/10/15 13:31:16
>>772
ちょっくら読んでみたけど、これってObjc -> Cに変換するプリプロセッサ?
774:デフォルトの名無しさん
06/10/15 14:08:58
うn、中々面白いよ、でも癖があったりするからちょっと困る
775:デフォルトの名無しさん
06/10/16 22:38:16
macでプログラミングをしてみたいのです
mac関連のプログラミング本はほとんどObjCで書かれていますが
この板ではObjCはあまり人気がないように見えます。
みなさんはぶっちゃけどの言語をお勧めしますか
776:デフォルトの名無しさん
06/10/16 22:44:33
ぶっちゃけObj-C
777:デフォルトの名無しさん
06/10/16 23:21:46
ObjCスレで聞いてObjC以外の答えが返ってくると思うのかい?
778:デフォルトの名無しさん
06/10/17 00:30:34
Obj-C最高!
とまで言わないがかなりイイ!
779:デフォルトの名無しさん
06/10/17 06:51:47
Macでのプログラミングの話題は新Mac板の方が活発。
780:デフォルトの名無しさん
06/10/17 10:12:35
>>777
このスレできいて、違う言語があがればそれこそObjCを見限ろうと
思ってました
781:デフォルトの名無しさん
06/10/17 10:40:03
う〜ん、言語の善し悪しというよりはライブラリの善し悪し、そのライブラリを使うためのObjC、かなぁ?
Cは好きだけどCarbon onlyで書こうとは思わんし、Cocoa-javaも付け焼き刃の印象しかない
WebObjectsみたいに気合いが入ってなさそうだし>>Cocoa-Java
782:デフォルトの名無しさん
06/10/17 11:41:21
見限るとか見限らないとか、そんな大層な問題じゃないような…
気になったら遊んでみればいいし、飽きたら忘れれば良い
783:デフォルトの名無しさん
06/10/17 13:23:53
というか ObjC は C とオブジェクト指向を知ってたら文法は屁でもない。
C++ 知ってたらとりあえず一日でだいたい使えるようになる。
Cocoa の API をつかむのは案外時間いるかもだけれども。
784:デフォルトの名無しさん
06/10/17 13:38:36
ObjC→C++はどうでつか?
785:デフォルトの名無しさん
06/10/17 14:40:34
C++ はとんでもない機能が沢山あるので、そこまでやりたければじかんがかかるでせう
786:デフォルトの名無しさん
06/10/17 15:06:24
>>781
WebObjectsも気合いは入ってない
787:デフォルトの名無しさん
06/10/17 15:53:38
ていうか Cocoa-Java はとうとう deprecate された
788:デフォルトの名無しさん
06/10/17 17:31:08
もうだめぽ
789:・∀・)っ-○◎●新世紀ダンゴリオン ◆DanGorION6
06/10/17 18:31:34
Cocoa-Ruby
まじでおすすめ
790:-○◎○
06/10/17 19:01:04
この道を行けばどうなるものか、危ぶむなかれ。
危ぶめば道はなし。踏み出せばその一足が道となる。
迷わず行けよ。行けばわかる
ありがとう、ダンゴリオンさん
Cocoa-Ruby でいってみます
791:デフォルトの名無しさん
06/10/17 22:33:56
ちなみに RubyCocoa だと思ふ...
あと、RubyCocoa は Objective-C+Cocoa をやってから
やっぱスクリプトがいいや〜、と移行するものであって
それではじめるものではないと思うけどどうでせう。
Obj-C 有る程度わかってないと Cocoa のドキュメント読めないでそ。
792:デフォルトの名無しさん
06/10/22 13:58:29
Smalltalk、Objective-C、Ruby
メッセージ指向なオブジェクト指向言語の方がCocoa向きだよね
793:デフォルトの名無しさん
06/10/22 15:02:51
>>792
>メッセージ指向
なんだそれ?
794:デフォルトの名無しさん
06/10/22 15:06:33
>>>792
Ruby は違うでしょ。単に動的なだけ。
795:デフォルトの名無しさん
06/10/22 20:38:38
>>793
アラン・ケイのオブジェクト指向。メッセージングという考え方を表現や問題解決の中心に据える。
対して、C++、Eifflel、Java などが立脚しているのは「クラス指向」なビアルネ・ストラウストラップの
オブジェクト指向。抽象データ型を(Simulaの)クラスという機能を用いて実現するという考え方。
>>792,794
Ruby のポリシーは、「いろんな言語のいいとこどり」なので、オブジェクト指向についても
どっちつかず。
796:・∀・)っ-○◎●新世紀ダンゴリオン ◆DanGorION6
06/10/22 20:43:12
メッセージ指向っていえばWin32のウィンドウクラスの考え方がそうだ
汚いが。
797:デフォルトの名無しさん
06/10/23 03:35:31
caseの化け物のことか
798:デフォルトの名無しさん
06/10/23 07:08:43
>>795
解説アリガォ。
結局動的か静的かになるんだろうけど、どちらもオブジェクト指向つーのは分かりづらいな。
オブジェクト指向メッセージ指向?
オブジェクト指向クラス指向?
指向指向うるさいなw
799:デフォルトの名無しさん
06/10/23 09:51:02
メッセージ指向とクラス指向って排他なの?
あとクラス指向って本当にStroustrupがベースなの?
800:デフォルトの名無しさん
06/10/23 21:03:11
>>798
ケイのオブジェクト指向、ストラウストラップのオブジェクト指向でおk
動的か静的か…のくくりだと語弊があるかも。
ケイは静的型チェックを否定しているわけじゃなく、ストレスなしに使える
静的型チェック機構の存在を知らない…と言っているだけだし。
>>799
排他ではない。けれど、前提となるもの、視点が違うから適所でうまく切り替えるべき。
たとえば、ストラウストラップの…は抽象データ型に軸足をおいているから、
クラスやオブジェクトの中身の設計や見せ方に重きを置くけれど、ケイの…は
そういうことには頓着しない、とか。
別の例では、ストラウストラップの…は基本データ型との混在を許すが、ケイの…では論外、とか。
抽象データ型を SIMULA のクラスを使って…というアイデアは、ストラウストラップが
C++ の前身である C with Classes で試したのが最初。メイヤーは、C++ にあれこれ
いちゃもんを付けたり、ストラウストラップの主張を黙殺したりするけど、言っていることは
ほぼ、ストラウストラップ+α(契約によるプログラミング)の類で、新機軸を打ち出しているわけではない。
まあ、ストラウストラップ自身は「クラス指向」という言葉を使っているわけではないので、
(彼は、「抽象データ型のスーパーセット」、「継承によるプログラミング」と称している)
799が疑問を呈しているその「クラス指向」がなにかにもよるけれど…。いずれにせよ、
よく言われる「カプセル化・継承・多態性」とかのオブジェクト指向は、ストラウストラップので、
ケイのじゃない。
801:デフォルトの名無しさん
06/10/24 01:24:11
>>800
ん、そうだっけ?
Smalltalk78の時点で継承という概念は導入されているし、メッセージを飛ばすSmalltalkはそもそも多態性だろう。
カプセル化については、オブジェクトを作るという行為そのものがカプセル化ではないのか。
802:デフォルトの名無しさん
06/10/24 01:49:39
カプセル化はアクセス制御出来ないとダメなんじゃないの。
クラス指向とオブジェクト指向は、何を本質とするかであって、
単にマッピング出来るかどうかの問題じゃないんじゃないかな。
803:デフォルトの名無しさん
06/10/24 02:03:45
>>801
いや。それは Smalltalk がその三点を満たしているかと問われれば、たしかにそうなるけど…。
でも実際のところ、ケイは彼のオブジェクト指向において、そういうことは言っていないし、目指してもいない。
本気でそう(「カプセル化、継承、多態性」がケイのオブジェクト指向においても要件である…)
と信じているなら、下のにひとおとり目をとおしてから出直してきてくれると助かる。
URLリンク(www.purl.org)
URLリンク(lists.squeakfoundation.org)
URLリンク(gagne.homedns.org)
もちろん、こうしたケイの意向があったとしても、Smalltalk ユーザーがそれを無視して、
ストラウストラップのオブジェクト指向を(部分的ながらも) Smalltalk を用いて実践したいと思ったとしても、
それを妨げるものは何もないわけだけれども…。
たとえば、この人なんか Smalltalker として有名だけど、典型的なストラウストラップの
オブジェクト指向実践者(の、わりに C++ には批判的なのが笑える)。
URLリンク(www.sra.co.jp)
804:デフォルトの名無しさん
06/10/24 02:20:10
>>802
ダメってことはない。なぜなら、カプセル化、継承、多態性というのは、Smalltalk にも
当てはまるようにデフォルメされているから。Smalltalker はケイをないがしろにした上に、
ストラウストラップの考えも都合よく骨抜きにしてしまった。じつに傲慢な奴らだ。w
ただ、802 のいうことは当たらずとも遠からずで、ストラウストラップが要件としてあげた
ものは、抽象データ型、継承、仮想関数を用いた動的性…に加えて、静的型チェック、
多重継承、アクセス制御…なので、これにはちゃんと含まれている。
URLリンク(portal.acm.org)
URLリンク(www.research.att.com) (上の '90 改訂版。内容はほぼ同じ)
だから、真にストラウストラップのオブジェクト指向を実践するには、ほんとうは、
Smalltalk ではダメ(だからデフォルメして対応せざるをえなかったわけだけれども…)。
805:デフォルトの名無しさん
06/10/24 13:45:01
Smalltalkの多態は継承ツリーがどうこうという話ではなく、
呼ぶメソッドを実装されてるか、という1点にかかっているあたりクラス指向
というよりメッセージ指向な感じがするわけだけど、
Simula の末裔の C++ が template で似たようなスタイルを実現している(しかも
それが標準ライブラリとして広く使われている)あたりとか面白いですよね。
806:デフォルトの名無しさん
06/10/25 22:27:12
gccがこんなエラー吐いてくれるぜwwww
In file included from linking.m:28:
objc/Object.h:38: error: 構文解析エラー before '{' token
objc/Object.h:43: fatal error: method definition not in class context
807:デフォルトの名無しさん
06/10/25 22:42:49
ただ単にObject.hが壊れてるだけじゃね?
808:デフォルトの名無しさん
06/10/30 20:28:49
URLリンク(developer.apple.com)
の32ページに、
Objective Cでは、インスタンス変数にデフォルトで@protectedというラベルが付きます。GCC 4.0
では、これを明示的に警告するようになりました。また、将来のコンパイラではこれをエラーとし
て取り扱います。この問題を修正するには、Objective-Cインターフェイスでインスタンス変数のス
コープを明示的に指定してください。
ってあるんだけど、これってインスタンス変数を定義する時に今までは省略していた@protectedを書かなければいけなくなるってこと?
809:デフォルトの名無しさん
06/10/30 22:55:46
デフォルトで~っていうのは、書かなくても @protected 扱いになるということだと思われ
エラー/警告が出るのは、他の class からインスタンス変数を @public として操作した場合の話じゃないかな
810:デフォルトの名無しさん
06/10/30 23:03:19
220度くらいズレてる気がする
811:デフォルトの名無しさん
06/10/30 23:09:34
適当な事を行ってすいませんでした m(__)m
812:デフォルトの名無しさん
06/10/30 23:41:11
>>808
いつの間にか翻訳、英語版に追いついてるな。
ObjC 2.0でまた置いて行かれそうだが。
813:デフォルトの名無しさん
06/11/05 02:24:57
インスタンスメソッドから、インスタンス変数と同名のグローバル変数へアクセスすることはできないのでしょうか?
早い話、
グローバル変数
const int foo = 100;
- (id)init {
[super init];
self->foo = foo;
return self;
}
上記のような感じでグローバル変数でインスタンス変数を初期化したいのです。
何か良い方法は無い物でしょうか?
814:デフォルトの名無しさん
06/11/05 02:40:51
そのことやるくらいなら、マクロで初期値設定した方がいい
815:デフォルトの名無しさん
06/11/05 02:49:14
すみません、正確には変数じゃなくて配列なんです。
元々はC++のソースで、namespaceで対応されている部分なのですが……。
やはり同名のグローバル変数にはアクセス出来ないのでしょうか?
816:デフォルトの名無しさん
06/11/05 04:25:59
static int global_foo() { return foo; }
817:デフォルトの名無しさん
06/11/05 04:30:18
Objective-C++ にして、普通にnamespace::varじゃいかんの?
手元で確かめずに言ってすまんけど。
818:デフォルトの名無しさん
06/11/05 20:16:00
>>817
なるほど、Objective-C++という逃げ道がありましたね……。
何の問題も無くクリア出来ました。ありがとうございました。
819:デフォルトの名無しさん
06/11/06 09:26:41
>>813
Objective-C++ じゃない場合でも以下でいけるんじゃね?
const int foo = 100;
static int getFoo(){ return foo; }
- init{
self->attr = getFoo();
return self;
}
820:デフォルトの名無しさん
06/11/06 12:48:51
こんなのがあったべ。
URLリンク(www.informit.com)
GCC のテストスートにObjC2.0のサンプルコードがあるらしい
URLリンク(gcc.gnu.org)
821:デフォルトの名無しさん
06/11/07 17:06:10
がー。
Windowsで使えるObjCコンパイラってないの?Cygwin+gccは面倒い。
822:デフォルトの名無しさん
06/11/07 20:38:03
つMinGW
823:デフォルトの名無しさん
06/11/15 14:48:56
>820
クロージャが無いって明言されてるorz
824:デフォルトの名無しさん
06/11/15 19:08:38
ObjCって今でもプリプロセス段階でCに変換されてるの?
825:デフォルトの名無しさん
06/11/15 21:46:05
してないでしょ、多分>>プリプロセスでC変換
もししてたらインテルのコンパイラも使えるの?
826:デフォルトの名無しさん
06/11/15 21:56:07
GCCとかではCに変換したりせずにそのままコンパイルしてるはずだけど、
Cに変換するプリプロセッサも出回ってるからそれ使えばIntelのC/C++ Compilerも使えるかと。
827:デフォルトの名無しさん
06/11/15 22:05:50
クロージャー無いのか、残念だ
Smalltalkでdo:メソッド見たときは感動したんだよな
828:デフォルトの名無しさん
06/11/15 22:19:07
ifTrue:メソッドとかやりすぎw>>SmallTalk
829:デフォルトの名無しさん
06/11/15 22:33:37
確かにw
でも至るところにデザインパターンを見ることができて面白いよね
Booleanクラスに何もしないifTrue:とifFalse:を定義して
TrueクラスのifTrue:がクロージャーを評価し、
FalseクラスのifFalse:がクロージャーを評価する
ここまでObjective-Cに求めるつもりはないけど
クロージャーを導入するとどうしてもよりSmalltalk化しちゃいそうだね
830:デフォルトの名無しさん
06/11/15 23:39:48
>>828
アラン・ケイもそんなふうに言っているよね。彼の手を離れてからずいぶんとLISP化しちゃったから。
831:デフォルトの名無しさん
06/11/15 23:44:56
ケイは message passing style の発案以外で Smalltalk に対して何かしたんだっけ?
クロージャは今回入らなかっただけで、いずれ入ると思うよ。
832:デフォルトの名無しさん
06/11/16 00:22:53
>>829
茶々入れでスミマセン。
厳密には Boolean に定義されている #ifTrue: と #ifFalse: はあくまで仮想メソッド、
つまり、サブクラスで再定義されることが期待されるメソッド…という位置づけになっていて
(C++ のオブジェクト指向の影響)、引数ブロックを無視する #ifTrue: や #ifFalse: は
False、True クラスにそれぞれ普通に再定義されています。現実は、あまりおもしろみがないですね。
もっと夢のない話をすると、メッセージ ifTrue: [] や ifFalse: [] はコンパイル時にはインライン展開されて
しまうので、実際にはメソッドとしての #ifTrue: や #ifFalse: がコールされることはなかったりもします。
(なので、#ifTrue: や #ifFalse: の定義を書き換えるイタズラをしても、実際には何も起こせません)。
833:デフォルトの名無しさん
06/11/26 18:12:51
ja.wikibooks.orgにはObjective-Cの記事がないのな。
834:デフォルトの名無しさん
06/11/26 21:16:51
抽象クラスとプロトコルってどう使い分ければいいの?
835:デフォルトの名無しさん
06/11/27 01:12:06
抽象クラス(Objective-Cに抽象クラスという仕様はないから、単なるクラスだが)は継承しないと使えない。特定の実装を強制させるなら抽象クラス。
実装は各クラスで好き勝手にしていいか、すでに他のクラスを継承していて抽象クラスを使えない場合はプロトコル。利便性を考えて、プロトコルの参考実装として抽象クラスを用意することもある。
使い分けようとしなくても、実装を何度も見直すうちに自然と使い分けられるようになると思うよ。
836:デフォルトの名無しさん
06/12/03 00:19:53
gdbでObjCのメソッド名指定でブレイクはることは、できないのでしょうか?
ライン指定は出来ます。
gcc 4.0.1-Apple
gdb 6.3.5-Apple
837:デフォルトの名無しさん
06/12/03 07:06:16
URLリンク(developer.apple.com)
> Objective-C method: b -[Foo bar], or for an action method example, b -[Foo bar:]
838:デフォルトの名無しさん
06/12/04 22:16:51
返事できなくてすみません。
メッセージ呼び出しとおなじ書式なんですね。
失礼しました。
839:デフォルトの名無しさん
06/12/31 01:55:01
書き始める前に何重のネストになってるか明確でないとダメなのがイマイチな気がする。
見た目だけでも、メジャーな言語風だったら、かなり敷居が下がると思うんだけど。
この書き方のメリットって、何かあるの?。
840:デフォルトの名無しさん
06/12/31 11:43:19
まあ、Objective-C が出来た頃はどのオブジェクト指向言語もメジャーじゃなかったので、ね...
そんなに見た目って敷居になるのかな?Cocoa と他のクラスライブラリの違いのほうが余程問題だと思うけど...
たとえば Cocoa Java があったけど、だからといってそんなに書きやすかったかというと疑問。
[[[ の数がはじめに判らないのが面倒なのは同意。メリットは、つねに引数に名前が書いてあるので、あとで読んだときになにをやっているかが分かりやすい、かな。
841:デフォルトの名無しさん
06/12/31 17:33:20
Smalltalkという超メジャーなオブジェクト指向言語風の書き方じゃないか。
842:デフォルトの名無しさん
06/12/31 18:25:56
Smalltalk は [ ] はなかったんじゃなかったっけ?
というか、[ ] はあったけどそれはクロージャだったので、用途が違ったんでは...
843:デフォルトの名無しさん
06/12/31 23:52:38
Objective-Cってリフレクション以上に動的な事できるよな?
844:デフォルトの名無しさん
07/01/01 00:04:54
ポージング (Posing) とかできますよ
URLリンク(journal.mycom.co.jp)
メソッドスウィズリング (Method Swizzling) とかも。
URLリンク(www.cocoadev.com)
まあランタイムのAPI呼べば何でも出来ます。
845:デフォルトの名無しさん
07/01/01 00:18:35
>>844
ありがとうございます。ランタイムの弄りかたさえわかれば何でも出来るのか。
846:デフォルトの名無しさん
07/01/02 01:57:16
>>842
[ ] はなかったけど、
receiver selector:arg
って形は同じでしょ。
847:デフォルトの名無しさん
07/01/02 06:22:38
見かけだけはね
848:デフォルトの名無しさん
07/01/02 08:22:31
見かけは重要だ。つか、内部的にも一緒なんじゃないの。
動的言語のメソッド呼び出し方法なんて一種類しか無いような。
849:デフォルトの名無しさん
07/01/03 22:45:09
emacかXcodeつかって仰山のソースコードのインデントを一括で行う方法ってありませんか?
いっこいっこ開いてメニュー選ぶのかったるいです。
850:デフォルトの名無しさん
07/01/03 23:23:38
emacsならelisp書けばよか
851:デフォルトの名無しさん
07/01/03 23:37:09
>>850
emacs elisp インデント
などとGoogleで検索してみましたがよくわかりませんでした。
当方少しのコマンドラインなら打てます。例えば
find . -name *.m -exec emacs -batch -indent {} ¥;
などといった簡単なやり方ではなくて、何か特殊な方法なんでしょうか?
852:デフォルトの名無しさん
07/01/04 02:00:27
スレ違いだボケ
853:デフォルトの名無しさん
07/01/04 05:56:55
emacs インデント
でぐぐればいいんじゃないかな。
URLリンク(www.bookshelf.jp)
もちろんObjective-Cモードにしてね。
854:デフォルトの名無しさん
07/01/04 11:44:55
>>853
ありがとうございます。
それみても私の理解不足で、エディタ内で行う編集作業のコマンド集にしか見えないです。
>>852
ごめんなさい。
すれ違いとのことで以降はemacsスレッドを探してそこで聞いてきます。
855:デフォルトの名無しさん
07/01/04 22:07:54
Objective-C に対応したソースコード整形ツールって無いのか。
856:デフォルトの名無しさん
07/01/04 22:11:43
>>855
NeXT Step には独自改良版の GNU Indent が対応していたそうですがそれ以外だと単体の整形ツールは存在しません。
現状私の知る範囲ですとXcode、emacsなどの「エディタ」のソース整形機能を引っ張ってくるほかないです。
857:デフォルトの名無しさん
07/01/04 23:15:25
>>856
NeXTが独自改良したならばソースがどっかにころがってんじゃねーの?
GNUって逝ってんだから。
ぐぐっても出てこなかったけど(w
858:デフォルトの名無しさん
07/01/04 23:56:07
だれかこれを改造してObjective-Cでも使えるようにしてくれ
動的な言語だと難しいかもしれんが
URLリンク(www.tamacom.com)
859:デフォルトの名無しさん
07/01/08 14:16:12
MacPortsで試しにGNUStepを入れてみたけど、これってなんとなく手作り感が
出てて良いね。
でも、ProjectCenterの*.gormをクリックしても、Gormの起動に失敗してしまう。
何か設定とかあるのかな。
860:デフォルトの名無しさん
07/01/13 00:09:59
>>859 です。
*/System/Applicationsにパスを通してできました。
一応簡単なサンプルを作ってみたんだけど、
あまり期待してなかったのもあったから、使ってみてxcodeとほとんど同じような感じで使えて
予想以上に便利なんでびっくりした。
これってLinux等のGUIアプリの作成でもうちょっと普及してもよさそうだけどな。
861:デフォルトの名無しさん
07/01/25 12:35:54
xcodeってjavaはどの程度サポートしてるの?
862:デフォルトの名無しさん
07/01/25 17:58:12
Xcode part4
スレリンク(mac板)
863:デフォルトの名無しさん
07/01/25 18:23:40
thx
864:本田
07/01/25 19:47:35
>ディベロッパー:Windows環境下でMacのAPIによるコーディングを可能にするCocotron
URLリンク(opentechpress.jp)
>COCOTRON
URLリンク(www.cocotron.org)
865:デフォルトの名無しさん
07/01/25 21:04:50
Cocoaスレでとうの昔にガイシュツ
866:デフォルトの名無しさん
07/02/22 20:50:41
oneway voidって別に
メソッドを別スレッドで実行するわけではないよね?
867:デフォルトの名無しさん
07/02/23 08:29:29
使ったことないけど、そういうことじゃないんじゃない?
リモート側の応答を待たないだけということじゃないかな。
実は別スレッドで受信待ちして、デリゲートで通知とかあるのかもしれないけど。
868:デフォルトの名無しさん
07/02/23 14:35:39
そういうことじゃないんじゃないんじゃないかな?
869:デフォルトの名無しさん
07/02/23 16:25:24
分散オブジェクトのときのみ使用されます。
NSConnection 使わなければまったく意味はないです。
870:デフォルトの名無しさん
07/02/24 15:28:13
Apple Inc.、Objective-Cの商標登録出願
URLリンク(www.appleinsider.com)
これまた問題にならないかね。
871:デフォルトの名無しさん
07/02/24 20:04:22
なんでそういうわけ解らんことするんだろうねアップルは
872:・∀・)っ-○◎●新世紀ダンゴリオン ◆DanGorION6
07/02/24 21:41:36
DRM反対を唱える一方で自らも版権ゴロか
873:デフォルトの名無しさん
07/02/24 22:15:01
糞ダンゴは去ね。
874:デフォルトの名無しさん
07/02/26 02:04:30
わざわざ商標なんて取らなくたって、
誰もObj-Cなんて名前の製品出さないってば。
875:デフォルトの名無しさん
07/02/26 11:13:24
実質的にまともに商用利用してるのAppleだけだしね
まぁコンパイラはgccだし将来的に使うやつが万に一つくらいで
出てくるかもしれないとかで取ってるのかねぇ…
876:デフォルトの名無しさん
07/02/26 12:49:51
1995年に、開発元のStepstone社から、NeXT社が言語と商標を買い取ってる。
Appleが商標を取得しなおす理由はよく判らない。
Wikipedia項目リンク
877:デフォルトの名無しさん
07/03/01 15:45:11
>>876
URLリンク(www.apple.com)
"Objective-C"は登録されていない商標。
878:デフォルトの名無しさん
07/03/02 01:21:47
でも、例えばボーランドがObj-Cコンパイラを作ったら、
"Borland Objective-C (TM) Compiler"
みたいな名称になるんでしょ。
879:デフォルトの名無しさん
07/03/02 02:03:45
「Redmond, start your photocopies.」
なーんて言ってたら、マジでVistaでCore Audioをまんまパクられたから
焦って商標を取得したとか?
880:デフォルトの名無しさん
07/03/02 15:07:39
そもそも言語名って商標として登録できんの?
よくわからんのだけど、SunがJavaの商標を持ってたりMSがC#の商標持ってたりするの?
881:デフォルトの名無しさん
07/03/02 16:42:13
いや、そりゃ持ってるだろ。MSは知らんけど昔のSunはJavaをかなり厳格に管理してた。
882:デフォルトの名無しさん
07/03/28 18:37:41
Objective-CでWin32アプリ書こうかと思ったんだけど、
そもそもWindowsで使えるObjective-Cの処理系ってある?
883:デフォルトの名無しさん
07/03/28 18:51:42
GNUstep
884:デフォルトの名無しさん
07/03/28 21:17:48
Objcの処理系って意味なら gcc でOK。
# ってか他にまともに動く処理系ってある?
885:デフォルトの名無しさん
07/03/28 21:19:16
MinGWのObjective-CでWin32API使って書いたほうが
今のところは実用的だと思うけど
886:・∀・)っ-○◎●
07/03/29 01:28:09
Cで十分ってことじゃんそれ
Win32のメッセージAPIまわりがObj-Cのメッセージに綺麗にラップされてるならまだわかるが
887:デフォルトの名無しさん
07/03/29 02:48:14
>>886
まぁまったくその通りだと思うのだが>>882がラッパを書いてくれればOK
888:デフォルトの名無しさん
07/04/02 21:18:45
文字列オブジェクト定数に使われるクラスに自作のクラスを使えない?
コンパイラオプションにあるあらかじめ用意されたクラスしか使えないの?
889:デフォルトの名無しさん
07/04/03 02:18:05
>>888
URLリンク(www.mhatt.aps.anl.gov)
こういう話?
890:デフォルトの名無しさん
07/04/05 20:17:50
>>889
それそれ!
どうもありがとうございます!
891:デフォルトの名無しさん
07/04/13 12:39:32
Cocoaプログラミングの無料セミナー開催
今月4月にCocoaプログラミングの無料セミナーの初級・中級・上級を東京初台
のアップルセミナールームで開催し ます。次期OS Leopardには、Objective-Cの
APIのみで提供される新機能がたくさ んあります。今後、Cocoaの習得はMac OS
ソフトの開発に必須となります。是非 この機会をご活用下さい。講師はHMDTの
木下誠さんです。
URLリンク(developer.apple.com)
892:デフォルトの名無しさん
07/04/22 20:16:44
今更の質問かもしれないですが、NSURLConnectionで2chデータの差分を取得しようとした時に416エラーが返ってくるのをどう解釈して良いのか分からず困っております。
NSURLRequest内容:
{
Accept = "text/plain";
"Accept-Encoding" = "gzip, deflate";
"Accept-Language" = ja;
"Cache-Control" = "no-cache";
Connection = close;
Host = "news21.2ch.net";
Pragma = "no-cache";
Range = "bytes=6198-";
Referer = "URLリンク(news21.2ch.net)
"User-Agent" = "Monazilla/1.00 (Jane/0.01)";
}
NSURL内容:URLリンク(news21.2ch.net)
他方、cURLで取得しようとするときちんと差分が取得できます。
curl -H 'Range: bytes=6198-' -v -A 'Monazilla/1.00 (Jane/0.01)' -H 'Accept: text/plain' -H 'Pragma: no-cache' -H 'Cache-Control: no-cache' -H 'Connection: keep-alive' URLリンク(news21.2ch.net)
893:デフォルトの名無しさん
07/04/23 08:06:01
NSURLConnectionではヘッダー部分の、特にHTTP/1.1とかのパラメーターが触れないので、
この辺が原因なのでしょうかね、ほかに何かおかしな事をやってるのでしょうか、
NSURLConnectionのバグ?
894:デフォルトの名無しさん
07/04/23 16:50:01
NSURLRequest の内容と
curl に渡している物が違うのはわざとですか?
ステータスコード 416 の意味は何かご存知ですか?
Accept-Encoding : gzip の場合は何が起こりますか?
NSURLConnectionのバグだと思うのでしたらバグレポート出せばよいと思いますよ。
895:デフォルトの名無しさん
07/04/23 20:05:10
416は範囲がそれているという意味でしょ、んでConnection = closeでもConnection = keep-aliveでも
ストリームで受け取る場合に挙動はかわらないっぽいです。
curlでAccept-Encoding : gzipを付けなかったのは-vで出されるヘッダフィールドはzipがかからないと考え、
gzip に渡して解読できないかもと思ったからで、416の本筋ではないです。
ヘッダを全くそろえても、NSURLConnection側のみ416エラーが出てます。
ただし、Range設定しない場合はきちんとダウンロードできます…。
今はとりあえずCore Foundationで直読みできるかどうか試してるところです。
896:デフォルトの名無しさん
07/04/23 20:12:25
>>894
つまりcurlのverboseを見るため、意図してAccept-Encodingヘッダを飛ばしてます。
416とはRange指定範囲が本体の範囲から外れている事を意味していると思うのですが、
もし違う解釈があるのなら指摘いただけるとありがたいです。
curlでは正常に範囲指定が受け付けられているのに、NSURLConnectionでは範囲外と返ってくる。
ヘッダ情報が微妙に違うのか、何が原因なのかよくわからないのです。
897:デフォルトの名無しさん
07/04/23 22:37:46
tcpdumpとかでヘッダを覗いてみたらすぐに解決するんじゃない?
898:デフォルトの名無しさん
07/04/24 12:55:18
Accept-Encoding : gzip に答えてサーバーが gzip してコンテンツを返す
かつ
レンジ指定の場合
そのレンジは”何に対して”のレンジでしょう?
元のコンテンツですか?違いますか?
違う場合は、何に対してですか?
899:デフォルトの名無しさん
07/04/25 08:09:24
>>898
curl -H 'Range: bytes=6198-' -A 'Monazilla/1.00 (Jane/0.01)' -H 'Accept-Encoding: gzip, deflate' -H 'Accept: text/plain' -H 'Pragma: no-cache' -H 'Cache-Control: no-cache'
-H 'Connection: keep-alive' URLリンク(news21.2ch.net) | gzip -d -c
curl: (18) transfer closed with outstanding read data remaining
あれ、zip元のデータ長ではないのですね…
900:デフォルトの名無しさん
07/04/25 22:09:45
2ch の dat を差分取得しようとするときに誰もがはまる罠です。
不意のコネクション切断等のときに、
その続きを取得する時のことを考えれば、
この動作が”正しい”ことが分かると思います。
http コンテンツで 2ch の dat の様に差分を取得できる物って
そんなに無いと思いますよ。
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4855日前に更新/229 KB
担当:undef