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
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
101 名前:デフォルトの名無しさん mailto:sage [2014/12/06(土) 17:27:59.31 ID:0UG7+0Oi.net] とかいつの間にか出てたみたいだが、内容はどうなのかね
102 名前:デフォルトの名無しさん [2014/12/21(日) 03:29:15.03 ID:B0izS0B+.net] H
103 名前:デフォルトの名無しさん mailto:sage [2014/12/24(水) 22:47:32.30 ID:CYbjoPN5.net] >>11-38 お前らどこ逃げてんだよ? さっさとID真っ赤にしてスレ埋めろや基地外どもめ。
104 名前:デフォルトの名無しさん mailto:sage [2014/12/24(水) 22:49:51.21 ID:CYbjoPN5.net] 何このスレ、ほかのやつも馬鹿ばっかじゃん。 Objective-Cはもうオシマイだな。
105 名前:デフォルトの名無しさん mailto:sage [2014/12/24(水) 23:22:36.71 ID:w/c96Wtd.net] >>101 どうした急に…。
106 名前:デフォルトの名無しさん mailto:sage [2014/12/24(水) 23:37:50.82 ID:EVdPtiwJ.net] マジキチには触れない
107 名前:デフォルトの名無しさん [2014/12/27(土) 00:50:33.94 ID:ju+a0CQP.net] はじめて書き込みします。 自学の一貫としてpaizaのラーニング「数の並び替え」に挑戦しています。 「改行区切りで正の整数nがi個入力されるので小さい順に改行区切りで出力してください。」という問題です。しかし解けません。 数値を取得→配列に入れる→ソートする→同じ数値があれば削除→表示 という流れですすもうとしていましたが、うまくいきません。 できたこと →入力値をNSNumberに変換してNSMutableArrayに入れ込む。 →昇順ソート(ソートのメソッドを使用) できないこと →改行入力を判定し、for文から抜けること(配列の要素数取得) →隣り合った要素を比較し、イコールだった場合は表示しないこと 見本になるような答えがあればと思うのですが、プログラマーの皆さんはどのようにコーディングされるのでしょうか? 教えていただけたら嬉しいです。
108 名前:104 mailto:sage [2014/12/27(土) 00:53:20.66 ID:ju+a0CQP.net] ちなみに、現在はこんなかんじで書いています。 (for文のところの回数は適当な数です) #import <Foundation/Foundation.h> int main(void){ NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init]; NSMutableArray *array = [NSMutableArray array]; //getData for(int i=0;i<7;i++){ int n; scanf("%d",&n); NSNumber *num = [NSNumber numberWithInt:n]; [array addObject:num]; } //sort array = [array sortedArrayUsingSelector:@selector(compare:)]; for(int p=1 ; p<7 ;p++){ NSNumber *arraynum1 = [array objectAtIndex:p-1]; NSNumber *arraynum2 = [array objectAtIndex:p]; if([arraynum1 intValue] == [arraynum2 intValue]){ printf("test====%d",[arraynum1 intValue]); }} for(int i=0; i<6;i++){ NSNumber *resultNum = [array objectAtIndex:i]; NSString *s = [NSString stringWithFormat:@"%d\n",[resultNum intValue]]; [[NSFileHandle fileHandleWithStandardOutput] writeData: [s dataUsingEncoding: NSUTF8StringEncoding]];} [pool release]; return 0; }
109 名前:デフォルトの名無しさん mailto:sage [2014/12/27(土) 01:41:52.96 ID:kBwj7yl6.net] https://gist.github.com/anonymous/c9c38f61e5ed5b6f7eb6
110 名前:デフォルトの名無しさん mailto:sage [2014/12/27(土) 01:46:46.53 ID:kBwj7yl6.net] reverseObjectEnumeratorいらなかった というか降順と昇順を逆に覚えていた
111 名前:デフォルトの名無しさん mailto:sage [2014/12/27(土) 02:34:15.99 ID:pJ1SHZUQ.net] 二分探索は速いだけじゃなく、外れの場合はインサートポイントが得られるという、かなりお手軽で二倍お得。自分で二分探索を書いても for(int i=0;i<7;i++){ int n; scanf("%d",&n); const NSInteger count = array.count; NSNumber *newNumber = @(n); NSUInteger index = [array indexOfObject:newNumber inSortedRange:NSMakeRange(0, count) options:(NSBinarySearchingInsertionIndex) usingComparator:^NSComparisonResult(id obj1, id obj2) { return [obj1 compare:obj2]; }]; if(index < count && ((NSNumber *)array[index]).intValue == n) ; else [array insertObject:newNumber atIndex:index]; }
112 名前:デフォルトの名無しさん mailto:sage [2014/12/28(日) 01:32:41.16 ID:t3FnsveB.net] そんなのNSなんたらやってないでc++で書きゃいいじゃん
113 名前:デフォルトの名無しさん mailto:sage [2014/12/28(日) 02:21:54.56 ID:9eiZ+Gka.net] ここになんだから Objective-C でやる/の勉強でということだろ 頓珍漢なことを言い出さんな
114 名前:デフォルトの名無しさん mailto:sage [2014/12/29(月) 08:59:18.53 ID:Z4v1tAUQ.net] 素朴な疑問だけど、「言い出さんな」って何の書き間違い? それともそんな言い回しがあるの? それならどんな意味?
115 名前:デフォルトの名無しさん mailto:sage [2014/12/29(月) 10:01:01.25 ID:0b80RVUG.net] 言いなさんな だろ
116 名前:デフォルトの名無しさん mailto:sage [2014/12/29(月) 10:02:24.88 ID:UGzXTa7o.net] 言いなさんな あるいは 言い出しなさんな だと思う
117 名前:デフォルトの名無しさん [2014/12/29(月) 11:16:33.80 ID:/fu+2Q3X.net] 2ちゃんの住民ってアスペが多いのか ときどき日本語の文章の意味を取り違って 真逆のレス返すひととかいるよね
118 名前:デフォルトの名無しさん mailto:sage [2014/12/29(月) 17:32:40.50 ID:0o73V2FG.net] よく見るが自分がそうでないとも言い切れないのであまりつっこまないようにしている
119 名前:デフォルトの名無しさん mailto:sage [2015/01/03(土) 22:27:31.84 ID:/eH07gY4.net] あけおめ?
120 名前:デフォルトの名無しさん [2015/02/03(火) 10:52:02.28 ID:rDBGcWBx.net] Object-Cってカプセル化できないのか、しても意味ないようなことが書いてあったけど ttp://news.mynavi.jp/column/objc/031/ ・どんなクラスでも性質を変えられる。 ・どんなフィールド名も追ってけばクラス名から参照できちゃう。 なら、暗証番号とか保持してるクラスを見つけてprivate/protectをpublicに変えちゃえば中見えるんじゃね? 秘匿したいプロパティを隠す方法を教えてください。
121 名前:デフォルトの名無しさん mailto:sage [2015/02/03(火) 11:07:05.38 ID:tOi9MMpi.net] 関数内にstaticで定義すればivarListにも出ないかな。
122 名前:デフォルトの名無しさん mailto:sage [2015/02/03(火) 22:01:35.92 ID:tKBD0v6T.net] novocaineって分かる人います?
123 名前:デフォルトの名無しさん [2015/02/04(水) 11:48:21.24 ID:kErMECZ6.net] javascript も Ruby も Python も_
124 名前:デフォルトの名無しさん [2015/02/08(日) 10:15:33.41 ID:pR6nMOCQ.net] >>119 でもそれだと暗証番号とか生成して秘匿するのには使えないよね? 特にコンパイル前に暗証番号分かってるような特注PGじゃなくて汎用なのだと。 関数内static変数をキーに使って加工した暗証番号を変数として保持するとかなのかな。 これならクラスに付けてないゲッターでプロパティが知れて漏れても メソッドで加工してるから大丈夫とか。 そしてそのメソッドでは合ってるかどうかだけ返すようにすれば推測しづらいかな?
125 名前:デフォルトの名無しさん mailto:sage [2015/02/08(日) 11:12:28.61 ID:HJEgExkV.net] >>122 要はIvarにしなければクラスの外からは見えないということで、 関数をsetter/getter兼用にして、その中で変数を宣言すればどうかと。 int cryptoNumber(int mode, int value) { static int local = 0; //0:setter, 1:getter switch (mode) { case 0: local = value; break; default: break; } return local; } まあ、関数のスコープ外からは見えないってだけだが。
126 名前:デフォルトの名無しさん mailto:sage [2015/02/08(日) 12:27:24.17 ID:pR6nMOCQ.net] でもその引数valueはどこかのクラス内で 何らかのプロパティとして保持されてる値が引き渡されてるわけだろ? Object-Cは完全なるOPPなんだから最終的にはどこかしらのプロパティが保持して それは漏れなくIvarで引用されちゃうよね?
127 名前:デフォルトの名無しさん mailto:sage [2015/02/08(日) 12:43:20.66 ID:HJEgExkV.net] 保持するのはあくまで関数内のlocalのみだよ。 そしてセット/ゲットできるのもその関数を定義したクラス内のみ。(関数もstatic) その値をどう生成してどう使うかにもよるし、どのレベルで隠蔽するかって事でもある。
128 名前:デフォルトの名無しさん mailto:sage [2015/02/08(日) 12:46:03.85 ID:pR6nMOCQ.net] あとコメントアウトしてても //0:setter, 1:getter はマジックナンバーになりそうな。。。 int cryptoNumber(int mode, int value) { const int getter = 1; const int setter = 9; static int local = 5; switch (mode) { case setter: local = value; break; case getter: break; default: return null; } return local; } デフォルトはエラー処理な。
129 名前:デフォルトの名無しさん mailto:sage [2015/02/08(日) 12:53:54.58 ID:pR6nMOCQ.net] >>125 それだと全然Object-Cっぽくないよね? 実質Cじゃん。 Object-Cでどうやってカプセル化もどきをするかってことだから。 クラスになったらばれる。 >関数もstatic だからObject-Cはメソッド(関数)名が分かればstaticをpublicに上書きできるんだって。
130 名前:デフォルトの名無しさん mailto:sage [2015/02/08(日) 13:05:35.56 ID:HJEgExkV.net] そりゃObjective-Cで完全な隠蔽は無理よw Ivarとかメソッドにした時点で見えるんだから。 必要ならCで書けばいいし、書けるのがObj-Cのメリットでもあると思うし、 どういう目的でその変数を使うかわからんけど、 例えばその関数にセッターと照合の機能を持たせれば、関数外へ値を出す事も無くなる。 typedef enum { CryptoNumber_Mode_Set, CryptoNumber_Mode_Compare } CryptoNumber_Mode; BOOL cryptoNumber(CryptoNumber_Mode mode, int ivalue) {….}
131 名前:デフォルトの名無しさん mailto:sage [2015/02/08(日) 13:20:42.38 ID:HJEgExkV.net] っていうか、Obj_Cは「C+オブジェクトシステム」って、そこの記事に書いてなかったっけ。
132 名前:デフォルトの名無しさん mailto:sage [2015/02/08(日) 13:39:05.07 ID:wyLER5GX.net] Objective-Cで完全な隠蔽って無理じゃ無い? そのためにiOSデバイスは他人のコードをデバッガ起動させてないんじゃないの? 牢破りで台無しだけど
133 名前:デフォルトの名無しさん mailto:sage [2015/02/10(火) 01:18:01.12 ID:YlSr2a8D.net] 質問です。 自分はARCから入って、最近MRCの存在を知ったのですが MRCしか無かった頃には、弱い参照をどのように処理していたのでしょうか? assignは単に参照を保持するだけ…と言うことは、所有者が居なくなってもnilにならず retainカウントがゼロ=破棄されて内容が保証できないメモリ、を参照してしまう可能性がありますよね…?
134 名前:デフォルトの名無しさん mailto:sage [2015/02/10(火) 01:36:50.93 ID:kXovpB1O.net] >>131 運を天に任せてた。 ってか、weakは基本的には循環retainを防ぐためのものなので、親が消されたら子も消されるような状況なら、親→子はretain(strong)、子→親はassignで問題ない。 (親以外に子をretainしてる
135 名前:zがいると問題だけど…。) [] [ここ壊れてます]
136 名前:デフォルトの名無しさん mailto:sage [2015/02/10(火) 04:43:34.61 ID:aT+wxLBo.net] nonnull, nullable, null_resettable, null_unspecified が来ましたで Cocoa/Cocoa Touch全部そうするのかなあ
137 名前:デフォルトの名無しさん mailto:sage [2015/02/10(火) 05:48:15.38 ID:YlSr2a8D.net] >>132 なるほど、親子関係をハッキリさせておけば確かに起きないですね。 こんな興味本位の質問に答えて頂いてありがとうございました。
138 名前:デフォルトの名無しさん mailto:sage [2015/02/10(火) 18:26:56.21 ID:3nLl+ggX.net] nonnull, nullable, null_unspecified 修飾子が加わったね
139 名前:デフォルトの名無しさん mailto:sage [2015/02/11(水) 04:09:33.71 ID:IVeIu2if.net] >>135 >nonnull, nullable, null_unspecified 修飾子が加わったね これはどういう用途や目的で使うのでしょうか
140 名前:デフォルトの名無しさん mailto:sage [2015/02/13(金) 08:06:29.09 ID:9pkMuWgM.net] 想像だけどswiftの⁉︎に相当するんじゃないの?
141 名前:デフォルトの名無しさん [2015/03/04(水) 23:55:50.26 ID:IuCQE56I.net] Twitterクライアント作りたくてAFNetworkingとSimpleauth導入した JSONのGETまでは出来るんだけどそこからtable viewに表示させる方法がわからない.... NSDictionaryとか配列とか使うのは知ってるんだけど調べても書き方が.....
142 名前:デフォルトの名無しさん mailto:sage [2015/03/05(木) 00:08:35.68 ID:U/1KqdAB.net] >>3 > https://developer.apple.com/library/mac/navigation/ から Table View の Sample Code 見てみ。
143 名前:デフォルトの名無しさん mailto:sage [2015/03/08(日) 19:28:12.30 ID:HPLKgVu5.net] 超古いコードをYosemite対応に書き換え中。 NSCalendarDateを置き換えしてたんだが、 なんだか凄く面倒くさい書き方になったんだな。 一々プロパティ叩かないと使えないNSCalendarとか NSDateFormatterとか、行数増えまくり。 Fomatterが遅いのはホント酷いな。 もう少しコンビニエンスなメソッド用意して 欲しい。
144 名前:デフォルトの名無しさん mailto:sage [2015/03/08(日) 19:33:54.16 ID:CC8CPwGl.net] 自分で追加すればええやん? Fomatterが遅いのは対処の仕方がいくつかはあるし、ずっと前から遅いことだろう まあ、NSDate <-> 文字列もしくは分解は所見ではげげっというほど面倒に見えるだろうけど
145 名前:デフォルトの名無しさん mailto:sage [2015/03/08(日) 20:10:13.17 ID:WTSZ2xfx.net] ハゲゲッに見えて困惑した