-
プログラム
-
Objective-C [ObjC part:8.1]; [転載禁止]©2ch.net
-
UPLIFTで広告なしで体験しましょう!快適な閲覧ライフをお約束します!
Objective-C(オブジェクティブ シー)はプログラミング言語の一種。C言語をベースにSmalltalk型のオブジェクト指向機能を持たせた上位互換言語。
(Wikipedia:http://ja.wikipedia.org/wiki/Objective-C より)
前スレ
Objective-C [ObjC part:8];
http://peace.2ch.net...cgi/tech/1356341803/
Objective-C [ObjC part:7];
http://toro.2ch.net/...cgi/tech/1330330906/
Objective-C [ObjC part:6];
http://toro.2ch.net/...cgi/tech/1313891268/
Objective-C [ObjC part:5];
http://hibari.2ch.ne...cgi/tech/1279730299/
Objective-C [ObjC part:4];
http://pc12.2ch.net/...cgi/tech/1239721860/
Objective-C [ObjC part:3];
http://pc12.2ch.net/...cgi/tech/1186543111/
Objective-C
http://pc11.2ch.net/...cgi/tech/1106983092/
Objective-C
http://pc5.2ch.net/t...o/990/990574267.html - コメントを投稿する
-
*** プログラム技術板 ***
【マック】Macintoshプログラミング質問箱
http://peace.2ch.net...cgi/tech/1113058054/
*** プログラマ板 ***
【Cocoa】Macプログラマのスレ【Objective-C】
http://kanae.2ch.net...cgi/prog/1214208397/
*** 新・mac板 ***
Macでプログラミング{11}
http://anago.2ch.net....cgi/mac/1414566499/
Xcode part12
http://anago.2ch.net....cgi/mac/1356341840/
let s: プログラミング言語? = Swift[2]
http://anago.2ch.net....cgi/mac/1408755325/ -
*** 本家 ***
Objective-C プログラミング言語
https://developer.ap...cumentation/ObjC.pdf
Objective-C Feature Availability Index
https://developer.ap...lityIndex/index.html
Objective-C Runtime Programming Guide
https://developer.ap...on/Introduction.html
そのほか英語
https://developer.ap...rary/mac/navigation/
*** 書籍 ***
荻原本 第3版/Kindle 版も有り
http://amazon.jp/dp/4797368276
HMDTダイナミック本
http://amazon.jp/dp/4861006414 -
*** 本家 ***
Objective-C 2.0 プログラミング言語
https://developer.ap...cumentation/ObjC.pdf
Blocksプログラミングトピックス
https://developer.ap...mentation/Blocks.pdf
並列プログラミングガイド - GCDとか
https://developer.ap...ProgrammingGuide.pdf -
Objective-C Literals ― Clang 3.6 documentation
http://clang.llvm.or...ectiveCLiterals.html
Apple のランタイムのソースコード
http://www.opensourc...le.com/source/objc4/
ダイナミック Objective-C サイト
http://journal.mycom.co.jp/column/objc/
英語のサイト
Objective-C 入門
http://cocoadevcentr.../d/learn_objectivec/
Objective-C Style 1, 2 (変数名のつけかた等)
http://cocoadevcentr.../articles/000082.php
http://cocoadevcentr.../articles/000083.php
Mike Ash さん(Audio Hijack の中の人)のブログ、 Obj-C のランタイムの話が良く出る
http://mikeash.com/?page=pyblog/
C++ と Objective-C の文法の比較
http://ktd.club.fr/p...tion/objective-c.php -
Swift と関連する Obj-C ドキュメント
*** 本家 ***
Using Swift with Cocoa and Objective-C
https://developer.ap...f/doc/uid/TP40014216
Swift and Objective-C in the Same Project
https://developer.ap...pps/MixandMatch.html
Adopting Modern Objective-C
https://developer.ap...dernObjective-C.html
Embedding Content with Swift in Objective-C
https://developer.ap...a/qa1881/_index.html -
>>1
スレ立ておつおつ -
1乙
-
ノ ゚.ノヽ , /} ...
,,イ`" 、-' `;_' ' ..::::::::::::::...
,-、 _.._ ( (,(~ヽ'~ ..:::::::::::::::::::::::
)'~ レー' 〉 ヽ i`'} .:::::::::::::::::::::::
~つ '-ー、 i | i' ...:::::::::::::::::::::::
/ < / 。/ ! ......::::::::::::::::::::::::: これは>>1乙じゃなくて
/ ~^´ /},-'' ,●::::::::::::::::::::::::::::::::::::
i、 ,i' _,,...,-‐-、/ i :::::::: .:::::::::::::
..ゝ <,,-==、 ,,-,/ .::::::::::: 放射能がうんたら
) {~''~>`v-''`ー゙`'~ ..::::::::: ........::.
{ レ_ノ ..::::::::. ......:::::::::
ノ '' ..::::::: ...::.:...:::::::::
.::::::::: ...:......:::::::::::: .
.:::::::::::. ..... .. ..:::::::::::::::::::::::: :::.
::::::::::::::::.::::::....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.. :: ::..
.:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::: ::.
::::::::::::::::: :::::::::::::::::::::::::::::: :::::
.:: ::. ::: -
保守
-
Cと完全上位互換性をもつオブジェクト指向プログラミング言語はObjective-Cだけです
-
ほう
-
C++でのCとの違いを説明できたら褒めてやるが、無理だろうな
-
よくわかって言っているならだったが、やっぱりなっていう
バカがそういうこと言うとObjective-Cを貶めるだけなのでとても迷惑 -
>>15
じゃあ、名誉挽回しておくれ -
馬鹿の尻拭いをなんでせなあかんねん
てか>>11って言っておいた自らそいうのか。恥もなにもないって馬鹿すぎるw -
(お前の馬鹿加減のを示すのが名誉挽回なんだがな)
-
発狂した ID:bxypX2So がスレを埋めてくれるようだ
-
すぐに発狂って。アホらしいのにもほどがある...どこまで底抜けの馬鹿やねん
-
>>22
完全上位互換性wたしかにアホな造語だな
ちょっと話盛っちゃったテヘッ
言いたかったのは、
C++はCの言語仕様を変えて(拡張)してOOP要素を追加
(つまり同じコードでもC言語とC++で意味が異なるところがある)
Objective-CはC+OOPで両者が内部的に独立だと言いたかった -
オブジェクトに対してメッセージセレクタからperformできるのってC++じゃ無理じゃないの?
Objective-Cにはsmalltalk由来のメソッド呼び出し機構があるけどC++でソレを実現するシステムって供給されてたっけ? -
>>23
うん、くだらないぞ。C++の拡張であって純粋にCそのままでも使えるのになにを言っているのか
Objective-Cがとっても好きなのかもしれないが、おなじくObjective-Cが好きなのがお前と同じと見られる迷惑を考えてほしいw -
>>25
C++のクラスの中にCの関数って定義できたっけ? -
(なんかとてもマジでアホらしくなったんですけどw)
-
>>25
あなたもObjective-C好きなのか、それはすまなかった…。 -
>>28
そんなこと言わずに頼むよw -
>>27
クラスの中になんで定義せなあかんねん
@implementation
の中に書けるから?クラスの中にあると思ってるの?
Objevtive-Cが好きならもっとObjevtive-Cの勉強をしなさいな -
>>30
いや、いいかげんもういいやw発狂しそうだからww -
(マジで言っているの?... もういいや)
-
予想通り発狂した ID:bxypX2So がスレ埋めてて笑ったw
最初の数レスだけからして基地外臭が漂ってたからな。 -
@Implementationの中に書くと前方宣言いらんのやで。豆。
-
>>39
どゆこと?? -
関数プロトタイプをずらずら書かなくていいという事。
-
>>43
ただの関数なのでクラスメンバにはなり得ないのはわかる
Objective-Cの場合は、こういう風に普通にCの関数をクラスないに
何も考えずに書いちゃっても、しっかりクラスメンバとしてのメソッドと関数を
綺麗に分離できる文法体系になってるのが素晴らしいと思うんだけど
Objective-Cだけの話じゃないのかな -
void ClassA::FuncA( void ){
….
}
void FuncC( void ){
}
void ClassA::FuncB( void ){
} -
うむ
-
でもでもうるせーやつ。未熟極まりないのに自覚がないのは恥ずかしくないのか
2chで匿名だからか -
>>48
…。 -
しかしなんでこの言われようなんだろう
でもでもって、初レスだけど何か勘違いしてんのかな
結構、プログラミングスキル以前に人間性に難ありな人が多いのかねプログラマって -
プログラマーとか関係ない
ここが2chだからでしょ -
>>50
初レスって。うそくせーなあーw 本当に別人ならすまんかったな
だが、本当に上にいる「全く同じようなヤツ」と別人なら、このスレはお先真っ暗だなw
(別人でなんで「でも」から始まるのか??ああ、同じ思考・し好だからか…んなアホなっと思いたいw) -
いやもういいっす
別に大した内容じゃないですし -
セレクタと関数ポインタの違いがよくわからないのですが、
どなたかおわかりになりますでしょうか? -
selfの有無じゃね
-
SEL はメソッドの名前でしょう。
メソッドは、クラスとセレクタとクラスorインスタンスのどちらであるかによって得られる。
Method class_getInstanceMethod(Class cls, SEL name)
Method class_getClassMethod(Class cls, SEL name)
そしてメソッドは実装である関数ポインタ、IMPを持っている。 -
セレクタ: レシーバが、実行する関数実装の特定に用いる識別子
関数ポインタ: ある「ただひとつの」関数実装へのポインタ
セレクタは複数の関数実装に結びつきうる(ポリモーフィズム)が、関数ポインタはそうでない
セレクタに対応する関数実装のうち、ただひとつを特定したものがIMP。これがCの関数ポインタそのもの。 -
メソッド呼び出しの仕組みが解れば違いも解るだろう。
-
message送っても別スレッドになる訳じゃない
-
みなさま、早速のレスをいただきありがとうございます。
メソッドには、セレクタという名前がついていて、IMPという関数ポインタも
同時に持っているということですね
>>57さんのレスで、セレクタはポリモーフィズムを持つとのことですが、
この意味は、例えば引数の型違いで定義されたオーバーロードされた
メソッドのセレクタは同じになるが、オーバーロードされているそれぞれの
メソッドのIMPはそれぞれ異なるアドレス値(関数ポインタ)を持つという
理解でよろしいでしょうか? -
>>60
例えば、継承関係のないクラスAとB(どっちもNSObjectの直接のサブクラスとか)があって、どっちもdoSomethingメソッドを持ってるとする。
IMPはメソッドの実体を指してるから、AのdoSomethingとBのdoSomethingではIMPは異なるし、AのインスタンスをBのIMPに喰わせると誤動作する。
セレクタは"doSomething"というメソッド名そのものなので、同じセレクタを使ってAにメッセージを送ればAのメソッドが、Bに送ればBのメソッドが実行される。 -
>>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; -
>>64 の
>Objective-Cにはオーバーロードはないのですね
>Javaは勉強していたので、オーバーライドとオーバーロードの違いは
>理解していましたが、Objective-Cではないとは思いませんでした…
で終わっていることじゃ?何を改めてなのかイミフ -
>>66
悪い悪い、ようするに後半の引数の型によって処理をわけたいならObjective-Cではセレクタを変えろということを言いたかったんだけど
前振りでオーバーロードの説明を挟んだせいでくどくなっちゃった
そんなに怒るなよ -
なんで怒ることあるねん
読んでもなんで書いているのか意味分からないから意味分からないってだけだよ。怒られるような書いたの?w
オーバーロードが無いんだからそらそうだよな、ふーんってくらいだよ -
ありがとうございます
なんだか、私の書き方が悪く、いろいろとすみません
>>65
そうですね
私がなじみがあるのはそのように引数の型や数が違うオーバーロードですが、
Objective-Cでは同一セレクタでのオーバーロードは不可なのですね
確かにLCCでつないで〜With〜のようなメソッド名はCocoaではいろいろ見かけます
>>67
やはり型なのですか
もしかして、キャストだから実行時に解決されてオーバーロードという仕組みが
なかったりするのかなと思いましたが、キャストではないのですね
>>62さんのリンク読んでみると、(char *)型のmethod_typesというものも
あるようなので、それをみればオーバーロードの実装も出来るのではと
思いましたが、Objective-Cのポリシーなんでしょうかね… -
無くたって別にどうということは無いと思うんだけど、なぜ拘る?w
-
>>72
使い勝手いい?よくわかんないなあ。単に関数名/メソッド名考えるのめんどくせーってのが緩和されるぐらいのような
メソッド呼び出しから始まったようだけど、Message Forwardingをちょっと勉強したらおもろいよ。なんでメッセージなのかもわかるかと(ここらがオーバーロードに関連しているような関連していないような) -
>>73
使う側からしても、型が違ってもメソッド名が同じな方が使いやすいかなと
思ったりしますが、確かになくてもよいといえばよいですね
使う側も渡す引数の型を意識してコーディングするので、むしろ
よいかもしれませんね
Message Forwardingですか。この辺りを読み込んでみます
https://developer.ap.../ocrtForwarding.html
ありがとうございます -
メソッドの解決を名前だけでなく型でもやろうとすると何気に大変
仮にあるクラスAに
-(void)foo:(NSObject*)x;
-(void)foo:(NSNumber*)x;
-(void)foo:(NSString*)x;
という3つのメソッドがあったとして
[a foo:x];
のように呼んだとき、どのメソッドを呼べばいいかはxの型だけでなく継承関係も調べないといけない
例えばxがNSMutableStringだったらNSStringのやつを呼んでほしいだろう
NSMutableStringはNSObjectでもあるわけだがNSStringの方がより特殊なので優先度が高い
そうなるとメソッドを優先度で並べて型が該当するか上から順に調べねばなるまい
実行時のコストとして許容できるかどうか -
藻舞は何をオーバーロードで、クダ巻いとるんじゃ。
普段からそんなに高品質な言語ばっかり、使っているからじゃ
JavaScriptなんか、引数の型を一々、
プログラマーがプログラミングして確かめるんだぞw
そうでないと、まともに動かんわいw
グダグダ言う前に、これくらい自分でプログラミングせえ! -
基本的にObjective-Cは
クラスはロボットで「これやれ」って命令すれば勝手にやってくれる
もしわかんないことがあったら「なにができるんだ?」って聞けば
「これができますギチギチ」って答えてくれる
そういう風じゃないと命令者に複雑さが伝播してオブジェクト単位で弄れないだろ?
っていうオブジェクト指向の思想理念に忠実だからな… -
Objective-C、やはり素晴らしいじゃないか
-
Objective-CやSmalltalk、Rubyの失敗によって、
そういうアラン・ケイのメッセージ送信パラダイムが間違っていたということが証明されたから
C++やJava風の静的束縛パラダイムに移行しようということでできたのがSwiftなんだけどな -
>>79
> Objective-CやSmalltalk、Rubyの失敗によって、
失敗したのはストラウストラップ流オブジェクト指向の C++
MS はコンポーネントの動的結合を実現するために COM を開発したが、
結局は対応しきれずに C# へ移行せざるをえなかった
この移行に伴う混乱が Vista 以降の度重なる開発遅延をまねいた
> C++やJava風の静的束縛パラダイムに移行しようということでできたのがSwiftなんだけどな
いや、Swift は(Objective-C と同じく)動的束縛と静的束縛のハイブリッドだよ
コンポーネント間の結合はこれまで通り(メッセージ送信パラダイムによる)動的束縛が利用される
コンポーネント内部の実装に静的束縛を用いるのもこれまでと同じだけど、違うのは
メモリ保護の無い C を捨てて安全なプログラミングを可能にした点
MS は MFC(C++) を捨てて .Net(C#) へ移行せざるを得なかった
Apple は言語を Objective-C から Swift へと移行しようとしているけど、
実行環境は Cocoa を継続して利用できている
結果を見れば、失敗したのは ストラウストラップ流オブジェクト指向の C++ なんだよ -
>Objective-CやSmalltalk、Rubyの失敗によって、
…どれも失敗してないように見えるが…
というか、これから歴史が判断するとは思うが
C++みたいな密なコーディングを必要とするのに規約ゆるゆるの
言語で起きた混乱のせいで、規約カッチリすればイインダヨ!な
関数型が注目されてるけれど、結局密なプログラミングは
後で他人がソースを弄りにくいという根本的な問題をほっかむりしてる
っつーよりそもそも"そういうもの"として問題にもしてないようにも見えるので
遠からずまた一過性の時代の徒花として忘れられて
swiftに取り入れられてるみたいに「そういう書き方できたら便利だね」的な
過去に提唱された便利概念に落ち着いてゆくと思う。 -
blocksやgcの件からわかるようにObjective-Cが古臭く拡張しづらくなったのと、
静的言語の方がリファクタリングツール等のIDE連携ツールを作りやすいから移行し
ただけだと思う。 -
> というか、これから歴史が判断するとは思うがC++みたいな密なコーディングを必要とするのに規約ゆるゆるの言語で起きた混乱のせいで、規約カッチリ
> すればイインダヨ!な関数型が注目されてるけれど、結局密なプログラミングは後で他人がソースを弄りにくいという根本的な問題をほっかむりしてるっ
> つーよりそもそも"そういうもの"として問題にもしてないようにも見えるので遠からずまた一過性の時代の徒花として忘れられてswiftに取り入れられてる
> みたいに「そういう書き方できたら便利だね」的な過去に提唱された便利概念に落ち着いてゆくと思う。
これで一文 -
パラダイムと規約に関係があるとは知らなかったよ
-
>>82
GCは よりな ARC が現れたから単に消えただけだじゃね
System Preferences PaneがGC必須だったようにARC出るまではGC推すつもりあったかと
BlocksだっていろいろBlocksバージョンのメソッド付け加えているように、また、新しいメソッドはBlocksのみだったりでBlocksは推してはいるだろ
拡張しづらくなったのではなく、ちゃんぽん/カオス度がだろう -
「あまり強い言葉を遣うなよ、弱く見えるぞ。」
-
>>86
お前の程度に合わせて書いてあげることもできるが、お前の程度がわからないのでなあ。すまんな -
エンジニアになりたいと言う人(若い女の子)が面接に来ていたので話を立ち聞きした
どんな分野やりたいのか聴かれてweb系のエンジニアと言ってたが
どんな勉強してきたのかという問いにはC/C++をやりましたと
なぜC/C++なの?と聞かれて
色んな言語の基礎になる言語だからだと教えてもらったので・・・
と答えていた
面接してる会社はデザイン会社だった -
ID が Qt
-
QtはライセンスがGPLだから駄目
-
>>92
頭が―か? -
医療プログラマーが超高難易度の免許制に / フリーソフトやオープンソースの無作為配布も全面禁止
http://fox.2ch.net/t.../poverty/1416286592/ -
>>89
gccですか?VCですかそれともObjective-Cですか?と聞かなかった会社が糞 -
Objective-CをCocoa以外で活用してるケースってあるのかね
-
Effective Objective-C 2.0
-
とかいつの間にか出てたみたいだが、内容はどうなのかね
-
H
↑今すぐ読める無料コミック大量配信中!↑