Objective-C [ObjC pa ..
[2ch|▼Menu]
246:デフォルトの名無しさん
08/05/21 18:14:01
本当だったらとても嬉しい
Objective-C++/CLIとか使ってみたい
#importがもろにかぶってるけど……

247:デフォルトの名無しさん
08/05/21 18:14:18
>>244
まじかー!
やめてくれー!
また変てこ独自仕様でぐちゃぐちゃにする気だろ!
Obj-Cは軽い仕様がいいのに。

248:デフォルトの名無しさん
08/05/21 18:31:08
する必要ないだろ。多分。
VCとVC++の拡張を使えば済むから。
血迷ってJ++みたいにCOMを呼び出すための拡張とかされたら涙目だが、
それはランタイムの拡張でするだろうし、言語仕様には触れないさ。
いや、そうあってほしい

249:デフォルトの名無しさん
08/05/21 20:30:58
>>243
>「面倒だし、なら別にいいや」

「こんな事すら面倒なんだ。なら君はいいや。」で終わりかと。

250:デフォルトの名無しさん
08/05/21 21:45:05
多重継承 ,virtual 修飾子
デフォルト実装あり protocol
抽象クラス宣言子

あと付きそうなのは何かな?


251:デフォルトの名無しさん
08/05/21 22:08:58
new演算子
まさかの静的結合

252:デフォルトの名無しさん
08/05/21 23:47:59
で、ソースは?

253:デフォルトの名無しさん
08/05/21 23:49:34
確かにc++は悪質だけど、見た感じでいえばobjcはc++より個性が強く独特なんだが…

254:デフォルトの名無しさん
08/05/21 23:52:13
C++の見た目が個性が無くて一般的だという感覚が信じられんよ…

255:デフォルトの名無しさん
08/05/22 00:01:28
誰もそんなこと言ってないと思うが…。

256:デフォルトの名無しさん
08/05/22 00:11:13
>>253
C++0x は凄いよ、λ式の
some_function ( [&](){} )
とかすごい。Obj-C の [ ... ] なんか目じゃないぐらいキモイ。
URLリンク(www.open-std.org)

257:デフォルトの名無しさん
08/05/22 00:39:16
文法がキモイのがC++の個性だからな

258:デフォルトの名無しさん
08/05/22 03:08:36
とりあえず #define lambda [&] を標準で用意して欲しいわ。

259:デフォルトの名無しさん
08/05/22 06:21:32
エディタでメンバを補完してくれたらうれしいな>>MS-ObjC

260:デフォルトの名無しさん
08/05/22 07:18:39
>>256
それはまだ先の話だろ。Cなのにパッとみが全くCじゃないのは、objcが元祖だってこと

261:デフォルトの名無しさん
08/05/22 07:20:48
C++はもういらないし、C99でいいよ
C++が必要な大規模開発は、javaとかobjc(gnu)とかあるし
最終的にランタイム・ライブラリ(自作も含む)と心中になるんだけどね

262:デフォルトの名無しさん
08/05/22 08:00:46
C99が使えるのがうれしいよな>ObjC

263:デフォルトの名無しさん
08/05/22 08:14:56
>>260
>Cなのにパッとみが全くCじゃないのは

C++のネームスペースやテンプレートの方が違和感ありありだが、
どちらも些細な事だと思うけどなあ。見た目だけで拒絶反応して
先に進めないなんて色んな事を損してそうだな。

264:デフォルトの名無しさん
08/05/22 08:18:33
>>259
MS-Obj-C って何? XCode は普通にメンバ名もなんでも補完してくれるが ...
GNUStep のエディタはしらね。

265:デフォルトの名無しさん
08/05/22 09:18:48
>>263
いろいろな言語をやったなくてCとobjc一筋だろ。おまえは。

266:デフォルトの名無しさん
08/05/22 09:20:11
C99というのは実質的にgccの事でしょ。趣味でintelコンパイラ使う人をはそうはいないだろうし

267:デフォルトの名無しさん
08/05/22 09:47:03
>>265
おかしな言いがかりは止めろよw
最近はC++の仕事ばかりでうんざりしてるのに…

268:デフォルトの名無しさん
08/05/22 10:30:34
オレとしてはCの正当の進化は突然変異したobjcよりC++にあると思うんだがどうだろうか?
仕方なしでもC++を受け入れたユーザーは多い。

269:デフォルトの名無しさん
08/05/22 15:33:52
Cの進化はC99でC++もobjcも普通に別言語だろ

270:デフォルトの名無しさん
08/05/22 15:42:12
objcってハイブリッド言語ていってた気がする。
Cの延長じゃなくて、Cも使えるオブジェクト指向言語的な感じで。

271:デフォルトの名無しさん
08/05/22 15:46:53
C with class だったよな。それにしてもCは99年から進化が止まったままだなあ

272:デフォルトの名無しさん
08/05/22 16:29:00
>>271
C with classes

273:デフォルトの名無しさん
08/05/22 20:09:14
>>269
ObjCはC互換でしょうが

274:デフォルトの名無しさん
08/05/22 21:29:25
>>273
Cの機能がすべて使えるということと別言語であるということは両立すると思うが…?

275:デフォルトの名無しさん
08/05/22 21:34:19
プリプロセサ通せばただのCになるんだから、
別言語ではないと言えなくもないかなと。

276:デフォルトの名無しさん
08/05/22 21:35:23
GCC互換のObjective-Cプリプロセッサがない件

277:デフォルトの名無しさん
08/05/22 22:46:54
>>275
その理屈だとEiffelもC言語だなw

278:デフォルトの名無しさん
08/05/22 22:54:19
設計理念が違うってことだと思うが

279:デフォルトの名無しさん
08/05/23 00:15:17
Eiffelも楽しいけどね。

280:デフォルトの名無しさん
08/05/24 19:22:23
(1 == 1) == YES
っていうのは保証されてませんよね?

281:デフォルトの名無しさん
08/05/25 00:41:51
>>280
Obj-C の YES は単に 1 のマクロなので、 C の問題だから、C スレにいったほうがいいと思います。

でも、僕のあやうい記憶だと、保証されてると思います。
というのは、C の if 文はゼロ以外は真、ゼロだと偽、なので、
if 文とかの中で if(ore_ha_hage()== YES) と比較するのは良くなくて、
直接 if(ore_ha_hage()) とするのが良い、とされてます。

が、論理演算子 = , <=, != 等が返す真偽値は 1, 0 だというのが
最近の C の規格では保証されてるので、
あなたが書いた (1==1)==YES は 1 になるはず。

282:デフォルトの名無しさん
08/05/26 19:04:29
YES が 1 と保証されてるか、がキモなんじゃないの?

283:デフォルトの名無しさん
08/05/26 21:57:38
1じゃやなら、じゃ何がいいんだ?

284:デフォルトの名無しさん
08/05/26 22:20:11
0じゃない

285:デフォルトの名無しさん
08/05/26 23:46:24
>>282
Apple のレファレンスには、YES は 1 ですと書いてあるけど。
Obj-C は公的な標準規格がないからなんとも ...

まあ C 系言語において
YES, NO と比較するのがバッドノウハウであるのは間違いない

286:デフォルトの名無しさん
08/05/27 00:14:09
VARIANT_TRUE は -1 で定義されてるんだよな

287:デフォルトの名無しさん
08/05/27 01:19:52
そんな Microsoft 系の話をされても困るし ...
MS は大昔から false は 0 で、true はビットを全反転した -1 。
でも C の < , > 等の返す真偽値は整数としては 1 だから気をつけましょうね。
if 文の中で 更に YES/VARIANT_TRUE とかと比較しなければ全く問題ないのだが ...

288:デフォルトの名無しさん
08/05/27 13:10:57
既知ですが、
ソフトバンク クリエイティブの本:詳解 Objective-C 2.0
URLリンク(www.sbcr.jp)

Amazon.co.jp: 詳解 Objective-C 2.0: 荻原 剛志: 本
URLリンク(www.amazon.co.jp)

289:デフォルトの名無しさん
08/05/27 21:47:45
>>287
BOOL の TRUE は 1 だけどね。

真が -1 っつーと BASIC なんかそうだな。

290:デフォルトの名無しさん
08/05/28 21:41:02
>>288
>詳解 Objective-C 2.0

mkinoさんが買うべきだと絶賛中
URLリンク(hmdt.jp)

291:デフォルトの名無しさん
08/05/29 09:02:30
Obj-Cをこれからも使い続ける/これから使い始めるなら読んどいても良いんじゃない。

292:デフォルトの名無しさん
08/06/01 18:27:27
2.0本、表紙はどう見てもiPhoneホーム画面なのに、
帯以外でiPhoneという単語は一度も出てこない。

荻原教授は最初から触れるつもりなかったのに編集が独自に装丁考えたのか、
NDAを見てあわてて記述を残らず削ったのか。

293:デフォルトの名無しさん
08/06/02 00:35:47
URLリンク(www.flickr.com)

294:デフォルトの名無しさん
08/06/02 19:30:37
>>292
もともとObjective-CとFoundationに重点を置いてある本だから、
iPhoneに触れる気はもともとなかったんじゃない?

295:デフォルトの名無しさん
08/06/02 22:32:57
買った後に気づいた。×iPhoneの存在に。
正式版のSDKで2.0使えるんならいいんだけど。

296:デフォルトの名無しさん
08/06/07 22:59:16
URLリンク(www.nitenichiryu.org)
URLリンク(www.metareal.org)


297:デフォルトの名無しさん
08/06/09 08:47:38
>>296
Objective-CをJavascriptに変換して実行か。よくやるよね。

でも静的な型付けをもつ言語を動的な型付けをもつ言語に翻訳する
のってなんかちょっともったいない気がする。Objective-Cは半分
くらい動的な型付けなんだけどさ。


298:デフォルトの名無しさん
08/06/15 17:02:45
URLリンク(theunixgeek.blogspot.com)

299:デフォルトの名無しさん
08/06/15 23:05:16
cocoa最安かww



300:デフォルトの名無しさん
08/06/15 23:47:04
>>298
これからHaskell勉強してくる

>>299
その割にはObjective-Cが第3位ってのが不思議

301:デフォルトの名無しさん
08/06/17 14:44:06
なんでC言語準拠しておきながら、クラス関数の宣言の仕方は似ても似つかない変な記法なの?

302:デフォルトの名無しさん
08/06/17 15:07:42
>>301
「似たようなものは似たような表記にしたほうがわかりやすい」
という考え方もあるだろうが、
「意味的に異なるものを表すなら異なる表記にしたほうが区別しやすくわかりやすい」
という考え方もある。
構造体のへのポインタの先の関数ポインタ経由での関数呼び出しとメソッド呼び出し
はまったく別のものだと考えれば別の表記になっていたほうがうれしいだろう?

# 実際のところは単に設計者の趣味じゃね?

303:デフォルトの名無しさん
08/06/17 17:08:41
でも、そのあたりの記法の気持ち悪さが、普及の妨げになってるような気はするよな

304:デフォルトの名無しさん
08/06/17 18:34:48
この言語はほぼOS X専用言語と化してるし特に普及させる必要がないと思うのだが…
# また普及厨?

305:デフォルトの名無しさん
08/06/17 18:55:15
普及といえば、freebsdとかbsd方面は無理そうかな?

306:デフォルトの名無しさん
08/06/17 19:43:36
>>301
C と Smalltalk のハイブリッド言語だから。

307:デフォルトの名無しさん
08/06/17 19:55:13
C++ に慣れてるとコンストラクタはともかくデストラクタが欲しくてたまらない。

308:デフォルトの名無しさん
08/06/17 20:05:04
>>307
dealloc


309:デフォルトの名無しさん
08/06/17 21:35:57
勝ち組ケータイiPhoneの登場でObjective-Cの注目度が激しく上がったな

310:デフォルトの名無しさん
08/06/17 23:08:22
>>307 は自動変数の話をしてるんでは?

311:デフォルトの名無しさん
08/06/17 23:25:20
>>307,310
C++で自動変数(スタック)に作られたオブジェクトが
スコープを抜けるときデストラクタが呼ばれるあれの
ことかいな?
そのことなら、そもそもObjecitve-Cのオブジェクト
の実体はヒープにしか作ることができなくて、スコー
プとオブジェクトのライフサイクルは無関係。


312:デフォルトの名無しさん
08/06/17 23:26:54
つまりそれが不便だ、と

313:デフォルトの名無しさん
08/06/17 23:59:51
Objective-C++で、Objective-Cのオブジェクトを扱う
スマートポインタをC++で書くのはどうだ。C++のこと
はすっかり忘れてるので変なこと書いてるかもしれんが

{
smart_object_id object = [[NSObject alloc] init];
...
} // ここでスマートポインタsmart_object_idによって
// [object release] が呼ばれる


あるいは

class StackPool {
id pool;
public:
Pool() { pool = [[NSAutoreleasePool alloc] init]; }
~Pool() { [pool release]; }
}

というのを作っといて

{
StackPool pool;
id object = [[[NSObject alloc] init] autorelease];
...
} // ここでpoolがreleaseされ、objectもreleaseされる


314:デフォルトの名無しさん
08/06/18 00:01:09
まあ Objective-C++ を使う分にはそういったので問題ないね。

315:デフォルトの名無しさん
08/06/18 00:06:13
[&](){return i}; みたいな変態の C++0x に言われたくないです!

316:デフォルトの名無しさん
08/06/18 00:50:37
まあ純粋 C++ の話題はスレ違いだ

317:デフォルトの名無しさん
08/06/18 00:58:20
redditとかいう所で見つけた。
URLリンク(sleep.dashnine.org)
>easy to learn with Perl and Objective-C inspired syntax
だって。

318:デフォルトの名無しさん
08/06/18 02:08:44
スクリプト言語が移植されたらAppStore通さないでも流通するんだよな。
そしたらObjective-Cのブーム終了だろ。
他言語ユーザに珍入されるのやだからそうなってほしい。

319:デフォルトの名無しさん
08/06/18 02:28:24
任意のスクリプトコードのダウンロード・実行と、AppStore以外の配信システムを構築することは
SDK Agreementで禁止されている。

320:デフォルトの名無しさん
08/06/18 02:47:53
そもそも携帯電話ごときでスクリプト言語が満足にうごくの?

321:デフォルトの名無しさん
08/06/18 03:24:09
S60でもPythonが動いてるってのにこいつはUnixマシンだよ?
JB環境になるけどPython(PyObjC)やJavaScript(Jiggy)ならGUIアプリも書けるぜ。

322:デフォルトの名無しさん
08/06/18 07:32:28
実際スクリプト言語で十分だけど、
そこであえてObjcでガリガリ書くのがスーパーハカー。


323:デフォルトの名無しさん
08/06/18 08:47:52
インラインでCを書ける"軽量"言語だから

324:デフォルトの名無しさん
08/06/18 09:54:51
>>323
ちょっと目から鱗


325:デフォルトの名無しさん
08/06/18 10:33:56
>>301
もともとObjective-CはSmalltalkの式をCコンパイラに通すための
プリプロセッサとして生まれて、そこから始まったからだよ。
[ ] の中はSmalltalk。

326:デフォルトの名無しさん
08/06/18 10:38:29
あまりに違いすぎるから違和感というか抵抗が強い。
HTMLの中にJavaが入ってるのと似てる。(javascriptが入っててもソース見るとカオスだけど)。
Cのソースが6割がasm{}だったらやっぱりカオスでしょ?

Cを拡張なんかしないでjavaみたく新言語の方が受け入れられてんじゃないかと思う。

327:デフォルトの名無しさん
08/06/18 10:57:50
Smalltalk 由来だって分かってるから、俺には違和感は全くないけど。
俺等は受け入れた。それで十分じゃないか。

328:デフォルトの名無しさん
08/06/18 11:13:12
本当はCを埋め込んでんだろうけど、なんかobjcの方がCに埋め込まれてるみたいなんだよね。そんだけ

329:デフォルトの名無しさん
08/06/18 12:17:43
>326
組込やってるからカオスとは思わないが

330:デフォルトの名無しさん
08/06/18 12:22:00
組み込みのように中の人が使う言語を、ウェブ・クリエータみたいなカジュアル層の人にまで使っていただこうとするのは、どこか間違ってると思いませんか?

331:デフォルトの名無しさん
08/06/18 13:42:42
敬語??

ウェブ・クリエータみたいなカジュアル層の人が
HTML中のjava入りでやってるんじゃないの?

obj-cだけじゃないんだし
rubyやらjavaとか好きなの使えばいいんじゃないかと思うが。

「こうあるべき」で固まりたくはないもんだ


332:デフォルトの名無しさん
08/06/18 13:56:50
もんだ?

333:デフォルトの名無しさん
08/06/18 14:01:10
いまどき web サイトで java applet をつかってるところなんてあるのか?
javascript ならわかるが ...

334:デフォルトの名無しさん
08/06/18 14:15:50
オンライントレード系は?

335:デフォルトの名無しさん
08/06/18 14:52:32
applet ではHTMLの中に Java 書いたりしない。 JSP の話だろう。

336:デフォルトの名無しさん
08/06/18 15:32:00
ああなるほど、失礼しました。

337:デフォルトの名無しさん
08/06/18 15:41:03
Iフォーンみたいなカジュアルは来なくていい。objcがギンギラのコテコテのキモ言語になるからね
流行ちゃんは、VBよろしく、flash使っていてくれ。

338:デフォルトの名無しさん
08/06/18 17:36:51
             /ヽ       /ヽ
            /  ヽ      /  ヽ
  ______ /     ヽ__/     ヽ
  | ____ /           :::::::::::::::\
  | |       //       \  :::::::::::::::|
  | |       |  ●      ●    ::::::::::::::| ・・・
  | |      .|             :::::::::::::|
  | |       |   (__人__丿  .....:::::::::::::::::::/
  | |____ ヽ      .....:::::::::::::::::::::::<
  └___/ ̄ ̄       :::::::::::::::::::::::::|
  |\    |            :::::::::::::::::::::::|
  \ \  \___       ::::::::::::::::::::::::|


339:デフォルトの名無しさん
08/06/18 23:26:01
もんだw

340:デフォルトの名無しさん
08/06/22 21:33:43
interface builder3.0が糞な件について

研究室でObjective-Cを使ってプログラミングを書けって言われたんだけど、
何この糞みたいにめんどくさい開発ツールは。

なんでわざわざオブジェクトとコードのコネクションを手動で接続しなくちゃいけないわけ?
Visul Studioをちょっとは学べよ。
あんなのダブルクリックで済むんだぞ。

あーむかつく。
なんでこんなん使ってやらなあかんねん。
ふざけんな。研究費削っとんちゃうぞ!!!!!!!!!


341:デフォルトの名無しさん
08/06/22 21:59:49
使わなきゃいいじゃん

342:デフォルトの名無しさん
08/06/22 22:00:25
そういう言語だからです。
あきらめましょう。
Windowsプラットフォーム向けが普及するとユーザーが増えるので風向きが変わるかもしれません。

343:デフォルトの名無しさん
08/06/22 22:26:39
あまりに糞だからVS使わせろとか言えないのか?
わざわざマイナーなMacを使う意味がわからん

344:デフォルトの名無しさん
08/06/22 22:36:38
Macを使う理由は
Linuxベースで金がかからないから。


345:デフォルトの名無しさん
08/06/22 23:27:08
Linuxベース?

346:デフォルトの名無しさん
08/06/22 23:43:04
linuxベースっていう言葉はおかしいね。

まぁ基本的にはlinuxと同様unixが大元になっているけど。
この人はmacのことを殆ど分かってないんだろうなー。


347:デフォルトの名無しさん
08/06/22 23:43:53
最近、Cocoa始めたものとしては、最初の印象として>>340は思った。
糞だとは思わなかったけど、なんでだろ?って感じで。
で、NSTableViewにdataSourceセットするのをやって、ちょっと分かった。
少なくともVS的コーディングでは、これは実現できないと思ったなぁ。
それがいいか悪いかは知らんけど。

348:デフォルトの名無しさん
08/06/22 23:58:50
>>340
まさにおなじはなしを
URLリンク(dotnetaddict.dotnetdevelopersjournal.com)
のひとがしてるので、彼の分析を読んで見るとおもしろいかも。
このひとのブログは全般的におもろいです。
.Net addict だったはずなのに最近はすっかり Cocoa に毒されてる人です。

349:デフォルトの名無しさん
08/06/22 23:59:36
>>340
俺はコネクションが好きだったから、初めから別に苦ではなかったけど、Interface Builder使いこなしてくるとコネクションの良さがわかってくるよ。バインディグとかformatterとかウインドウ出したり。この辺はVSだとコーディングが必要になるところだと思う。

350:デフォルトの名無しさん
08/06/23 00:25:49
>>348

VSから移行する人はみんな思うのかもね。
俺もそうだった。
まぁVSと違ってクールなところもあるから。


351:デフォルトの名無しさん
08/06/25 00:37:23
>>340
俺も最近マック渡されてcocoa使ってる
しかもそれとおんなじことを先生に言ったww。

確かにVS.netはお金がかかるからね。
でも今必死にcocoaをやってるけど、案外楽しい。

352:デフォルトの名無しさん
08/06/25 02:43:26
>>351
まぁ学生は今のうちに好きな環境を使え。
仕事にしたらそうはいかないけど。

353:デフォルトの名無しさん
08/06/25 07:24:22
逆じゃね?
学生だからこそ、頭をやわらかくして、どんどんいろんな環境にチャレンジすべし。
一つの環境に馴れ親しむのも大事だけど、それだけじゃ二流だよ。

354:デフォルトの名無しさん
08/06/25 21:07:42
バインディング使えば?

355:デフォルトの名無しさん
08/06/26 22:07:31
>>351
>先生に言った

いくつかの環境に慣れとけば生存能力も高くなる鴨

356:デフォルトの名無しさん
08/07/06 22:35:21
@interface ClassA : SuperClass
{
  id hoge;
}
@property hoge;
@end

こんなClassAがあったとして、インスタンスメソッド内で
self->hoge はインスタンス変数に直接アクセスし、
self.hoge はプロパティのアクセサを通してアクセスすると思うのですが、
単にhogeと書けばどっちになるのでしょうか?

357:デフォルトの名無しさん
08/07/07 00:08:08
>>356
単に hoge は self->hoge と同等。

358:デフォルトの名無しさん
08/07/07 08:07:57
ありがとうございます。
自分のプロパティへのアクセスにはself.が必須なんですね。

359:デフォルトの名無しさん
08/07/07 08:58:18
単に hoge だけでプロパティにアクセスされては、
Obj-C 1.0 のコードを 2.0 でコンパイルするとひどいことになるよ。
Obj-C 1.0 では手で

-(id) hage
{
return hage;
}
とか書いていたのと、
Obj-C 2.0 で obj.hage というのは、@property 定義がなくとも
[obj hage] と等価 (ただしくは [obj objectForKey:@"hage"] だけど)
だということをかんがえると、
もしインスタンスメソッド内で hage と書くのが self.hage という意味にしてしまうと、上記アクセッサで無限ループになります。

360:デフォルトの名無しさん
08/07/07 11:15:42
ちなみに展開したのってどやってみるの?


361:デフォルトの名無しさん
08/07/07 13:16:46
何を展開する話をしてるの ?

362:デフォルトの名無しさん
08/07/07 14:35:16
>>361
ObjCのコードじゃない?
それなら objc の -C オプションを付ければ拡張子が .i のファイルに
C のコードに展開された ObjC のコードが見られるよ。

363:デフォルトの名無しさん
08/07/07 19:13:49
>>359
id a = obj.hage;
って、
id a = [obj hage];
じゃなくて、
id a = [obj objectForKey:@"hage"];
になるの?

364:デフォルトの名無しさん
08/07/07 23:01:20
ごめん、objectForKey: じゃなくて、valueForKey: だった。
URLリンク(developer.apple.com)
とか
URLリンク(developer.apple.com)
参照。単に setHage:, hage: じゃなくて、KVC されます。

一般に、[obj valueForKey:@"aho"] とすると、
Objc-C ランタイムは aho: , getAho: isAho: というメソッドを探した後、
_aho, _isAho, aho, isAho というインスタンス変数を探します。
だから、obj.aho でも、それだけの候補が探されます。
毎回こんなことやってると遅くてかないませんが、裏でキャッシュしているらしいです。

基本的に、self.aho だとバインディングが動く、self->aho だと動かないということです。

365:デフォルトの名無しさん
08/07/07 23:10:17
>>364
そういう話じゃなくて、、、
プロパティーって、Objective-C2.0が持ってる機能でしょ?
なぜ、そこでvalueForKey:などの、Cocoaフレームワークのメソッドが出てくるのでしょう?
gccなどのコンパイラが、Cocoaに依存したコードを出力するとは思えないのだが。
リンク先のページにも、そんな事書いてないし。

366:デフォルトの名無しさん
08/07/07 23:17:43
valueForKey:をCocoa特有のメソッドだという考えをまず捨てねば。
allocやinitだってCocoa特有でないのと一緒。
finalizeが良い例。

367:デフォルトの名無しさん
08/07/07 23:27:25
まあ実際はこうなんだけど

Key-value coding and declared properties are orthogonal technologies. You
can use KVC whether or not you use properties, and you can use properties
whether or not you use KVC. Both, though, make use of a "dot syntax". In
the case of KVC, the syntax is used to delimit elements in a key path. It
is important to remember that when you directly access a property using the
dot syntax, you invoke the receiver's standard accessor methods (as a
corollary, to emphasize, the dot syntax does not result in invocation of KVC
methods valueForKey: or setValue:forKey:).

368:デフォルトの名無しさん
08/07/07 23:56:53
>>366
言っていることが、変だよ。
alloc、init、finalizeは、普通にObjective-C言語の一部として定義されてるメソッドです。
逆に、valueForKeyはObjective-Cの一部として定義されていません。
一緒にしてはいけません。

>>367が書いてるとおり、id a = obj.hage; は、id a = [obj hage]; とコンパイルされるよ。

ちなみに英文の日本語訳は、これ↓
URLリンク(developer.apple.com)



369:デフォルトの名無しさん
08/07/08 00:00:35
>>368
> alloc、init、finalizeは、普通にObjective-C言語の一部として定義されてるメソッドです。
日本語でおk

370:デフォルトの名無しさん
08/07/08 00:47:08
↑おまえはまずは日本語を勉強した方がいいんじゃないか?

371:デフォルトの名無しさん
08/07/08 08:13:14
364 ですが、嘘を言ってすいませんでした。

どこまでが Obj-C 2.0の機能かというのは、
Apple 版 GCC 以外に Obj-C 2.0 をまともにコンパイルできるのがないので考えても仕方がないのでは?
NSFastEnumeration とかはどう思うの?


372:デフォルトの名無しさん
08/07/08 08:45:22
嘘つきはお断り

373:デフォルトの名無しさん
08/07/08 18:03:58
alloc init が Objective-C言語の一部として定義されてるメソッドと断定している理由は何?

374:デフォルトの名無しさん
08/07/08 21:07:27
NSFastEnumerationは、それに関連して文法が拡張されてるぐらいだから、ObjC2.0の一部なんじゃない?
あと、インスタンスを生成するときは、[[MyClass alloc] init]ってやるって、決まってるし。これは、Cocoaだからじゃなくて、ObjCだからそういう仕様になってるんです。これらのメソッドは、Objectクラスにも定義されてるし。

>Apple 版 GCC 以外に Obj-C 2.0 をまともにコンパイルできるのがないので考えても仕方がないのでは?
そういう部分もあるけど、Foudationフレームワーク全体がObjCだっていう訳でもないと思うけど。



375:デフォルトの名無しさん
08/07/08 22:08:59
>>373
それ外したら言語機能の範囲内でオブジェクトが作れなくなってしまわないか。
ANSI-Cみたいな規格がなくて(ないの?)断定は出来んのかもしれんが、alloc
init が言語の一部じゃないってのは考えにくいなぁ。それとも俺が無知なだけ
で言語が定める正統なオブジェクトの作り方が他にあるのかな。


376:デフォルトの名無しさん
08/07/08 22:24:16
Mac OSXのオブジェクトは、フツーにC言語なCore Foundationで表現されてたかと。
ANSIとかどうでもいいが、規格ある言語をラップして表現する方向で統一してるね
CF自体はwin/linux/fBSDにportingされてるし、Darwinコードにも各OSへのコントリビュータの名前が並んでたり

Cocoaもまた、結構CFをまんまラップして表現してるんだよね
Carbonとの基盤統一のためにやってる事なんだろうけど。

今のOSXではalloc/initは本質的にどっちで表現されてんだろな

377:デフォルトの名無しさん
08/07/08 22:44:33
OSObjectは?

378:デフォルトの名無しさん
08/07/08 22:52:08
>>374
そういう曖昧なものを定義としていいの?

>>376
それは実装の話で、規格の話じゃないでしょ?

>>375
だから、Obj-Cではそれすら実装依存なんでしょ?


379:デフォルトの名無しさん
08/07/08 23:03:30
>>378
>だから、Obj-Cではそれすら実装依存なんでしょ?
どのプラットホーム上でも、オブジェクトの生成にはalloc - initを使う。これが言語仕様だから。
逆に、alloc - init以外でオブジェクトを生成する実装ってあるの?



380:デフォルトの名無しさん
08/07/08 23:13:12
>>379
それが言語仕様だってどこに書いてるの?
ほかの実装がないから言語仕様なの?

381:デフォルトの名無しさん
08/07/08 23:39:51
なんだよ、おまえらココアで酔ったか?

382:デフォルトの名無しさん
08/07/08 23:42:10
そもそも言語仕様の規格とかないんだから現存する「特定の実装の言語仕様」しか
語ることができないような… 議論そのものがナンセンスじゃね?

383:デフォルトの名無しさん
08/07/08 23:58:59
しようがねえな

384:デフォルトの名無しさん
08/07/09 00:01:56
ところでこの議論の先には何があるんだ?

385:デフォルトの名無しさん
08/07/09 00:20:13
>>381
多分そうなんだと思う。
別に今更、Obj-CとApple独自の実装を分けて考えろとは思わないけどさ、

>alloc、init、finalizeは、普通にObjective-C言語の一部として定義されてるメソッドです。
>逆に、valueForKeyはObjective-Cの一部として定義されていません。
>一緒にしてはいけません。
とか言われるとちょっと意地悪してみたくなるじゃない?
君こそ一緒にしてるじゃん?て。

あまつさえ、
>NSFastEnumerationは、それに関連して文法が拡張されてるぐらいだから、ObjC2.0の一部なんじゃない?
>あと、インスタンスを生成するときは、[[MyClass alloc] init]ってやるって、決まってるし。これは、Cocoaだからじゃなくて、ObjCだからそういう仕様になってるんです。これらのメソッドは、Objectクラスにも定義されてるし。
なんて意味不明な事言い出す始末だし。
普通は規約が改定されたからそれにあわせてAppleはNSFastEnumerationを実装して対応した。
って考えるでしょ。
なんで、一部になっちゃうかな?

分けて考えるなら、徹底して分けて考えろって思う訳よ。


書いてるうちに、先書かれちゃった。
問題はそこなんだけどねw >382
ANSIかISOで管理してるって話も聞くんだけど、全く見当たらないんだな、これが。
URLリンク(developer.apple.com)
これだって、Apple実装を例にしたObjective-Cのお勉強資料だしね。

>>384
[self release]; // 自身の解放?

386:デフォルトの名無しさん
08/07/09 08:01:32
alloc, initで生成と初期化を行うのはただの慣習であってObjCの仕様じゃない。
逆にfinalizeやFast Enumeration系はランタイム側で定義された仕様。

387:デフォルトの名無しさん
08/07/09 08:21:00
ほんとつまんない事にこだわる奴らだな。
タクシーのエンジンの構造や燃料の効率について、なんも知らなくったって、
運転手さんに行き先を言えば望んだ場所に連れて行ってくれるというのに。

388:デフォルトの名無しさん
08/07/09 08:30:09
いや、一応ここ専門板だし。俺はもう寝るけど。

389:デフォルトの名無しさん
08/07/09 08:56:01
>>388
というか、ISO / ECMA 規格がないのにどこまでが言語でどこからがライブラリかという話をしても仕方がないのでは。

390:デフォルトの名無しさん
08/07/09 09:12:05
多分それでFAだろね

それ以上はAppleがどう認識してるか調べるくらいが関の山かと

391:デフォルトの名無しさん
08/07/09 13:01:36
コンパイラが認知する部分は言語仕様
ランタイムが認知する部分はランタイム仕様
コンパイラやランタイムを変えなくても変えられる部分は慣習・規約

392:デフォルトの名無しさん
08/07/09 13:31:57
じゃあ、コンパイラが
@"hogehoge"
でNSStringオブジェクト定数を生成してるわけだから、
NSStringは言語仕様に含まれてるんだ。
NSCFStringだと主張するならNSCFStringもまた言語使用に組み込まれている。


で、まだ続けるの?
もう不可分で良いじゃん。

393:デフォルトの名無しさん
08/07/09 14:09:41
そうだよ。java.lang.StringがJava言語、System.StringがC#と結びついているのと同じ。特別扱い。

394:デフォルトの名無しさん
08/07/09 14:22:09
「@"hogehoge"がNSStringだ」というのは言語仕様
NSStringの具体的な中身はライブラリの仕様

395:デフォルトの名無しさん
08/07/09 14:23:47
じゃあ、コンパイラの不可思議な動作も言語仕様のうちだ。
@"hoge" "fuga" @"hogera";
が正しく連結されたりね。

396:デフォルトの名無しさん
08/07/09 15:01:25
>>391
Obj-C のどこからどこまでが言語仕様かという話をするために、
>コンパイラが認知する部分は言語仕様
というわけだけど、
「コンパイラが認知する部分」は「言語仕様」という定義をしてるのは誰?


397:デフォルトの名無しさん
08/07/09 15:05:08
>>394
>@"hogehoge"がNSStringだ」というのは言語仕様
そうだったのかー。じゃあ GNU実装の gcc -fconstant-string-class オプションでの
文字列リテラルクラスの変更は言語仕様違反ですね…
-fconstant-string-classのデフォルトは NXConstantString だから変更しなくてもやっぱり
言語仕様違反ですか…GNUの実装はひどいですねー
# その言語仕様とやらがどこに存在してるのか知らんけどw

398:デフォルトの名無しさん
08/07/09 15:27:08
>>397
それは間違いでしょ?
だって、「コンパイラが認知する部分は言語仕様」とされている訳だから、
Apple拡張されていないgccのコンパイラが認知するものだって言語仕様だよ。
つまりObj-Cの言語仕様はコンパイラの数だけあるってことでしょ。

399:デフォルトの名無しさん
08/07/09 15:30:23
ほんとは実装依存って言うんだろうけど

皮肉に皮肉で返しあってgdgd

400:デフォルトの名無しさん
08/07/09 15:32:58
             /ヽ       /ヽ
            /  ヽ      /  ヽ
  ______ /     ヽ__/     ヽ
  | ____ /           :::::::::::::::\
  | |       //       \  :::::::::::::::|
  | |       |  ●      ●    ::::::::::::::| ・・・
  | |      .|             :::::::::::::|
  | |       |   (__人__丿  .....:::::::::::::::::::/
  | |____ ヽ      .....:::::::::::::::::::::::<
  └___/ ̄ ̄       :::::::::::::::::::::::::|
  |\    |            :::::::::::::::::::::::|
  \ \  \___       ::::::::::::::::::::::::|


401:デフォルトの名無しさん
08/07/09 15:44:38
>>398
>コンパイラの数
Obj-CのコンパイラってAppleのgcc,GNUのgccとPOCぐらいだろ

402:デフォルトの名無しさん
08/07/09 15:47:38
>>401
それに何の問題が?

403:デフォルトの名無しさん
08/07/09 16:44:53
しょうもない話題をいつまでひっぱってんだ

404:デフォルトの名無しさん
08/07/09 18:45:14
alloc と init がObjective-C 言語仕様に規定されているという人がいるからしようがない。
もしくは、
Objective-Cの言語仕様はそのコンパイラが規定すると言い張る人がいるからどうしようもない。


Objective-Cには公開された言語仕様が存在しない。
ってことをどうして認めようとはしないの?

それとも僕はとんでもない勘違いをしていて、
これこれは言語仕様と断言している人たちは、
非公開な言語仕様を閲覧できる立場の人たちなの?

405:デフォルトの名無しさん
08/07/09 19:08:29
標準規格がない言語には言語仕様がないと?

406:デフォルトの名無しさん
08/07/09 20:30:53
さすがにもう飽きてきた。w
>405
じゃあそれ、これこれは言語仕様です。これこれは違います。
って自信満々に言ってる人に言っといて。
標準がないのにそんな自信たっぷりに言われてもねぇ、って。

407:デフォルトの名無しさん
08/07/09 21:23:01
皆さん熱弁を振るってますが、
「どこからが美人でどこまでがブスか。」
という議論に近い不毛なものを感じますた。
以上、通りすがりの私の感想でした。

408:デフォルトの名無しさん
08/07/09 22:37:47
だよな
どこからAPIの機能でどこから言語の規格が議論して何か意味あるのかね。
C++でもAPIがなけりゃ文字列処理もでない屑言語だが

409:デフォルトの名無しさん
08/07/09 23:45:04
>>405
> 標準規格がない言語には言語仕様がないと?
そりゃ標準規格がない言語には、どこまでが標準言語仕様でどこからが標準ライブラリでどこからが独自ライブラリかの違いなんてないだろうよ
アホ?

410:デフォルトの名無しさん
08/07/10 00:14:55
標準ライブラリも含めて言語仕様でしょ
NSObjectがなければ何もできないんだから

411:デフォルトの名無しさん
08/07/10 00:23:09
「仕様」を「規約」と解釈する人と「実装の裏にある本質」と解釈する人が争ってる感じ

412:デフォルトの名無しさん
08/07/10 08:59:06
この流れは…iPhoneのお陰かな。

413:デフォルトの名無しさん
08/07/10 09:03:29
>>410
NS〜は「de fact」標準ライブラリです。

414:デフォルトの名無しさん
08/07/10 09:11:29
>>413
de facto ですよ正しい綴りは。

415:デフォルトの名無しさん
08/07/10 09:15:43
>>414
どうも。

416:デフォルトの名無しさん
08/07/10 16:04:21
>>410
objc/Objectじゃだめですか><

417:デフォルトの名無しさん
08/07/10 17:17:44
>>411
仕様は仕様でしょ?
それがあって始めてApple方言とかGNU方言とか言える訳で。
一番近いのは、
URLリンク(developer.apple.com)
これ。文書全体じゃなくてこの章だけね。

>>412
おれは茶化してるだけのCocoaがなかったら死ぬタイプの人間ですw

418:デフォルトの名無しさん
08/07/10 17:33:50
URLリンク(developer.apple.com)
こっちもそうだった。
こっちはコンパイラのディレクティブのところにNSStringと明記されてる。
これが要求仕様なのかどうかは不明。

419:デフォルトの名無しさん
08/07/10 17:48:03
アップルは、Objective-CとCocoaを別々に開発している。
当然、仕様も別々に存在している。
特に、Objective-Cに関しては、Darwinプロジェクトの中で開発されているのだから、どこまでがObjective-Cなのかは明確になっているんじゃないのか?
Objective-Cの仕様に合わせてCocoaを作る事はできても、Cocoaの仕様に合わせてObjective-Cを作ることはできないのだから。

420:デフォルトの名無しさん
08/07/10 23:13:07
>>419
アップルにしてみればObjective-Cの言語仕様とCocoaライブラリの境界をはっきりさせなくても別に困りはしないでしょ。OpenDarwinも終わっちゃったし。

>Objective-Cの仕様に合わせてCocoaを作る事はできても、Cocoaの仕様に合わせてObjective-Cを作ることはできないのだから。
Objective-C文字列リテラル、メッセージの転送、例外処理、@synchronized、ObjC 2.0のプロパティ、高速列挙。Cocoaを前提とした機能はずいぶんと追加されてるよ。

421:デフォルトの名無しさん
08/07/10 23:27:38
>当然、仕様も別々に存在している。
その自信はどこから来るわけ?
Apple 社員で社外秘の仕様をみられるというの?
社外秘の仕様があるばあいは社外の人には仕様はあることになるのないことになるの?

422:デフォルトの名無しさん
08/07/11 00:18:39
>>420
> アップルにしてみればObjective-Cの言語仕様とCocoaライブラリの境界をはっきりさせなくても別に困りはしないでしょ。

困ると思うよ。
「分割して統治せよ」って言葉聞いた事あるよね?
大規模なシステムを設計する場合は、全体が一枚岩のようになると、とても保守が面倒になるので、複数のコンポーネントに分割して管理するものなんだよ。
Cocoaだって、あえてAppKitとFoundationに分かれているのもそういった理由があるからだと思うよ。
NSStringがFoundation側で定義されていて、-[NSString drawAtPoint:withAttributes:]があえてAppKit側にカテゴリーを使って定義してあるのも、そういった理由があるからでしょう。
Objective-Cも同じようにCocoaから分割されていると思う。

423:デフォルトの名無しさん
08/07/11 00:48:59
Appleの場合、仕様はJobs(笑)ってのもあるから。
最近、GPGPUに興味を持ってるみたいだから、「Snow Leopard」公開後は新しい言語
「OpenCL(open computing language)」を使用するように仕様が変更されるかもしれない。

424:デフォルトの名無しさん
08/07/11 01:08:20
Rubyの仕様がまつもとひろゆきみたいなもんだね

425:デフォルトの名無しさん
08/07/11 02:25:22
Jobs本人がOpenCLについてなんか言及してるん?

426:デフォルトの名無しさん
08/07/11 02:26:24
>>422
システム全部大雑把でいいなんて書いてない。あくまで言語仕様とライブラリの境目の話。拡大解釈しないでおくれ。

>Objective-Cも同じようにCocoaから分割されていると思う。
文字列リテラルとかプロパティとか高速列挙とか、いろいろ挙げたのは無視?
Objective-Cの権利は全部アップルが持ってるし、自社OSのためにコンパイラもランタイムも開発してるんだから、Cocoa前提の機能を言語仕様に含めたほうがアップルにとって楽なこともあるでしょ。

427:デフォルトの名無しさん
08/07/11 07:42:15
文字リテラルもプロパティも高速列挙もCocoaなしで使えるし

428:デフォルトの名無しさん
08/07/11 09:37:12
>>423
>新しい言語
>新しい言語
>新しい言語
>新しい言語
>新しい言語
>新しい言語
>新しい言語
>新しい言語


429:デフォルトの名無しさん
08/07/11 12:05:41
まずは自分でコンパイラ程度を作れる技術をつけてからじゃないか?
言語仕様がどうとか言う奴は、どうせ素人だろw

430:デフォルトの名無しさん
08/07/11 12:57:08
コンパイラなんて、誰でも作れる基礎技術じゃん。
大学生が授業でやるくらいのはなし。

431:デフォルトの名無しさん
08/07/11 16:15:29
OpenCLってObjective-Cから簡単に呼び出せるなら問題ないんじゃね?
FFI(Foreign Function Interface)とか経由するのかな?

432:デフォルトの名無しさん
08/07/11 16:22:24
今議論している内容を小学生1年生でも分かるように
説明しなさい。

433:デフォルトの名無しさん
08/07/11 16:35:54
>>432
人にモノを頼むときにはそれなりのw

434:デフォルトの名無しさん
08/07/11 21:41:24
>>432
つくえの上にりんごが一つあります。
さて、このりんごはなぜここにあるのでしょう。
1.りんご農家のおじさんがりんごを育てたから
2.お母さんがかってきたから
3.まさしくんがつくえの上においたから
4.言語仕様
5.苺も食べずにりんごとか素人だろw

435:デフォルトの名無しさん
08/07/12 00:46:40
>>434
私という自我がリンゴを個体としてのリンゴをそこに存在すると認識したからそこにあるのです。

436:デフォルトの名無しさん
08/07/12 01:21:47
>>434という他者が「そこにりんごが一つある」と主張
しているだけだから、正確には>>435は信用した上で認識「することにした」段階かと

437:デフォルトの名無しさん
08/07/12 16:26:01
みなさんは変態さんですか?

438:デフォルトの名無しさん
08/07/12 18:43:08
多態です。

439:デフォルトの名無しさん
08/07/12 23:30:11
>>431
URLリンク(www.apple.com)
>OpenCL is based on the C programming language and has been proposed as an open standard.

URLリンク(en.wikipedia.org)
>The initial OpenCL implementation is reportedly built on LLVM and Clang compiler technology.[citation needed]

参考になりそうなのは、これくらい。。。

440:デフォルトの名無しさん
08/07/13 04:38:19
OpenCLはCUDAらしい。CgではなくCUDAベースだから見かけほどC言語には似てない気がする。

441:デフォルトの名無しさん
08/07/13 17:09:50
Cocoaラッパ待ち

442:デフォルトの名無しさん
08/07/15 18:42:43
>>440
>OpenCLはCUDAらしい

らしいという話はよくでるんだが
ソースって見たことがないんだよな。

443:デフォルトの名無しさん
08/07/17 17:13:14
プログラム初心者がobjective-Cから入るのってマズい?

444:デフォルトの名無しさん
08/07/17 17:29:51
>>443
マズくはないけど資料は少ないから初心者にとっては最初の学習曲線が急勾配になってしまう。
JavaやC++で基本的なアルゴリズムやデザパタを学んだ方が資料が豊富だから楽に勉強できると思う。
ダイナミックな部分を勉強するにはSmalltalk(Squeak)が適している。あとRubyやPythonも。
そういったことを承知の上でどれで始めるのが良いかを選べばいいんじゃないかな。
あとは好みの問題。

445:デフォルトの名無しさん
08/07/17 17:30:36
>>443
あんまりまともなプログラムを書いた事のない俺が思う程度だけど、
他言語をちょっと囓っている+英語の情報も読んでいけるのならアリだと思う。
ただ、全く分からない人がいきなりObjective-Cからだと

・最近は増えてきたものの日本語の情報(Web&書籍)が少なめ。
・AppleのドキュメントもC言語の基礎知識とかを前提にしている感あり。

この辺でちと大変かも。
基本的には意欲だと思う。逆に言えば意欲が弱いとJavaだろうがC言語だろうがPHPだろうが関係なくだめだと思う。

ベストな環境はリアルでもメールでも掲示板でもいいけど疑問に答えて教えてもらえるような人間がいると覚えは早いと思う。

446:デフォルトの名無しさん
08/07/17 17:40:36
>>444
サンクス
各言語の違いが全くわからないのでググって検討してみます
C#よりC++の方がいいんですね

>>445
サンクス
意欲・・・きっかけがそもそもiPhoneという厨な理由だからどこまでいけるか
わかりませんが・・・
>AppleのドキュメントもC言語の基礎知識とかを前提にしている感あり
やっぱりC関連から入った方がいいのかもしれませんね

447:デフォルトの名無しさん
08/07/17 17:51:48
>>446
そういう動機であれば最初はRuby on RailsとかでWebアプリを作成してiPhoneから利用すれば簡単だと思う。
そういう資料はネット上に沢山転がってるからググって見るといいよ。
ある程度プログラミングに自信が付いてからObjective-Cに移行すればスムーズに学習できそう。
こういう順番でやれば、サーバーサイドとクライアントサイドの両方の知識が得られる。
両方の視点でプログラミングできればiPhoneに負荷をかけないプログラムを作成するノウハウも見つけられると思う。

448:デフォルトの名無しさん
08/07/17 18:22:14
>>447
ありがとう。なんて親切なんだ(つД`)・゚・
Ruby on Railsを調べてみます

449:デフォルトの名無しさん
08/07/17 18:46:27
ObjCの前にCはやっといた方が良いけど、C++は覚えなくてOK.
(C++専用のライブラリを使いたいのでもなければ)
C#はiPhoneでの開発には全く不要。

iPhone用プログラムならまずWebアプリから作ってみるというのには賛成。
PHPでベタ書きか、Python + DjangoかRurby + Railsあたりがおすすめ。

450:デフォルトの名無しさん
08/07/17 18:58:24
>>449
dクス。感涙で前が見えない。゚(゚´Д`゚)゜。
うーむ、C++でもC#でもなく初代Cがいいのか・・・
iPhone用ゲームの開発が主目的なんですが、やはりWebアプリから学んでいったほうが
いいんですかね?



次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4922日前に更新/212 KB
担当:undef