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
552 名前:デフォルトの名無しさん mailto:sage [2016/10/17(月) 11:37:03.04 ID:4hpKEwJL.net] ccそのものは昔からあるCのコンパイラでしょ、今はgccにリンクしてることが多いが
553 名前:デフォルトの名無しさん [2016/10/17(月) 11:59:05.64 ID:v6qceZ1M.net] 俺的メモ gccとcc(clang)との違い。 ccはコマンドalias。 gccはclangのwrapperコマンド(俺の推測) gcc -v, cc ―versionは、どちらもApple LLVMだと答えてくれる。 cc -framework Foundation hello.m gcc -framework Foundation hello.m と打ってコンパイルして得られるバイナリは同サイズだ。 ll a.out* -rwxr-xr-x 1 ad staff 8.3K 10 17 11:54 a.out -rwxr-xr-x 1 ad staff 8.3K 10 17 11:53 a.out-cc
554 名前:デフォルトの名無しさん [2016/10/17(月) 13:01:16.77 ID:v6qceZ1M.net] ちなみに libobjc.A.dylib libSystem.B.dylib の中にいったいどんなCの関数が入っているのか?classdumpってフリーのコマンドラインツールで調べる事ができるはず。俺、やった事無いけど。
555 名前:デフォルトの名無しさん [2016/10/17(月) 13:15:29.63 ID:v6qceZ1M.net] せっかくだから、 class-dump /usr/lib/libobjc.A.dylib やってみた。 @protocol NSObject @property(readonly, copy) NSString *description; @property(readonly) Class superclass; @property(readonly) unsigned long long hash; - (struct _NSZone *)zone; - (unsigned long long)retainCount; 以下略 Cの関数は入ってなくて、Obj-Cのクラスとか、構造体とかが、入っていた。
556 名前:デフォルトの名無しさん [2016/10/17(月) 13:24:24.90 ID:v6qceZ1M.net] ついでに、 nm -o /usr/lib/libSystem.B.dylib | less こいつの最初の数行は、 /usr/lib/libSystem.B.dylib: 0000000000001abb T R8289209$_pthread_attr_destroy /usr/lib/libSystem.B.dylib: 0000000000001ac0 T R8289209$_pthread_attr_init /usr/lib/libSystem.B.dylib: 0000000000001ac5 T R8289209$_pthread_attr_setdetachstate /usr/lib/libSystem.B.dylib: 0000000000001aca T R8289209$_pthread_create 以下略
557 名前:デフォルトの名無しさん mailto:sage [2016/10/17(月) 13:32:18.66 ID:yAttM8H1.net] >>538 それはたまたまOSX上のObjective-Cでそうなってるだけ 大抵の言語では「言語」ランタイムはスタティックリンクされるし Objective-Cでもlibobjc.aがある環境ならスタティックリンクできる /usr/lib/の下に.oがいくつかあるけど、こいつらも「C言語の」ランタイムでmain関数よりも前の処理になってて 大抵の実行ファイルにはどれかが暗黙にスタティックリンクされてる
558 名前:デフォルトの名無しさん mailto:sage [2016/10/17(月) 13:39:16.83 ID:yAttM8H1.net] あとlibSystem.B.dylibはシステムコールラッパーとC言語の標準ライブラリの一部(libcと分割)なんで ランタイム(実行時)ライブラリであることには間違いはないけど C言語の
559 名前:宴塔^イムというと、普通はスタートアップ(*.o)やlibgccの方を指すと思う [] [ここ壊れてます]
560 名前:デフォルトの名無しさん [2016/10/17(月) 14:05:08.33 ID:v6qceZ1M.net] >>549 nm libSystem.B.dylibの結果はほとんど’U’タイプのSymbolでした。 man nmによると Symbol type ‘U’ = undefinedで、実装は別ファイル、参照だけ!、って事らしいので、 実装はたとえば、libcにあるんだと思います。 nm -o libSystem.B.dylib | grep -v ‘U’すると、出力は極わずかでした。
561 名前:デフォルトの名無しさん [2016/10/20(木) 17:05:03.85 ID:8PkcGQMJ.net] MRC時代のOSXプログラミングの書籍ってなにがありますか?(何を買えばいいですか?) 今はAppleのオンラインドキュメントなどはほとんどARC前提で記述されてるので ネット探してもなかなか見つけられません
562 名前:デフォルトの名無しさん mailto:sage [2016/10/20(木) 17:35:44.02 ID:v715sDMz.net] 古い版の萩原本でもよみゃいいだろ。
563 名前:デフォルトの名無しさん [2016/10/20(木) 19:00:37.37 ID:8PkcGQMJ.net] >>552 https://www.amazon.co.jp/Objective‐C―MacOS-Xプログラミング入門-荻原-剛志/dp/4877780688/ref=sr_1_6?s=books&ie=UTF8&qid=1476957557&sr=1-6 これとかか?
564 名前:デフォルトの名無しさん mailto:sage [2016/10/20(木) 20:24:30.68 ID:ifLlZ1yA.net] 上手に貼れ https://www.amazon.co.jp/dp/4877780688/
565 名前:デフォルトの名無しさん mailto:sage [2016/10/25(火) 13:48:49.63 ID:aBo6S+EN.net] @interface @implementation これに変数2回宣言するだろ? 違いってなんですか?
566 名前:デフォルトの名無しさん mailto:sage [2016/10/25(火) 14:18:03.51 ID:OZkbpJ7G.net] >>555 必要なスコープに1回宣言すればいい。 というか、外部に変数を公開する事は、特殊な事情以外ありえないから、 ヘッダにはアクセサ即ちプロパティを書けばいい。 つまりインスタンス変数なら@implementation{ } のブロックで宣言すればいいよ。 継承した子クラスからその変数へは、親クラスのアクセサ経由でアクセスするのが普通。 こうすると、ヘッダには外部に公開する情報しか現れない。 どうしても子クラスから親クラスの変数に直接触りたい場合は、 親クラスの@interface{ }ブロックで宣言する。 その場合はデフォルトでアクセス制限が@protectedになる。
567 名前:デフォルトの名無しさん mailto:sage [2016/10/25(火) 14:31:48.57 ID:OZkbpJ7G.net] >>555 補足 その変数を外部に公開しないのなら、ヘッダでプロパティにしなくてもいいよ。 プロパティは.mにも書けるし。
568 名前:デフォルトの名無しさん mailto:sage [2016/11/17(木) 12:45:51.00 ID:0S40a4Cy.net] インスタンスメソッドの実行に関して教えてください。 // message sending [obj say: @
569 名前:デフォルトの名無しさん mailto:sage [2016/11/17(木) 13:13:08.74 ID:Psw7U5GH.net] 事切れたか
570 名前:デフォルトの名無しさん mailto:sage [2016/11/17(木) 13:29:09.43 ID:5aO/SijD.net] ダブルクオートとかで切れるのよく見かけるけど、@ でも切れるんかな
571 名前:デフォルトの名無しさん mailto:sage [2016/11/17(木) 13:29:10.81 ID:0S40a4Cy.net] ソースコードが勝手に切られちゃう(サニタイズ関係?)みたいなので画像で失礼します。 インスタンスメソッドの実行に関して教えてください。 message sending / function pointer どちらの方法でもちゃんと動くのは確認できましたが、 なぜ後者はSELパラメータが必須(この場合selector) な仕様になっているんでしょう? 冗長に見えますが何か意味があるんでしょうか。 sss
572 名前:p://o.8ch.net/j7xx.png [] [ここ壊れてます]
573 名前:デフォルトの名無しさん mailto:sage [2016/11/17(木) 13:30:21.21 ID:5aO/SijD.net] @ の次は当然 " がくるだろうけど、今まで1個目の"が表示されて切れるんだよなあ
574 名前:デフォルトの名無しさん mailto:sage [2016/11/17(木) 13:33:39.43 ID:0S40a4Cy.net] > SELパラメータが必須 instanceMethodForSelector: の時点で伝えてあるのに、なぜ実行時にも必要になるのかという事です。
575 名前:デフォルトの名無しさん mailto:sage [2016/11/17(木) 13:40:44.67 ID:+o4tuiiL.net] >>563 1.instanceMethodForSelectorでメソッドの実体である関数のポインタを取得(IMP func) 2.funcをキャストして呼び出し 2のときに、メソッドの暗黙の第1,第2引数である id obj, SEL selectorを渡してます。
576 名前:デフォルトの名無しさん mailto:sage [2016/11/17(木) 13:54:11.06 ID:0S40a4Cy.net] ありがとうございます。それでは改めて聞き直します。 メソッドの暗黙の第2引数が SEL である、そもそもの設計の意図はなんなんでしょう。 内部で振り分ければいいので複数のメソッドに対して一つの関数(ポインタ)が共通で対応可能とか? それが実際にできたとして何かメリットがあるんでしょうか。
577 名前:デフォルトの名無しさん mailto:sage [2016/11/17(木) 14:00:22.50 ID:f6OBJy8Y.net] セレクタを見て他のメソッドにデリゲートするとか。
578 名前:デフォルトの名無しさん mailto:sage [2016/11/17(木) 14:05:35.87 ID:+o4tuiiL.net] ランタイムは、渡されたセレクタをメソッドリストから検索して、有れば実行、無ければエラー。 ってことかな。
579 名前:デフォルトの名無しさん mailto:sage [2016/11/17(木) 14:28:15.44 ID:+o4tuiiL.net] IMP使った場合はランタイムは経由しないでダイレクトに関数コールするけど、 通常は動的にメソッド呼び出しをするのでそういう仕様になってる。 のではないだろうか。
580 名前:デフォルトの名無しさん mailto:sage [2016/11/17(木) 18:17:20.63 ID:ZyPoEOxl.net] サブクラスでのオーバーライドをサポートするために だと思うよ。
581 名前:デフォルトの名無しさん mailto:sage [2016/11/17(木) 21:32:33.37 ID:XVALpd1q.net] Smalltalkで、実行中メソッドのコンテキスト内からそのセレクタを得ることができる機構を Objective-Cでも_cmdパラメーターを介して模したかったからなのでは? Object subclass: Foo [ bar [ thisContext method selector displayNl ] ] Foo new bar "=> #bar "
582 名前:デフォルトの名無しさん mailto:sage [2016/11/17(木) 23:13:49.69 ID:+o4tuiiL.net] だいたいその辺の、実行時解決を実現したかったという理由だと思うけど、 ランタイムがメソッド呼び出しするときの動作は 1.レシーバがnilかどうか 2.レシーバのメソッドリストに該当メソッドがあるか 3.なければスーパークラスにあるか 4.なければthrow exception だよね。 だからメソッド呼ぶときはランタイムにレシーバとselectorを渡して調べてもらう必要が有るんですよ。
583 名前:デフォルトの名無しさん mailto:sage [2016/11/17(木) 23:51:59.51 ID:8N+auLd3.net] レシーバはselfとして使うから必要なのはわかるんだけど、セレクタはいつ必要になるの? ランタイムに調べてもらうのは関数(メソッド実体)コールの前だろうから、コール時にはすでに不要な情報だよね
584 名前:デフォルトの名無しさん mailto:sage [2016/11/18(金) 00:08:47.34 ID:QxITf25H.net] >>572 セレクタはメソッド呼び出しで必要>>571 IMPで関数呼び出しの場合はランタイムを経由しないので不要 しかしどちらもシグネチャは共通なので(id, SEL, …)ということ
585 名前:デフォルトの名無しさん mailto:sage [2016/11/18(金) 02:19:58.76 ID:QxITf25H.net] >>572 ちなみにこれでも動作する。id,SELは渡してない。 void(*f)(void) = [ViewController instanceMethodForSelector:@selector(hoge)]; f(); - (void)hoge { NSLog(@"%@", NSStringFromSelector(_cmd)); } SELを渡してないので null と出力される idも渡してないので、hoge内でselfにアクセスすると落ちる。
586 名前:デフォルトの名無しさん mailto:sage [2016/11/18(金) 08:55:20.76 ID:1f4/DDXi.net] なるほどこれはわかりやすい
587 名前:デフォルトの名無しさん [2016/11/18(金) 09:33:05.33 ID:sBZu/NEl.net] BathyScapheっていう2ch Viewer使ってます。 >>561 みたいな画像をuploadするにはどうすればいいっすか? 2chのサイトではdrawツールがブラウザ
588 名前:内にあって、それで落書きはできるみたいですが、pngとかgif画像をuploadしたいのです。 [] [ここ壊れてます]
589 名前:デフォルトの名無しさん mailto:559 [2016/11/18(金) 11:55:15.19 ID:U2qFJJrM.net] >>576 素の落書きツールは かなり使い勝手が悪いので 自作の Geasemonkeyスクリプト(for Firefox)使ってます。 sssp://o.8ch.net/j8zx.png
590 名前:デフォルトの名無しさん mailto:sage [2016/11/18(金) 11:57:16.56 ID:U2qFJJrM.net] まあ、すぐにサイズオーバーになるのでごく簡単な絵しかアップできません。 sssp://o.8ch.net/j8zz.png
591 名前:デフォルトの名無しさん mailto:sage [2016/11/18(金) 12:14:37.99 ID:8cb+/Ta9.net] 消せないから気軽にあげられないのがちょっとあれよね プログラム板なんだから自分で書けば良いよ てことでobjcで書いてみた サイズの頭打ちがあるからと思ってインデックスカラーに圧縮したけど弾かれるのね sssp://o.8ch.net/j90c.png
592 名前:デフォルトの名無しさん mailto:559 [2016/11/18(金) 12:22:18.47 ID:U2qFJJrM.net] IMP関数ポインタの SELパラメターの件 正直言うと、自分にはコメの意見の善し悪しを判断する能力ありません...。 ググるとこれ使って >>561 で書いたような事ができるようですが (参考:class_addMethod) 設計側はそういう用途まで考慮していたのかは、よく分かりませんでした。 シグネチャを共通にしたかった? どうなんでしょう、それって何か気持ちいいから以上の理由はあるんですかね。
593 名前:デフォルトの名無しさん mailto:sage [2016/11/18(金) 12:39:28.44 ID:QxITf25H.net] >>580 シグネチャが共通というより、同一の関数なので同じシグネチャなんですよ。 ランタイムが呼ぶメソッドの実体も、IMPを取得してダイレクトに呼ぶ関数も、「同じ関数」です。 その関数の引数が (id, SEL, …) なんですね。
594 名前:デフォルトの名無しさん mailto:sage [2016/11/18(金) 12:42:31.61 ID:QxITf25H.net] で、自分はIMPは使いません。 IMPを使うくらいならCの関数を書けばいいだけなので。
595 名前:デフォルトの名無しさん mailto:sage [2016/11/18(金) 12:51:34.13 ID:QxITf25H.net] Objective-Cは、以前はメソッド呼び出しのオーバーヘッドがネックになってたようなので、 IMPのAPIは、既存クラスのメソッドを高速に呼び出すために作ったんじゃないですかね。
596 名前:デフォルトの名無しさん [2016/11/18(金) 13:05:14.30 ID:sBZu/NEl.net] >>578 いやぁ、うれしい。 秘伝のテクを開陳してくれて、あんがとう。 けど、JavaSou苦手なんすよねぇ。 tarea(text area)を取得して、その直前にinput, script要素を挿入してinputボタンの押下で foo関数を呼ぶ様にしてるって事みたい。 FireFoxもGeasemonkeyも使った事無いっす。 Safari, Chromeでも同じ事できるんでしょうか? Geasemonkey for Safari, Chromeを探せって事なんすね。 いま、WKWebViewでもloadしたhtml, cssを書き換えられないか?調べてます。 Geasemonkey likeな動作をどうやってさせようかと!
597 名前:デフォルトの名無しさん mailto:sage [2016/11/18(金) 21:20:02.14 ID:U2qFJJrM.net] ObjCスレだからObjCで頑張るのはアリかもしれませんけど、物事には適材適所ってもんがあるとおも...。
598 名前:デフォルトの名無しさん mailto:sage [2016/11/19(土) 03:19:56.84 ID:vr8hDAX5.net] 適材適所かどうかは自明ではないね
599 名前:デフォルトの名無しさん mailto:sage [2016/11/26(土) 10:43:02.50 ID:EbyefIsj.net] みんなSwiftに移行しちゃったの? Swift始めた頃、小さな仕様がコロコロ変わるからObj-Cに戻ってきてたけど もう安定したのかな。
600 名前:デフォルトの名無しさん [2016/11/28(月) 16:59:47.56 ID:AK2eqXeC.net] >>587 Swift3でメソッド名の整理が行われて、短くなった。 "Taylor".writeToFile("filename", atomically: true, encoding: NSUTF8StringEncoding) "Taylor".write(toFile: "somefile", atomically: true, encoding: String.Encoding.utf8) 上2.3/下3 Swift3が良さげに見えるのでObj-Cからの移行者がボチボチ増えてるかも。
601 名前:デフォルトの名無しさん mailto:sage [2016/11/30(水) 23:57:30.93 ID:48Nf+y
] [ここ壊れてます]
602 名前:qm.net mailto: >>587 殊Swiftにおいて仕様が安定することはまだしばらくないだろう Swift5くらいじゃね?安定版は [] [ここ壊れてます]
603 名前:デフォルトの名無しさん [2016/12/01(木) 09:30:20.02 ID:RHRo1hP4.net] コンパイラとしての安定性は最初から問題無いんじゃない? コンパイラが原因でアプリが落ちるっては経験無いなぁ。 C++、Javaが最近仕様変更が激しいのと同じく、Swiftだって言語仕様変更があるって事で、コンパイラとしては安定してると思う。 例:C++TR1, C++11, C++14 JavaSE6, 7, 8, 9 Swift3の言語仕様変更は、現在アナウンスされてないんじゃないのか?Swift4ってのはABIの導入って事で、言語仕様の変更じゃ無いし。
604 名前:デフォルトの名無しさん mailto:sage [2016/12/01(木) 12:10:25.84 ID:5zfWITAP.net] ぬるぽで落ちてもコンパイラのせいです(kr
605 名前:デフォルトの名無しさん [2016/12/01(木) 12:43:47.19 ID:RHRo1hP4.net] >>591 それは、nil guardしてないコードのせい!
606 名前:デフォルトの名無しさん [2016/12/01(木) 17:17:16.90 ID:ODvXgIax.net] キチガイの集まり・創価学会・公明党! 人殺しの殺人鬼が政治活動・創価学会・公明党! 池田大作・人殺しの殺人鬼・創価学会・公明党! あやかりドチンピラの池田糞作・創価学会・公明党!
607 名前:デフォルトの名無しさん [2016/12/02(金) 10:10:54.60 ID:84dQUHiS.net] 禁止語句、に追加すれば、見なくてすむよ!
608 名前:デフォルトの名無しさん mailto:sage [2016/12/03(土) 14:45:44.29 ID:rA9b0IH0.net] 孔明党ならゆるされるのだろうか? 仲達「ゆるさないぞ!」
609 名前:デフォルトの名無しさん mailto:sage [2016/12/07(水) 10:42:29.07 ID:iWjUJEoY.net] メッセージをたくさん送る時、[[[なるじゃん? みなさんどう打ってます?Xcodeに自動補完とかあるの?
610 名前:デフォルトの名無しさん [2016/12/07(水) 11:09:26.74 ID:lAZ4q7Te.net] >>596 適当に打って、あとから余計なのを消す。 余計を検出するのは、XVimの%コマンドを使う。 matchitとかっていうpluginをterminal.appで使うって手もある。
611 名前:デフォルトの名無しさん mailto:sage [2016/12/07(水) 12:37:41.63 ID:YlvsrELD.net] >>596 ]を打ったら状況に応じて勝手に[を入れてくれるよ 入れる場所を間違えてエラーになる事もあるけど
612 名前:デフォルトの名無しさん mailto:sage [2016/12/07(水) 15:21:19.56 ID:iWjUJEoY.net] ありがとうございます! SwiftからCocoaプログラミングを始めて、その背景を知りたかったのでObjective-Cをちょこっと調べてました。 そこで、気になって質問しました^_^
613 名前:デフォルトの名無しさん [2016/12/07(水) 15:35:56.63 ID:lAZ4q7Te.net] >>599 俺と同じパターンだね。 Objective-Cのサンプルを読む事もあるしね。 Swift -> Objective-Cって人も最近は居るだろうね。 Swift3からObjective-Cを見ると、冗長な部分が目立ってしまう。 例: obj-c: dissmissViewControllerAnimated: complition swift3: dismiss#animated: Objective-Cはコンパイル早いっていうメリットがあるけどね。
614 名前:デフォルトの名無しさん mailto:sage [2016/12/07(水) 15:48:24.59 ID:iWjUJEoY.net] >>600 そうですか! 言語は新旧ありますが、ロジックやフレームワーク自体に優劣がある訳ではないので、Objective-Cが読めるとプラスですよね
615 名前:デフォルトの名無しさん [2016/12/07(水) 16:09:27.53 ID:lAZ4q7Te.net] >>601 Swift3からiOSいじり始めた俺からすると、obj-Cは怖いわぁ。 Swiftにおけるnilに相当するのがobj-Cには、 nil、Nil、NULL、NSNullと4つもある。 Frameworkにあるメソッドにnilを返すものとerrorをthrowするものと混在するのも おれは混乱するわ。 それから、未だにOptionalが返って来た時に、どうやってunwrapするか、 すなわちnon-Optionalにするのかも混乱する。 1. if let or guard letを使う 2. coaleasing opperator ??を使う 3. forced unwrappingする
616 名前:デフォルトの名無しさん mailto:sage [2016/12/09(金) 00:46:26.18 ID:68yJ6/bb.net] >>598 メッセージ呼び出しの自動補完はifの周りが割と鬼門だよね、式の解析が一部混乱してる感じ くっころさんになることたまにある。
617 名前:デフォルトの名無しさん mailto:sage [2016/12/15(木) 13:46:48.92 ID:7KRIzock.net] https://chrome.google.com/webstore/detail/%E3%81%AF%E3%81%A6%E3%81%AAng/mbgdnfmdelffjdhkdggilmphfdihnmcj?hl=ja
618 名前:デフォルトの名無しさん mailto:sage [2016/12/16(金) 09:51:52.86 ID:6vWCzpx7.net] Bool areInst(int thing1, int thing2) { return(thing1 - thing2) } これ、YESかNOが返されるんだけど 0か1が返ってくるには、どうすればいい?
619 名前:デフォルトの名無しさん [2016/12/16(金) 10:15:26.25 ID:OzPYYpv3.net] >>605 if YES { return 1 } else { return 0 }
620 名前:デフォルトの名無しさん mailto:sage [2017/02/14(火) 17:11:03.02 ID:qY2M4Y7r.net] aac→pcmの変換について教えて。 ネット上のファイルからaacのデータ取ってきて、 1.AudioFileStreamにデータ食わせてAudioFileStreamPropertyListenerProcを受けてからASBDを取得。 2.1.のASBDをAudioConverterのインプットに設定。アウトプットはAudioUnitのインプットと同じ設定。 3.AudioConverterFillComplexBufferを呼び出してAudioConverterComplexInputDataProcのコールバックで、AudioFileStreamPacketsProcで通知されたデータを渡す。 という流れでデータを処理してるんだけどいくつかのコンテンツでAudioConverterFillComplexBufferがエラー(1852797029)で帰ってくるんたが理由がわからん。何でかわかる?
621 名前:デフォルトの名無しさん [2017/02/22(水) 21:35:58.65 ID:bVPEWVD2.net] video.fc2.com/content/20170222aQ2BSKaX
622 名前:デフォルトの名無しさん mailto:sage [2017/02/24(金) 09:40:08.04 ID:hWTo6NC+.net] >>607 解決した。データが微妙におかしかった。
623 名前:デフォルトの名無しさん [2017/07/09(日) 12:41:36.82 ID:GCKhJDjB.net] gfortranでコンパイルしたfortran subroutineをObjCから呼べますか?
624 名前:デフォルトの名無しさん mailto:sage [2017/07/09(日) 17:45:16.59 ID:8iS3GcZb.net] Objective-CというかCからで、gcc(gfortran)はCへのインターフェースを用意してるし、gccといえどもプラットフォームOSのオブジェクトを吐き出すんだから、clangでのオブジェクトとつーかーでリンクできるから呼べるだろ
625 名前:デフォルトの名無しさん mailto:sage [2017/07/09(日) 19:25:46.94 ID:XPzyjd3D.net] Cでできることはすべてできる そう、Objective-Cならね
626 名前:デフォルトの名無しさん [2017/07/09(日) 19:30:40.19 ID:GCKhJDjB.net] gfortran -c test.f をコンパイルしてtest.oを得たとします。test.fに入ったsubroutineをObjCのmain.mから呼ぶことができますか? clang main.m test.o -framework Foundation -o a.out こうやってコンパイルできるのでしょうか? 調べると、binary compatibilityがあるよ!って話がヒットします。
627 名前:デフォルトの名無しさん mailto:sage [2017/07/09(日) 19:47:18.04 ID:8iS3GcZb.net] コンパイルというかリンクできるかリンカーのお仕事 リンカーの理解できるオブジェクトはGCCでも排出できる。言語の違いはCのインターフェースで共通。なのでできるだろ やってみろよwやってできなかったらこっちで検証してみてやるよ(えらそうw)
628 名前:デフォルトの名無しさん mailto:sage [2017/08/04(金) 11:02:58.83 ID:Xk8/NaTI.net] swfit4も結構変更があるみたいだね。 swift5もでるみたいだし、objcでいいや
629 名前:デフォルトの名無しさん [2017/08/04(金) 11:16:18.04 ID:PF1N3/4o.net] >>615 ObjCで作るiOSアプリの方が、Swiftのそれよりキビキビ動く印象があるけど、 どうなんでしょうか?
630 名前:デフォルトの名無しさん mailto:sage [2017/08/04(金) 12:00:05.92 ID:CVNSY5Yd.net] 今まで通りObjective-Cでは困らないんだよね..
631 名前:デフォルトの名無しさん mailto:sage [2017/08/04(金) 13:36:11.66 ID:ZGf6UrbU.net] もう俺kotlinのiosサポート待ちなんだが
632 名前:デフォルトの名無しさん mailto:sage [2017/08/04(金) 17:00:30.23 ID:Xk8/NaTI.net] XcodeProjAdder
633 名前:デフォルトの名無しさん mailto:sage [2017/08/05(土) 09:11:30.54 ID:AGcDSNVp.net] 結局Objective-Cがなんだかんだ柔軟性があって使いやすい
634 名前:デフォルトの名無しさん mailto:sage [2017/08/05(土) 09:30:13.70 ID:ocnuRu9M.net] Objective-Cをディスってるやつらが理解できないな C言語使ったことないのかね
635 名前:デフォルトの名無しさん mailto:sage [2017/08/05(土) 09:53:25.64 ID:t7RO58+g.net] Cをと言ったら老害扱いするヤツもいるからなw
636 名前:デフォルトの名無しさん mailto:sage [2017/08/05(土) 10:41:10.52 ID:XESdgnCd.net] Cを使ってたから[インスタンス メソッド:引数 キーワード:引数]の冗長になる表記が鬱陶しかった ObjCを絶賛してる奴らはC言語を使ったことないのかね、とは思う しかし、最近追加された_Nullable, _Nonnullはどうにかならんものかのう アンダーバー一つなのと大文字で始めるのが気に入らねぇ、nullable, nonnullだけにできなかったものか Apple様がサードパーティライブラリなんて気にしてるんじゃねぇよ
637 名前:デフォルトの名無しさん [2017/08/05(土) 12:50:06.76 ID:x2WXXz7r.net] >>623 #defineマクロ使ってnullableって書けば良いじゃん。
638 名前:デフォルトの名無しさん [2017/08/05(土) 12:59:54.68 ID:x2WXXz7r.net] #define nullable _Nullable
639 名前:デフォルトの名無しさん mailto:sage [2017/08/05(土) 15:28:20.27 ID:AGcDSNVp.net] >>623 わろた まあ、そのメッセージ記法は最初見たときはその変態的な表記方法に非常に面食らった なんせその[や]を使うのは配列だと決まっていたからな でもとりあえず使っているうちに、Cの関数表記とObjectiveな部分が非常にわかりやすく共存できるという事実に気づいたとき一気に好きになったのを思い出した
640 名前:デフォルトの名無しさん mailto:sage [2017/08/05(土) 15:30:37.83 ID:Xkpybudy.net] この言語完全にオワコン
641 名前:デフォルトの名無しさん mailto:sage [2017/08/05(土) 15:31:16.18 ID:AGcDSNVp.net] >>627 Swift使ってればいいと思うよ
642 名前:デフォルトの名無しさん mailto:sage [2017/08/05(土) 15:35:09.48 ID:v6ezSTSe.net] >>624 >>625 まあ言い方悪いけど所詮Cだからどうとでもなるよな それがObjective-Cのよさでもあるけど
643 名前:デフォルトの名無しさん mailto:sage [2017/08/05(土) 16:01:05.93 ID:QC2awpIr.net] どうとでもなることはどうでもいいんだよ 一度__nullableで切っておいて、サードパーティライブラリと競合するから_Nullableにするわって仕様変更した上に _Nullableとnullableをダブルスタンダードで生かす仕様としていることが可笑しいんだよ 昔のAppleなら__nullableを残したままnullableがモダンだからってnullableの利用を推してたと思うんだけどなぁ __nullableから_Nullableへの仕様変更とか訳わからんことするのは、やっぱりジョブズがいなくなった弊害か
644 名前:デフォルトの名無しさん mailto:sage [2017/08/05(土) 16:09:21.82 ID:UQl/9zAR.net] 定期的に「変態表記だから〜」って人が湧くけれど わけのわからん重箱的なとこにいちゃもんつけてる人は だいたい不満を持ってるのは本人が言ってるそこではないのが普通なので すると、どこだ?って発言を追った時に透けてくるのが 「メッセージングが気に入らない」で これ結局オブジェクト指向なんて〜おじさんなんじゃwwwとw
645 名前:デフォルトの名無しさん mailto:sage [2017/08/05(土) 16:25:52.03 ID:AGcDSNVp.net] >>631 メッセージングとはいっても結局事実上メソッド呼び出しとなんら変わらんからな
646 名前:デフォルトの名無しさん mailto:sage [2017/08/05(土) 16:56:54.30 ID:QC2awpIr.net] [や]は重箱的じゃなく大局的な表記の問題だと思うんだけど、それは・・・ そして、_NullableはObjC変態表記を問題視してるんじゃないよ、Appleのスタンスを問題視してるんだよ 「メッセージングが気に入らない」はDynamic Dispatchなのが嫌なんでない? 事実上はコストが上乗せされる別処理になってるわけだし # アンチObjCもObjC信者もそこまで考えてない気がしなくもない
647 名前:デフォルトの名無しさん mailto:sage [2017/08/05(土) 17:27:05.60 ID:GxOZ02Sj.net] [r method:x label:y]; func(r, x, y);
648 名前:デフォルトの名無しさん mailto:sage [2017/08/05(土) 17:31:27.19 ID:GxOZ02Sj.net] r.func(label:x, label:y)
649 名前:デフォルトの名無しさん mailto:sage [2017/08/05(土) 18:04:47.25 ID:AGcDSNVp.net] >>633 Dynamic DispatchはObjective-Cの話に限らないのでなんとも... nullableについては表面的なモダンさを表面的に考えて追求する雰囲気がSwiftが出だしたくらいから社内で蔓延してるからじゃないの 社員じゃないから知らんけど >>634 >>635 だからSwift使ってればいいと思うの
650 名前:デフォルトの名無しさん mailto:sage [2017/08/05(土) 18:13:52.73 ID:GxOZ02Sj.net] 大した違いじゃない だが「この変態!」という根強い意見にも耳を傾けなければならない
651 名前:デフォルトの名無しさん mailto:sage [2017/08/05(土) 19:23:41.38 ID:AGcDSNVp.net] >>637 だからSwift使ってればいいと思うの...
652 名前:デフォルトの名無しさん mailto:sage [2017/08/05(土) 19:39:40.05 ID:QC2awpIr.net] Swiftが出る前から Objective-C 2.0 を Modern Objective-C と銘打ってモダンを追求してたし、それについてはいつものAppleよな SwiftはDynamic Dispatchを減らす機構を入れてObjCに比べて速度向上を図ったらしいから、ObjCにもバックポートして欲しい OptionalやGenericsと同様、Swiftで試作してObjCに取り込めば皆ハッピーなんだよなぁ