1 名前:デフォルトの名無しさん mailto:sage [2014/11/01(土) 13:35:17.70 ID:12FSUUrY.net] Objective-C(オブジェクティブ シー)はプログラミング言語の一種。C言語をベースにSmalltalk型のオブジェクト指向機能を持たせた上位互換言語。 (Wikipedia:ja.wikipedia.org/wiki/Objective-C より) 前スレ Objective-C [ObjC part:8]; peace.2ch.net/test/read.cgi/tech/1356341803/ Objective-C [ObjC part:7]; toro.2ch.net/test/read.cgi/tech/1330330906/ Objective-C [ObjC part:6]; toro.2ch.net/test/read.cgi/tech/1313891268/ Objective-C [ObjC part:5]; hibari.2ch.net/test/read.cgi/tech/1279730299/ Objective-C [ObjC part:4]; pc12.2ch.net/test/read.cgi/tech/1239721860/ Objective-C [ObjC part:3]; ttp://pc12.2ch.net/test/read.cgi/tech/1186543111/ Objective-C ttp://pc11.2ch.net/test/read.cgi/tech/1106983092/ Objective-C ttp://pc5.2ch.net/tech/kako/990/990574267.html
2 名前:デフォルトの名無しさん mailto:sage [2014/11/01(土) 13:35:57.63 ID:12FSUUrY.net] *** プログラム技術板 *** 【マック】Macintoshプログラミング質問箱 peace.2ch.net/test/read.cgi/tech/1113058054/ *** プログラマ板 *** 【Cocoa】Macプログラマのスレ【Objective-C】 kanae.2ch.net/test/read.cgi/prog/1214208397/ *** 新・mac板 *** Macでプログラミング{11} anago.2ch.net/test/read.cgi/mac/1414566499/ Xcode part12 anago.2ch.net/test/read.cgi/mac/1356341840/ let s: プログラミング言語? = Swift[2] anago.2ch.net/test/read.cgi/mac/1408755325/
3 名前:デフォルトの名無しさん mailto:sage [2014/11/01(土) 13:37:58.27 ID:12FSUUrY.net] *** 本家 *** Objective-C プログラミング言語 https://developer.apple.com/jp/devcenter/ios/library/documentation/ObjC.pdf Objective-C Feature Availability Index https://developer.apple.com/Library/mac/releasenotes/ObjectiveC/ObjCAvailabilityIndex/index.html Objective-C Runtime Programming Guide https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Introduction/Introduction.html そのほか英語 https://developer.apple.com/library/mac/navigation/ *** 書籍 *** 荻原本 第3版/Kindle 版も有り amazon.jp/dp/4797368276 HMDTダイナミック本 amazon.jp/dp/4861006414
4 名前:デフォルトの名無しさん mailto:sage [2014/11/01(土) 13:38:53.84 ID:12FSUUrY.net] *** 本家 *** Objective-C 2.0 プログラミング言語 https://developer.apple.com/jp/devcenter/ios/library/documentation/ObjC.pdf Blocksプログラミングトピックス https://developer.apple.com/jp/devcenter/ios/library/documentation/Blocks.pdf 並列プログラミングガイド - GCDとか https://developer.apple.com/jp/devcenter/ios/library/documentation/ConcurrencyProgrammingGuide.pdf
5 名前:デフォルトの名無しさん mailto:sage [2014/11/01(土) 13:39:59.19 ID:12FSUUrY.net] Objective-C Literals ― Clang 3.6 documentation clang.llvm.org/docs/ObjectiveCLiterals.html Apple のランタイムのソースコード www.opensource.apple.com/source/objc4/ ダイナミック Objective-C サイト journal.mycom.co.jp/column/objc/ 英語のサイト Objective-C 入門 cocoadevcentral.com/d/learn_objectivec/ Objective-C Style 1, 2 (変数名のつけかた等) cocoadevcentral.com/articles/000082.php cocoadevcentral.com/articles/000083.php Mike Ash さん(Audio Hijack の中の人)のブログ、 Obj-C のランタイムの話が良く出る mikeash.com/?page=pyblog/ C++ と Objective-C の文法の比較 ktd.club.fr/programmation/objective-c.php
6 名前:デフォルトの名無しさん mailto:sage [2014/11/01(土) 13:42:24.66 ID:12FSUUrY.net] Swift と関連する Obj-C ドキュメント *** 本家 *** Using Swift with Cocoa and Objective-C https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/index.html#//apple_ref/doc/uid/TP40014216 Swift and Objective-C in the Same Project https://developer.apple.com/library/ios/documentation/swift/conceptual/buildingcocoaapps/MixandMatch.html Adopting Modern Objective-C https://developer.apple.com/library/ios/releasenotes/ObjectiveC/ModernizationObjC/AdoptingModernObjective-C/AdoptingModernObjective-C.html Embedding Content with Swift in Objective-C https://developer.apple.com/library/ios/qa/qa1881/_index.html
7 名前:デフォルトの名無しさん [2014/11/01(土) 14:10:57.49 ID:woVuP3aC.net] >>1 スレ立ておつおつ
8 名前:デフォルトの名無しさん mailto:sage [2014/11/01(土) 14:18:06.53 ID:c9/p9yfG.net] 1乙
9 名前:デフォルトの名無しさん mailto:sage [2014/11/02(日) 12:42:31.92 ID:CjBmvnJw.net] ノ ゚.ノヽ , /} ... ,,イ`" 、-' `;_' ' ..::::::::::::::... ,-、 _.._ ( (,(~ヽ'~ ..::::::::::::::::::::::: )'~ レー' 〉 ヽ i`'} .::::::::::::::::::::::: ~つ '-ー、 i | i' ...::::::::::::::::::::::: / < / 。/ ! ......::::::::::::::::::::::::: これは>>1 乙じゃなくて / ~^´ /},-'' ,●:::::::::::::::::::::::::::::::::::: i、 ,i' _,,...,-‐-、/ i :::::::: .::::::::::::: ..ゝ <,,-==、 ,,-,/ .::::::::::: 放射能がうんたら ) {~''~>`v-''`ー゙`'~ ..::::::::: ........::. { レ_ノ ..::::::::. ......::::::::: ノ '' ..::::::: ...::.:...::::::::: .::::::::: ...:......:::::::::::: . .:::::::::::. ..... .. ..:::::::::::::::::::::::: :::. ::::::::::::::::.::::::....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.. :: ::.. .:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::: ::. ::::::::::::::::: :::::::::::::::::::::::::::::: ::::: .:: ::. :::
10 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 00:34:00.72 ID:goVpsTzK.net] 保守
11 名前:デフォルトの名無しさん [2014/11/03(月) 11:15:08.31 ID:aNJ5eidf.net] Cと完全上位互換性をもつオブジェクト指向プログラミング言語はObjective-Cだけです
12 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 11:21:29.32 ID:Avy9gAi6.net] ほう
13 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 14:56:05.14 ID:bxypX2So.net] C++でのCとの違いを説明できたら褒めてやるが、無理だろうな
14 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 15:13:30.86 ID:aNJ5eidf.net] >>13 なんでほめられるために説明せないかんの?w 端的に言えば.cのコードをそのまま.mのコード内にコピペして動くかどうか
15 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 15:28:27.78 ID:bxypX2So.net] よくわかって言っているならだったが、やっぱりなっていう バカがそういうこと言うとObjective-Cを貶めるだけなのでとても迷惑
16 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 15:31:13.39 ID:aNJ5eidf.net] >>15 じゃあ、名誉挽回しておくれ
17 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 15:34:54.55 ID:bxypX2So.net] 馬鹿の尻拭いをなんでせなあかんねん てか>>11 って言っておいた自らそいうのか。恥もなにもないって馬鹿すぎるw
18 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 15:36:33.91 ID:bxypX2So.net] (お前の馬鹿加減のを示すのが名誉挽回なんだがな)
19 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 15:37:34.92 ID:goVpsTzK.net] 発狂した ID:bxypX2So がスレを埋めてくれるようだ
20 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 15:39:32.87 ID:bxypX2So.net] すぐに発狂って。アホらしいのにもほどがある...どこまで底抜けの馬鹿やねん
21 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 15:43:55.19 ID:aNJ5eidf.net] >>17 このスレが寂しい感じだったので、>>11 を書いてみた なので内容はともあれスレが若干の盛り上がりを見せている点は感謝します ところで、勝手に決めつけて馬鹿よばわりするからには、 >>13 みたいな含みのある書き込みはやめて、ちゃんと説明してほしいな
22 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 15:52:30.90 ID:bxypX2So.net] >>21 完全上位互換性ってなんやねんっってことで含みがある書き方しかできんな。で、>>14 だとC++でのCだってだぞ?「Objective-Cだけです」じゃないのは明らかでやっぱりなな結果で含みある書き方でよかったなと C++でのクラス関数じゃない純粋関数だって、Cから呼べるし>>11 のような書き込みこそ止めてほしい
23 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 15:58:51.27 ID:aNJ5eidf.net] >>22 完全上位互換性wたしかにアホな造語だな ちょっと話盛っちゃったテヘッ 言いたかったのは、 C++はCの言語仕様を変えて(拡張)してOOP要素を追加 (つまり同じコードでもC言語とC++で意味が異なるところがある) Objective-CはC+OOPで両者が内部的に独立だと言いたかった
24 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 16:00:54.01 ID:eMtWYvPU.net] オブジェクトに対してメッセージセレクタからperformできるのってC++じゃ無理じゃないの? Objective-Cにはsmalltalk由来のメソッド呼び出し機構があるけどC++でソレを実現するシステムって供給されてたっけ?
25 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 16:03:27.39 ID:bxypX2So.net] >>23 うん、くだらないぞ。C++の拡張であって純粋にCそのままでも使えるのになにを言っているのか Objective-Cがとっても好きなのかもしれないが、おなじくObjective-Cが好きなのがお前と同じと見られる迷惑を考えてほしいw
26 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 16:04:53.72 ID:bxypX2So.net] >>24 それと今の話題は全然違うよ もちろんObjective-CでもCの呼び出しはセレクタじゃないのは理解しているよね? てか、呼び出し方ならC++の方がCっぽいだろうしw
27 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 16:07:34.94 ID:aNJ5eidf.net] >>25 C++のクラスの中にCの関数って定義できたっけ?
28 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 16:07:49.16 ID:bxypX2So.net] (なんかとてもマ
29 名前:ジでアホらしくなったんですけどw) [] [ここ壊れてます]
30 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 16:08:49.67 ID:aNJ5eidf.net] >>25 あなたもObjective-C好きなのか、それはすまなかった…。
31 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 16:10:09.87 ID:aNJ5eidf.net] >>28 そんなこと言わずに頼むよw
32 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 16:10:46.79 ID:bxypX2So.net] >>27 クラスの中になんで定義せなあかんねん @implementation の中に書けるから?クラスの中にあると思ってるの? Objevtive-Cが好きならもっとObjevtive-Cの勉強をしなさいな
33 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 16:12:10.63 ID:bxypX2So.net] >>30 いや、いいかげんもういいやw発狂しそうだからww
34 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 16:13:20.15 ID:aNJ5eidf.net] >>31 言いたいことはまさにそこだったw 要は、Objective-CはOOP部分を「コンパイル」してない
35 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 16:15:28.17 ID:bxypX2So.net] (マジで言っているの?... もういいや)
36 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 16:27:58.86 ID:goVpsTzK.net] 予想通り発狂した ID:bxypX2So がスレ埋めてて笑ったw 最初の数レスだけからして基地外臭が漂ってたからな。
37 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 16:29:25.64 ID:eMtWYvPU.net] >>26 >もちろんObjective-CでもCの呼び出しはセレクタじゃないのは理解しているよね? そりゃ当たり前じゃなかろうか?
38 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 16:36:01.84 ID:bxypX2So.net] >>35 すぐに発狂とかww冗談の通じないヤツ? >>36 いや、なんでいきなり>>24 と言い出すのかと。当たり前でわかっているならいいよ なんなんだこのスレは 発狂して消えようw
39 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 16:40:51.63 ID:aNJ5eidf.net] >>37 ちなみに、 > @implementation > の中に書けるから?クラスの中にあると思ってるの? は違うの?? 恥ずかしながら、てっきりそうだと思ってたけど…
40 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 18:55:13.00 ID:rWxTBzmZ.net] @Implementationの中に書くと前方宣言いらんのやで。豆。
41 名前:デフォルトの名無しさん mailto:sage [2014/11/05(水) 19:33:36.62 ID:WwM6K55L.net] >>39 どゆこと??
42 名前:デフォルトの名無しさん mailto:sage [2014/11/05(水) 20:19:08.13 ID:12YCeqJI.net] 関数プロトタイプをずらずら書かなくていいという事。
43 名前:デフォルトの名無しさん mailto:sage [2014/11/05(水) 21:38:12.10 ID:WwM6K55L.net] >>41 なるほど プロトタイプ宣言が要らないということはわかりました でも、それってつまりどういうことを意味してるの? >>31 とも関連あったりする??
44 名前:デフォルトの名無しさん mailto:sage [2014/11/06(木) 04:04:34.15 ID:iVGs5M/e.net] @implementation〜@end内は、なんかしらんが順番を気にしなくて良くなったから便利って話、 >>31 とは関連は無い。 それと関数はクラスメンバじゃないよ。
45 名前:デフォルトの名無しさん [2014/11/06(木) 21:11:41.06 ID:4Om1v5TR.net] >>43 ただの関数なのでクラスメンバにはなり得ないのはわかる Objective-Cの場合は、こういう風に普通にCの関数をクラスないに 何も考えずに書いちゃっても、しっかりクラスメンバとしてのメソッドと関数を 綺麗に分離できる文法体系になってるのが素晴らしいと思うんだけど Objective-Cだけの話じゃないのかな
46 名前:デフォルトの名無しさん mailto:sage [2014/11/07(金) 05:47:11.47 ID:xhNEAT8L.net] void ClassA::FuncA( void ){ …. } void FuncC( void ){ } void ClassA::FuncB( void ){ }
47 名前:デフォルトの名無しさん [2014/11/07(金) 07:50:28.25 ID:NRYdimHv.net] うむ
48 名前:デフォルトの名無しさん [2014/11/08(土) 07:39:56.00 ID:p1cfQewS.net] >>45 でも呼び出しのときは、Objective-Cなら、メッセージ式と普通の関数呼び出しで 全く違うけど、C++だと、クラス内からだと区別つかなくね? thisポインタ使わないこと多いし
49 名前:デフォルトの名無しさん mailto:sage [2014/11/08(土) 08:17:04.46 ID:FLsnICPe.net] でもでもうるせーやつ。未熟極まりないのに自覚がないのは恥ずかしくないのか 2chで匿名だからか
50 名前:デフォルトの名無しさん mailto:sage [2014/11/08(土) 08:30:45.39 ID:p1cfQewS.net] >>48 …。
51 名前:デフォルトの名無しさん mailto:sage [2014/11/08(土) 11:45:42.73 ID:p1cfQewS.net] しかしなんでこの言われようなんだろう でもでもって、初レスだけど何か勘違いしてんのかな 結構、プログラミングスキル以前に人間性に難ありな人が多いのかねプログラマって
52 名前:デフォルトの名無しさん mailto:sage [2014/11/08(土) 11:50:13.50 ID:imGXi3N2.net] プログラマーとか関係ない ここが2chだからでしょ
53 名前:デフォルトの名無しさん mailto:sage [2014/11/08(土) 12:01:11.42 ID:FLsnICPe.net] >>50 初レスって。うそくせーなあーw 本当に別人ならすまんかったな だが、本当に上にいる「全く同じようなヤツ」と別人なら、このスレはお先真っ暗だなw (別人でなんで「でも」から始まるのか??ああ、同じ思考・し好だからか…んなアホなっと思いたいw)
54 名前:デフォルトの名無しさん mailto:sage [2014/11/08(土) 13:28:07.51 ID:p1cfQewS.net] いやもういいっす 別に大した内容じゃないですし
55 名前:デフォルトの名無しさん [2014/11/13(木) 08:03:27.53 ID:TEV0paWH.net] セレクタと関数ポインタの違いがよくわからないのですが、 どなたかおわかりになりますでしょうか?
56 名前:デフォルトの名無しさん mailto:sage [2014/11/13(木) 08:06:46.99 ID:1iY71Yqc.net] selfの有無じゃね
57 名前:デフォルトの名無しさん mailto:sage [2014/11/13(木) 08:16:17.56 ID:lmsym3p3.net] SEL はメソッドの名前でしょう。 メソッドは、クラスとセレクタとクラスorインスタンスのどちらであるかによって得られる。 Method class_getInstanceMethod(Class cls, SEL name) Method class_getClassMethod(Class cls, SEL name) そしてメソッドは実装である関数ポインタ、IMPを持っている。
58 名前:デフォルトの名無しさん mailto:sage [2014/11/13(木) 12:31:08.08 ID:Jx3Jj8A2.net] セレクタ: レシーバが、実行する関数実装の特定に用いる識別子 関数ポインタ: ある「ただひとつの」関数実装へのポインタ セレクタは複数の関数実装に結びつきうる(ポリモーフィズム)が、関数ポインタはそうでない セレクタに対応する関数実装のうち、ただひとつを特定したものがIMP。これがCの関数ポインタそのもの。
59 名前:デフォルトの名無しさん mailto:sage [2014/11/13(木) 12:47:07.08 ID:bBKFMYMs.net] メソッド呼び出しの仕組みが解れば違いも解るだろう。
60 名前:デフォルトの名無しさん mailto:sage [2014/11/13(木) 12:48:05.58 ID:dS9drdDA.net] message送っても別スレッドになる訳じゃない
61 名前:デフォルトの名無しさん [2014/11/13(木) 22:15:25.29 ID:TEV0paWH.net] みなさま、早速のレスをいただきありがとうございます。 メソッドには、セレクタという名前がついていて、IMPという関数ポインタも 同時に持っているということですね >>57 さんのレスで、セレクタはポリモーフィズムを持つとのことですが、 この意味は、例えば引数の型違いで定義されたオーバーロードされた メソッドのセレクタは同じになるが、オーバーロードされているそれぞれの メソッドのIMPはそれぞれ異なるアドレス値(関数ポインタ)を持つという 理解でよろしいでしょうか?
62 名前:デフォルトの名無しさん mailto:sage [2014/11/13(木) 23:46:43.15 ID:P2x2UIfS.net] >>60 オーバーライドとオーバーロード(多重定義)をごっちゃにしてるよ というか、そもそも Objective-C にオーバーロード(多重定義)は無い
63 名前:デフォルトの名無しさん mailto:sage [2014/11/14(金) 06:16:40.90 ID:kMYuuo8x.net] >>60 あれこれ考えるより、まずここ読んだ方が早いだろう。 news.mynavi.jp/column/objc/018/ あとは自分でいろいろやってみりゃわかる。
64 名前:デフォルトの名無しさん mailto:sage [2014/11/14(金) 08:01:02.15 ID:DLTXyjTW.net] >>60 例えば、継承関係のないクラスAとB(どっちもNSObjectの直接のサブクラスとか)があって、どっちもdoSomethingメソッドを持ってるとする。 IMPはメソッドの実体を指してるから、AのdoSomethingとBのdoSomethingではIMPは異なるし、AのインスタンスをBのIMPに喰わせると誤動作する。 セレクタは"doSomething"というメソッド名そのものなので、同じセレクタを使ってAにメッセージを送ればAのメソッドが、Bに送ればBのメソッドが実行される。
65 名前:デフォルトの名無しさん [2014/11/15(土) 07:45:53.26 ID:Cmo7am1O.net] 皆さん、ありがとうございます レスおそくなりました >>61 Objective-Cにはオーバーロードはないのですね Javaは勉強していたので、オーバーライドとオーバーロードの違いは 理解していましたが、Objective-Cではないとは思いませんでした… メソッドの引数の型は、書き方からすると、もしかしてキャストなんでしょうか。。 >>62 ありがとうございます そのページを読んで勉強してみます >>63 なるほど、非常によくわかりました どうもありがとうございます
66 名前:デフォルトの名無しさん mailto:sage [2014/11/15(土) 12:19:59.41 ID:atvcQtVA.net] >>61 は>>60 がオーバーロードとオーバーライドをごっちゃにしていると言っているけど、ごっちゃにはなってないと思う で、オーバーロードが無いということだけど、例えばC++やJavaみたいに、 同じsomethingというメソッドで、引数がstd::stringか、intかで、 void something(std::string str); void something(int num); という風に同じ名前のメソッドを同じクラスで定義して、引数の型によって切り替えることはできないよ、ということ。 引数によって処理を変えたい場合は、With〜とかUsing〜とかつけて、セレクタを変えるのが、Objective-Cの作法。 - (void)somethingWithString:(NSString *)str; - (void)somethingWithInteger:(NSInteger)num;
67 名前:デフォルトの名無しさん mailto:sage [2014/11/15(土) 12:23:50.50 ID:lOoQn8Qz.net] >>64 の >Objective-Cにはオーバーロードはないのですね >Javaは勉強していたので、オーバーライドとオーバーロードの違いは >理解していましたが、Objective-Cではないとは思いませんでした… で終わっていることじゃ?何を改めてなのかイミフ
68 名前:デフォルトの名無しさん mailto:sage [2014/11/15(土) 12:26:57.21 ID:lOoQn8Qz.net] >>64 >メソッドの引数の型は、書き方からすると、もしかしてキャストなんでしょうか。。 キャストではないよ型だよ。Cと同じだよ。単なる値渡し 暗黙的型変換があるけど、キャストとは呼ばないだろう
69 名前:デフォルトの名無しさん mailto:sage [2014/11/15(土) 12:29:54.67 ID:atvcQtVA.net] >>66 悪い悪い、ようするに後半の引数の型によって処理をわけたいならObjective-Cではセレクタを変えろということを言いたかったんだけど 前振りでオーバーロードの説明を挟んだせいでくどくなっちゃった そんなに怒るなよ
70 名前:デフォルトの名無しさん mailto:sage [2014/11/15(土) 12:33:58.59 ID:lOoQn8Qz.net] なんで怒ることあるねん 読んでもなんで書いているのか意味分からないから意味分からないってだけだよ。怒られるような書いたの?w オーバーロードが無いんだからそらそうだよな、ふーんってくらいだよ
71 名前:デフォルトの名無しさん [2014/11/15(土) 13:43:28.84 ID:Cmo7am1O.net] ありがとうございます なんだか、私の書き方が悪く、いろいろとすみません >>65 そうですね 私がなじみがあるのはそのように引数の型や数が違うオーバーロードですが、 Objective-Cでは同一セレクタでのオーバーロードは不可なのですね 確かにLCCでつないで〜With〜のようなメソッド名はCocoaではいろいろ見かけます >>67 やはり型なのですか もしかして、キャストだから実行時に解決されてオーバーロードという仕組みが なかったりするのかなと思いましたが、キャストではないのですね >>62 さんのリンク読んでみると、(char *)型のmethod_typesというものも あるようなので、それをみればオーバーロードの実装も出来るのではと 思いましたが、Objective-Cのポリシーなんでしょうかね…
72 名前:デフォルトの名無しさん mailto:sage [2014/11/15(土) 13:51:55.93 ID:lOoQn8Qz.net] 無くたって別にどうということは無いと思うんだけど、なぜ拘る?w
73 名前:デフォルトの名無しさん [2014/11/15(土) 13:59:38.62 ID:Cmo7am1O.net] >>71 あっ、いや、特にこだわっているというわけではないのですけど、 Java, C++, C#などではいわゆるオーバーロードが出来たので、 ちょっとビックリしました… 汎用的なライブラリを作る時は、同一メソッド名の型違いでオーバーロード しておいた方がいろいろと使い勝手のよいものになるので、結構重宝してた のですが、Objective-C使いさんは、型違いは全て>>65 さんのように セレクタを変えて使っているんですね よくよく考えると、引数の数違いの場合は、必然的に:が追加されてセレクタが 変わるので、そもそもオーバーロードという概念ははじめから考えてなかった のかもしれませんが…
74 名前:デフォルトの名無しさん mailto:sage [2014/11/15(土) 14:06:01.65 ID:lOoQn8Qz.net] >>72 使い勝手いい?よくわかんないなあ。単に関数名/メソッド名考えるのめんどくせーってのが緩和されるぐらいのような メソッド呼び出しから始まったようだけど、Message Forwardingをちょっと勉強したらおもろいよ。なんでメッセージなのかもわかるかと(ここらがオーバーロードに関連しているような関連していないような)
75 名前:デフォルトの名無しさん [2014/11/15(土) 14:15:15.80 ID:Cmo7am1O.net] >>73 使う側からしても、型が違ってもメソッド名が同じな方が使いやすいかなと 思ったりしますが、確かになくてもよいといえばよいですね 使う側も渡す引数の型を意識してコーディングするので、むしろ よいかもしれませんね Message Forwardingですか。この辺りを読み込んでみます https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtForwarding.html ありがとうございます
76 名前:デフォルトの名無しさん mailto:sage [2014/11/15(土) 14:35:07.73 ID:O7G7JpVO.net] メソッドの解決を名前だけでなく型でもやろうとすると何気に大変 仮にあるクラスAに -(void)foo:(NSObject*)x; -(void)foo:(NSNumber*)x; -(void)foo:(NSString*)x; という3つのメソッドがあったとして [a foo:x]; のように呼んだとき、どのメソッドを呼べばいいかはxの型だけでなく継承関係も調べないといけない 例えばxがNSMutableStringだったらNSStringのやつを呼んでほしいだろう NSMutableStringはNSObjectでもあるわけだがNSStringの方がより特殊なので優先度が高い そうなるとメソッドを優先度で並べて型が該当するか上から順に調べねばなるまい 実行時のコストとして許容できるかどうか
77 名前:デフォルトの名無しさん mailto:sage [2014/11/15(土) 15:19:15.90 ID:RzrSosLr.net] 藻舞は何をオーバーロードで、クダ巻いとるんじゃ。 普段からそんなに高品質な言語ばっかり、使っているからじゃ JavaScriptなんか、引数の型を一々、 プログラマーがプログラミングして確かめるんだぞw そうでないと、まともに動かんわいw グダグダ言う前に、これくらい自分でプログラミングせえ!
78 名前:デフォルトの名無しさん mailto:sage [2014/11/16(日) 19:14:57.26 ID:PTffpO77.net] 基本的にObjective-Cは クラスはロボットで「これやれ」って命令すれば勝手にやってくれる もしわかんないことがあったら「なにができるんだ?」って聞けば 「これができますギチギチ」って答えてくれる そういう風じゃないと命令者に複雑さが伝播してオブジェクト単位で弄れないだろ? っていうオブジェクト指向の思想理念に忠実だからな…
79 名前:デフォルトの名無しさん mailto:sage [2014/11/16(日) 19:35:21.60 ID:4B0DOTZq.net] Objective-C、やはり素晴らしいじゃないか
80 名前:デフォルトの名無しさん mailto:sage [2014/11/16(日) 20:32:06.09 ID:y1asw4VY.net] Objective-CやSmalltalk、Rubyの失敗によって、 そういうアラン・ケイのメッセージ送信パラダイムが間違っていたということが証明されたから C++やJava風の静的束縛パラダイムに移行しようということでできたのがSwiftなんだけどな
81 名前:デフォルトの名無しさん mailto:sage [2014/11/16(日) 21:25:59.70 ID:jkITM5Sp.net] >>79 > Objective-CやSmalltalk、Rubyの失敗によって、 失敗したのはストラウストラップ流オブジェクト指向の C++ MS はコンポーネントの動的結合を実現するために COM を開発したが、 結局は対応しきれずに C# へ移行せざるをえなかった この移行に伴う混乱が Vista 以降の度重なる開発遅延をまねいた > C++やJava風の静的束縛パラダイムに移行しようということでできたのがSwiftなんだけどな いや、Swift は(Objective-C と同じく)動的束縛と静的束縛のハイブリッドだよ コンポーネント間の結合はこれまで通り(メッセージ送信パラダイムによる)動的束縛が利用される コンポーネント内部の実装に静的束縛を用いるのもこれまでと同じだけど、違うのは メモリ保護の無い C を捨てて安全なプログラミングを可能にした点 MS は MFC(C++) を捨てて
82 名前: .Net(C#) へ移行せざるを得なかった Apple は言語を Objective-C から Swift へと移行しようとしているけど、 実行環境は Cocoa を継続して利用できている 結果を見れば、失敗したのは ストラウストラップ流オブジェクト指向の C++ なんだよ [] [ここ壊れてます]
83 名前:デフォルトの名無しさん mailto:sage [2014/11/16(日) 21:35:15.07 ID:cjwSUl7C.net] >Objective-CやSmalltalk、Rubyの失敗によって、 …どれも失敗してないように見えるが… というか、これから歴史が判断するとは思うが C++みたいな密なコーディングを必要とするのに規約ゆるゆるの 言語で起きた混乱のせいで、規約カッチリすればイインダヨ!な 関数型が注目されてるけれど、結局密なプログラミングは 後で他人がソースを弄りにくいという根本的な問題をほっかむりしてる っつーよりそもそも"そういうもの"として問題にもしてないようにも見えるので 遠からずまた一過性の時代の徒花として忘れられて swiftに取り入れられてるみたいに「そういう書き方できたら便利だね」的な 過去に提唱された便利概念に落ち着いてゆくと思う。
84 名前:デフォルトの名無しさん mailto:sage [2014/11/17(月) 00:12:14.50 ID:ZeG9cYbU.net] blocksやgcの件からわかるようにObjective-Cが古臭く拡張しづらくなったのと、 静的言語の方がリファクタリングツール等のIDE連携ツールを作りやすいから移行し ただけだと思う。
85 名前:デフォルトの名無しさん mailto:sage [2014/11/17(月) 02:45:35.45 ID:cESIq0Cd.net] > というか、これから歴史が判断するとは思うがC++みたいな密なコーディングを必要とするのに規約ゆるゆるの言語で起きた混乱のせいで、規約カッチリ > すればイインダヨ!な関数型が注目されてるけれど、結局密なプログラミングは後で他人がソースを弄りにくいという根本的な問題をほっかむりしてるっ > つーよりそもそも"そういうもの"として問題にもしてないようにも見えるので遠からずまた一過性の時代の徒花として忘れられてswiftに取り入れられてる > みたいに「そういう書き方できたら便利だね」的な過去に提唱された便利概念に落ち着いてゆくと思う。 これで一文
86 名前:デフォルトの名無しさん mailto:sage [2014/11/17(月) 04:06:46.80 ID:mzmuQz/D.net] パラダイムと規約に関係があるとは知らなかったよ
87 名前:デフォルトの名無しさん mailto:sage [2014/11/17(月) 08:16:03.02 ID:zHATB9tj.net] >>82 GCは よりな ARC が現れたから単に消えただけだじゃね System Preferences PaneがGC必須だったようにARC出るまではGC推すつもりあったかと BlocksだっていろいろBlocksバージョンのメソッド付け加えているように、また、新しいメソッドはBlocksのみだったりでBlocksは推してはいるだろ 拡張しづらくなったのではなく、ちゃんぽん/カオス度がだろう
88 名前:デフォルトの名無しさん mailto:sage [2014/11/17(月) 16:59:55.46 ID:oWS5dSpx.net] うわぁ、頭悪そうな文章。 >>85 言葉が足りないとか、馬鹿とか言われたりしない?w
89 名前:デフォルトの名無しさん mailto:sage [2014/11/17(月) 17:27:43.93 ID:3Q29PYZj.net] 「あまり強い言葉を遣うなよ、弱く見えるぞ。」
90 名前:デフォルトの名無しさん mailto:sage [2014/11/17(月) 17:35:24.26 ID:zHATB9tj.net] >>86 お前の程度に合わせて書いてあげることもできるが、お前の程度がわからないのでなあ。すまんな
91 名前:デフォルトの名無しさん mailto:sage [2014/11/17(月) 17:37:36.18 ID:YUWmI/Qt.net] エンジニアになりたいと言う人(若い女の子)が面接に来ていたので話を立ち聞きした どんな分野やりたいのか聴かれてweb系のエンジニアと言ってたが どんな勉強してきたのかという問いにはC/C++をやりましたと なぜC/C++なの?と聞かれて 色んな言語の基礎になる言語だからだと教えてもらったので・・・ と答えていた 面接してる会社はデザイン会社だった
92 名前:デフォルトの名無しさん mailto:sage [2014/11/17(月) 19:21:26.75 ID:JwoO3TSc.net] ID が Qt
93 名前:デフォルトの名無しさん mailto:sage [2014/11/17(月) 19:37:02.05 ID:kiWqo9or.net] QtはライセンスがGPLだから駄目
94 名前:デフォルトの名無しさん mailto:sage [2014/11/18(火) 08:24:29.44 ID:kE9ttoYj.net] >>87 これ 「弱いやつほどよく吠える」
95 名前:デフォルトの名無しさん mailto:sage [2014/11/18(火) 09:48:40.84 ID:vZbeIuzJ.net] >>92 頭が―か?
96 名前:デフォルトの名無しさん mailto:sage [2014/11/19(水) 00:25:30.52 ID:Uu5NHBSW.net] 医療プログラマーが超高難易度の免許制に / フリーソフトやオープンソースの無作為配布も全面禁止 fox.2ch.net/test/read.cgi/poverty/1416286592/
97 名前:デフォルトの名無しさん mailto:sage [2014/11/19(水) 12:35:17.12 ID:JZ2oYyd9.net] >>89 gccですか?VCですかそれともObjective-Cですか?と聞かなかった会社が糞
98 名前:デフォルトの名無しさん [2014/11/19(水) 23:16:15.32 ID:CB1agnbxA] コードで画面をタップさせたように書きたいんだが、できるかな?iOSです。
99 名前:デフォルトの名無しさん [2014/12/01(月) 22:56:51.54 ID:m0wFwcIO.net] Objective-CをCocoa以外で活用してるケースってあるのかね
100 名前:デフォルトの名無しさん mailto:sage [2014/12/06(土) 17:27:29.67 ID:0UG7+0Oi.net] Effective Objective-C 2.0