Objective-C(オブジェクティブ シー)はプログラミング言語の一種。C言語をベースにSmalltalk型のオブジェクト指向機能を持たせた上位互換言語。
(Wikipedia:http://ja.wikipedia.org/wiki/Objective-C より)
前スレ
Objective-C [ObjC part:8];
http://peace.2ch.net/test/read.cgi/tech/1356341803/
Objective-C [ObjC part:7];
http://toro.2ch.net/test/read.cgi/tech/1330330906/
Objective-C [ObjC part:6];
http://toro.2ch.net/test/read.cgi/tech/1313891268/
Objective-C [ObjC part:5];
http://hibari.2ch.net/test/read.cgi/tech/1279730299/
Objective-C [ObjC part:4];
http://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
探検
Objective-C [ObjC part:8.1]; [転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
2014/11/01(土) 13:35:17.70ID:12FSUUrY
554デフォルトの名無しさん
2016/10/25(火) 14:18:03.51ID:OZkbpJ7G >>553
必要なスコープに1回宣言すればいい。
というか、外部に変数を公開する事は、特殊な事情以外ありえないから、
ヘッダにはアクセサ即ちプロパティを書けばいい。
つまりインスタンス変数なら@implementation{ } のブロックで宣言すればいいよ。
継承した子クラスからその変数へは、親クラスのアクセサ経由でアクセスするのが普通。
こうすると、ヘッダには外部に公開する情報しか現れない。
どうしても子クラスから親クラスの変数に直接触りたい場合は、
親クラスの@interface{ }ブロックで宣言する。
その場合はデフォルトでアクセス制限が@protectedになる。
必要なスコープに1回宣言すればいい。
というか、外部に変数を公開する事は、特殊な事情以外ありえないから、
ヘッダにはアクセサ即ちプロパティを書けばいい。
つまりインスタンス変数なら@implementation{ } のブロックで宣言すればいいよ。
継承した子クラスからその変数へは、親クラスのアクセサ経由でアクセスするのが普通。
こうすると、ヘッダには外部に公開する情報しか現れない。
どうしても子クラスから親クラスの変数に直接触りたい場合は、
親クラスの@interface{ }ブロックで宣言する。
その場合はデフォルトでアクセス制限が@protectedになる。
555デフォルトの名無しさん
2016/10/25(火) 14:31:48.57ID:OZkbpJ7G556デフォルトの名無しさん
2016/11/17(木) 12:45:51.00ID:0S40a4Cy インスタンスメソッドの実行に関して教えてください。
// message sending
[obj say: @
// message sending
[obj say: @
557デフォルトの名無しさん
2016/11/17(木) 13:13:08.74ID:Psw7U5GH 事切れたか
558デフォルトの名無しさん
2016/11/17(木) 13:29:09.43ID:5aO/SijD ダブルクオートとかで切れるのよく見かけるけど、@ でも切れるんかな
559デフォルトの名無しさん
2016/11/17(木) 13:29:10.81ID:0S40a4Cy ソースコードが勝手に切られちゃう(サニタイズ関係?)みたいなので画像で失礼します。
インスタンスメソッドの実行に関して教えてください。
message sending / function pointer
どちらの方法でもちゃんと動くのは確認できましたが、
なぜ後者はSELパラメータが必須(この場合selector) な仕様になっているんでしょう?
冗長に見えますが何か意味があるんでしょうか。
インスタンスメソッドの実行に関して教えてください。
message sending / function pointer
どちらの方法でもちゃんと動くのは確認できましたが、
なぜ後者はSELパラメータが必須(この場合selector) な仕様になっているんでしょう?
冗長に見えますが何か意味があるんでしょうか。
560デフォルトの名無しさん
2016/11/17(木) 13:30:21.21ID:5aO/SijD @ の次は当然 " がくるだろうけど、今まで1個目の"が表示されて切れるんだよなあ
561デフォルトの名無しさん
2016/11/17(木) 13:33:39.43ID:0S40a4Cy > SELパラメータが必須
instanceMethodForSelector: の時点で伝えてあるのに、なぜ実行時にも必要になるのかという事です。
instanceMethodForSelector: の時点で伝えてあるのに、なぜ実行時にも必要になるのかという事です。
562デフォルトの名無しさん
2016/11/17(木) 13:40:44.67ID:+o4tuiiL >>561
1.instanceMethodForSelectorでメソッドの実体である関数のポインタを取得(IMP func)
2.funcをキャストして呼び出し
2のときに、メソッドの暗黙の第1,第2引数である id obj, SEL selectorを渡してます。
1.instanceMethodForSelectorでメソッドの実体である関数のポインタを取得(IMP func)
2.funcをキャストして呼び出し
2のときに、メソッドの暗黙の第1,第2引数である id obj, SEL selectorを渡してます。
563デフォルトの名無しさん
2016/11/17(木) 13:54:11.06ID:0S40a4Cy ありがとうございます。それでは改めて聞き直します。
メソッドの暗黙の第2引数が SEL である、そもそもの設計の意図はなんなんでしょう。
内部で振り分ければいいので複数のメソッドに対して一つの関数(ポインタ)が共通で対応可能とか?
それが実際にできたとして何かメリットがあるんでしょうか。
メソッドの暗黙の第2引数が SEL である、そもそもの設計の意図はなんなんでしょう。
内部で振り分ければいいので複数のメソッドに対して一つの関数(ポインタ)が共通で対応可能とか?
それが実際にできたとして何かメリットがあるんでしょうか。
564デフォルトの名無しさん
2016/11/17(木) 14:00:22.50ID:f6OBJy8Y セレクタを見て他のメソッドにデリゲートするとか。
565デフォルトの名無しさん
2016/11/17(木) 14:05:35.87ID:+o4tuiiL ランタイムは、渡されたセレクタをメソッドリストから検索して、有れば実行、無ければエラー。
ってことかな。
ってことかな。
566デフォルトの名無しさん
2016/11/17(木) 14:28:15.44ID:+o4tuiiL IMP使った場合はランタイムは経由しないでダイレクトに関数コールするけど、
通常は動的にメソッド呼び出しをするのでそういう仕様になってる。
のではないだろうか。
通常は動的にメソッド呼び出しをするのでそういう仕様になってる。
のではないだろうか。
567デフォルトの名無しさん
2016/11/17(木) 18:17:20.63ID:ZyPoEOxl サブクラスでのオーバーライドをサポートするために
だと思うよ。
だと思うよ。
568デフォルトの名無しさん
2016/11/17(木) 21:32:33.37ID:XVALpd1q Smalltalkで、実行中メソッドのコンテキスト内からそのセレクタを得ることができる機構を
Objective-Cでも_cmdパラメーターを介して模したかったからなのでは?
Object subclass: Foo [ bar [ thisContext method selector displayNl ] ]
Foo new bar "=> #bar "
Objective-Cでも_cmdパラメーターを介して模したかったからなのでは?
Object subclass: Foo [ bar [ thisContext method selector displayNl ] ]
Foo new bar "=> #bar "
569デフォルトの名無しさん
2016/11/17(木) 23:13:49.69ID:+o4tuiiL だいたいその辺の、実行時解決を実現したかったという理由だと思うけど、
ランタイムがメソッド呼び出しするときの動作は
1.レシーバがnilかどうか
2.レシーバのメソッドリストに該当メソッドがあるか
3.なければスーパークラスにあるか
4.なければthrow exception
だよね。
だからメソッド呼ぶときはランタイムにレシーバとselectorを渡して調べてもらう必要が有るんですよ。
ランタイムがメソッド呼び出しするときの動作は
1.レシーバがnilかどうか
2.レシーバのメソッドリストに該当メソッドがあるか
3.なければスーパークラスにあるか
4.なければthrow exception
だよね。
だからメソッド呼ぶときはランタイムにレシーバとselectorを渡して調べてもらう必要が有るんですよ。
570デフォルトの名無しさん
2016/11/17(木) 23:51:59.51ID:8N+auLd3 レシーバはselfとして使うから必要なのはわかるんだけど、セレクタはいつ必要になるの?
ランタイムに調べてもらうのは関数(メソッド実体)コールの前だろうから、コール時にはすでに不要な情報だよね
ランタイムに調べてもらうのは関数(メソッド実体)コールの前だろうから、コール時にはすでに不要な情報だよね
571デフォルトの名無しさん
2016/11/18(金) 00:08:47.34ID:QxITf25H572デフォルトの名無しさん
2016/11/18(金) 02:19:58.76ID:QxITf25H >>570
ちなみにこれでも動作する。id,SELは渡してない。
void(*f)(void) = [ViewController instanceMethodForSelector:@selector(hoge)];
f();
- (void)hoge
{
NSLog(@"%@", NSStringFromSelector(_cmd));
}
SELを渡してないので null と出力される
idも渡してないので、hoge内でselfにアクセスすると落ちる。
ちなみにこれでも動作する。id,SELは渡してない。
void(*f)(void) = [ViewController instanceMethodForSelector:@selector(hoge)];
f();
- (void)hoge
{
NSLog(@"%@", NSStringFromSelector(_cmd));
}
SELを渡してないので null と出力される
idも渡してないので、hoge内でselfにアクセスすると落ちる。
573デフォルトの名無しさん
2016/11/18(金) 08:55:20.76ID:1f4/DDXi なるほどこれはわかりやすい
574デフォルトの名無しさん
2016/11/18(金) 09:33:05.33ID:sBZu/NEl BathyScapheっていう2ch Viewer使ってます。
>>559
みたいな画像をuploadするにはどうすればいいっすか?
2chのサイトではdrawツールがブラウザ内にあって、それで落書きはできるみたいですが、pngとかgif画像をuploadしたいのです。
>>559
みたいな画像をuploadするにはどうすればいいっすか?
2chのサイトではdrawツールがブラウザ内にあって、それで落書きはできるみたいですが、pngとかgif画像をuploadしたいのです。
575デフォルトの名無しさん
2016/11/18(金) 11:55:15.19ID:U2qFJJrM576デフォルトの名無しさん
2016/11/18(金) 11:57:16.56ID:U2qFJJrM まあ、すぐにサイズオーバーになるのでごく簡単な絵しかアップできません。
577デフォルトの名無しさん
2016/11/18(金) 12:14:37.99ID:8cb+/Ta9 消せないから気軽にあげられないのがちょっとあれよね
プログラム板なんだから自分で書けば良いよ
てことでobjcで書いてみた
サイズの頭打ちがあるからと思ってインデックスカラーに圧縮したけど弾かれるのね
プログラム板なんだから自分で書けば良いよ
てことでobjcで書いてみた
サイズの頭打ちがあるからと思ってインデックスカラーに圧縮したけど弾かれるのね
578デフォルトの名無しさん
2016/11/18(金) 12:22:18.47ID:U2qFJJrM IMP関数ポインタの SELパラメターの件
正直言うと、自分にはコメの意見の善し悪しを判断する能力ありません...。
ググるとこれ使って >>559 で書いたような事ができるようですが (参考:class_addMethod)
設計側はそういう用途まで考慮していたのかは、よく分かりませんでした。
シグネチャを共通にしたかった? どうなんでしょう、それって何か気持ちいいから以上の理由はあるんですかね。
正直言うと、自分にはコメの意見の善し悪しを判断する能力ありません...。
ググるとこれ使って >>559 で書いたような事ができるようですが (参考:class_addMethod)
設計側はそういう用途まで考慮していたのかは、よく分かりませんでした。
シグネチャを共通にしたかった? どうなんでしょう、それって何か気持ちいいから以上の理由はあるんですかね。
579デフォルトの名無しさん
2016/11/18(金) 12:39:28.44ID:QxITf25H >>578
シグネチャが共通というより、同一の関数なので同じシグネチャなんですよ。
ランタイムが呼ぶメソッドの実体も、IMPを取得してダイレクトに呼ぶ関数も、「同じ関数」です。
その関数の引数が (id, SEL, …) なんですね。
シグネチャが共通というより、同一の関数なので同じシグネチャなんですよ。
ランタイムが呼ぶメソッドの実体も、IMPを取得してダイレクトに呼ぶ関数も、「同じ関数」です。
その関数の引数が (id, SEL, …) なんですね。
580デフォルトの名無しさん
2016/11/18(金) 12:42:31.61ID:QxITf25H で、自分はIMPは使いません。
IMPを使うくらいならCの関数を書けばいいだけなので。
IMPを使うくらいならCの関数を書けばいいだけなので。
581デフォルトの名無しさん
2016/11/18(金) 12:51:34.13ID:QxITf25H Objective-Cは、以前はメソッド呼び出しのオーバーヘッドがネックになってたようなので、
IMPのAPIは、既存クラスのメソッドを高速に呼び出すために作ったんじゃないですかね。
IMPのAPIは、既存クラスのメソッドを高速に呼び出すために作ったんじゃないですかね。
582デフォルトの名無しさん
2016/11/18(金) 13:05:14.30ID:sBZu/NEl >>576
いやぁ、うれしい。
秘伝のテクを開陳してくれて、あんがとう。
けど、JavaSou苦手なんすよねぇ。
tarea(text area)を取得して、その直前にinput, script要素を挿入してinputボタンの押下で
foo関数を呼ぶ様にしてるって事みたい。
FireFoxもGeasemonkeyも使った事無いっす。
Safari, Chromeでも同じ事できるんでしょうか?
Geasemonkey for Safari, Chromeを探せって事なんすね。
いま、WKWebViewでもloadしたhtml, cssを書き換えられないか?調べてます。
Geasemonkey likeな動作をどうやってさせようかと!
いやぁ、うれしい。
秘伝のテクを開陳してくれて、あんがとう。
けど、JavaSou苦手なんすよねぇ。
tarea(text area)を取得して、その直前にinput, script要素を挿入してinputボタンの押下で
foo関数を呼ぶ様にしてるって事みたい。
FireFoxもGeasemonkeyも使った事無いっす。
Safari, Chromeでも同じ事できるんでしょうか?
Geasemonkey for Safari, Chromeを探せって事なんすね。
いま、WKWebViewでもloadしたhtml, cssを書き換えられないか?調べてます。
Geasemonkey likeな動作をどうやってさせようかと!
583デフォルトの名無しさん
2016/11/18(金) 21:20:02.14ID:U2qFJJrM ObjCスレだからObjCで頑張るのはアリかもしれませんけど、物事には適材適所ってもんがあるとおも...。
584デフォルトの名無しさん
2016/11/19(土) 03:19:56.84ID:vr8hDAX5 適材適所かどうかは自明ではないね
585デフォルトの名無しさん
2016/11/26(土) 10:43:02.50ID:EbyefIsj みんなSwiftに移行しちゃったの?
Swift始めた頃、小さな仕様がコロコロ変わるからObj-Cに戻ってきてたけど
もう安定したのかな。
Swift始めた頃、小さな仕様がコロコロ変わるからObj-Cに戻ってきてたけど
もう安定したのかな。
586デフォルトの名無しさん
2016/11/28(月) 16:59:47.56ID:AK2eqXeC >>585
Swift3でメソッド名の整理が行われて、短くなった。
"Taylor".writeToFile("filename", atomically: true, encoding: NSUTF8StringEncoding)
"Taylor".write(toFile: "somefile", atomically: true, encoding: String.Encoding.utf8)
上2.3/下3
Swift3が良さげに見えるのでObj-Cからの移行者がボチボチ増えてるかも。
Swift3でメソッド名の整理が行われて、短くなった。
"Taylor".writeToFile("filename", atomically: true, encoding: NSUTF8StringEncoding)
"Taylor".write(toFile: "somefile", atomically: true, encoding: String.Encoding.utf8)
上2.3/下3
Swift3が良さげに見えるのでObj-Cからの移行者がボチボチ増えてるかも。
587デフォルトの名無しさん
2016/11/30(水) 23:57:30.93ID:48Nf+yqm588デフォルトの名無しさん
2016/12/01(木) 09:30:20.02ID:RHRo1hP4 コンパイラとしての安定性は最初から問題無いんじゃない?
コンパイラが原因でアプリが落ちるっては経験無いなぁ。
C++、Javaが最近仕様変更が激しいのと同じく、Swiftだって言語仕様変更があるって事で、コンパイラとしては安定してると思う。
例:C++TR1, C++11, C++14
JavaSE6, 7, 8, 9
Swift3の言語仕様変更は、現在アナウンスされてないんじゃないのか?Swift4ってのはABIの導入って事で、言語仕様の変更じゃ無いし。
コンパイラが原因でアプリが落ちるっては経験無いなぁ。
C++、Javaが最近仕様変更が激しいのと同じく、Swiftだって言語仕様変更があるって事で、コンパイラとしては安定してると思う。
例:C++TR1, C++11, C++14
JavaSE6, 7, 8, 9
Swift3の言語仕様変更は、現在アナウンスされてないんじゃないのか?Swift4ってのはABIの導入って事で、言語仕様の変更じゃ無いし。
589デフォルトの名無しさん
2016/12/01(木) 12:10:25.84ID:5zfWITAP ぬるぽで落ちてもコンパイラのせいです(kr
590デフォルトの名無しさん
2016/12/01(木) 12:43:47.19ID:RHRo1hP4 >>589
それは、nil guardしてないコードのせい!
それは、nil guardしてないコードのせい!
591デフォルトの名無しさん
2016/12/01(木) 17:17:16.90ID:ODvXgIaxキチガイの集まり・創価学会・公明党!
人殺しの殺人鬼が政治活動・創価学会・公明党!
池田大作・人殺しの殺人鬼・創価学会・公明党!
あやかりドチンピラの池田糞作・創価学会・公明党!
592デフォルトの名無しさん
2016/12/02(金) 10:10:54.60ID:84dQUHiS 禁止語句、に追加すれば、見なくてすむよ!
593デフォルトの名無しさん
2016/12/03(土) 14:45:44.29ID:rA9b0IH0 孔明党ならゆるされるのだろうか?
仲達「ゆるさないぞ!」
仲達「ゆるさないぞ!」
594デフォルトの名無しさん
2016/12/07(水) 10:42:29.07ID:iWjUJEoY メッセージをたくさん送る時、[[[なるじゃん?
みなさんどう打ってます?Xcodeに自動補完とかあるの?
みなさんどう打ってます?Xcodeに自動補完とかあるの?
595デフォルトの名無しさん
2016/12/07(水) 11:09:26.74ID:lAZ4q7Te596デフォルトの名無しさん
2016/12/07(水) 12:37:41.63ID:YlvsrELD597デフォルトの名無しさん
2016/12/07(水) 15:21:19.56ID:iWjUJEoY ありがとうございます!
SwiftからCocoaプログラミングを始めて、その背景を知りたかったのでObjective-Cをちょこっと調べてました。
そこで、気になって質問しました^_^
SwiftからCocoaプログラミングを始めて、その背景を知りたかったのでObjective-Cをちょこっと調べてました。
そこで、気になって質問しました^_^
598デフォルトの名無しさん
2016/12/07(水) 15:35:56.63ID:lAZ4q7Te >>597
俺と同じパターンだね。
Objective-Cのサンプルを読む事もあるしね。
Swift -> Objective-Cって人も最近は居るだろうね。
Swift3からObjective-Cを見ると、冗長な部分が目立ってしまう。
例:
obj-c: dissmissViewControllerAnimated: complition
swift3: dismiss#animated:
Objective-Cはコンパイル早いっていうメリットがあるけどね。
俺と同じパターンだね。
Objective-Cのサンプルを読む事もあるしね。
Swift -> Objective-Cって人も最近は居るだろうね。
Swift3からObjective-Cを見ると、冗長な部分が目立ってしまう。
例:
obj-c: dissmissViewControllerAnimated: complition
swift3: dismiss#animated:
Objective-Cはコンパイル早いっていうメリットがあるけどね。
599デフォルトの名無しさん
2016/12/07(水) 15:48:24.59ID:iWjUJEoY600デフォルトの名無しさん
2016/12/07(水) 16:09:27.53ID:lAZ4q7Te >>599
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する
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する
601デフォルトの名無しさん
2016/12/09(金) 00:46:26.18ID:68yJ6/bb602デフォルトの名無しさん
2016/12/15(木) 13:46:48.92ID:7KRIzock603デフォルトの名無しさん
2016/12/16(金) 09:51:52.86ID:6vWCzpx7 Bool areInst(int thing1, int thing2)
{
return(thing1 - thing2)
}
これ、YESかNOが返されるんだけど
0か1が返ってくるには、どうすればいい?
{
return(thing1 - thing2)
}
これ、YESかNOが返されるんだけど
0か1が返ってくるには、どうすればいい?
604デフォルトの名無しさん
2016/12/16(金) 10:15:26.25ID:OzPYYpv3605デフォルトの名無しさん
2017/02/14(火) 17:11:03.02ID:qY2M4Y7r aac→pcmの変換について教えて。
ネット上のファイルからaacのデータ取ってきて、
1.AudioFileStreamにデータ食わせてAudioFileStreamPropertyListenerProcを受けてからASBDを取得。
2.1.のASBDをAudioConverterのインプットに設定。アウトプットはAudioUnitのインプットと同じ設定。
3.AudioConverterFillComplexBufferを呼び出してAudioConverterComplexInputDataProcのコールバックで、AudioFileStreamPacketsProcで通知されたデータを渡す。
という流れでデータを処理してるんだけどいくつかのコンテンツでAudioConverterFillComplexBufferがエラー(1852797029)で帰ってくるんたが理由がわからん。何でかわかる?
ネット上のファイルからaacのデータ取ってきて、
1.AudioFileStreamにデータ食わせてAudioFileStreamPropertyListenerProcを受けてからASBDを取得。
2.1.のASBDをAudioConverterのインプットに設定。アウトプットはAudioUnitのインプットと同じ設定。
3.AudioConverterFillComplexBufferを呼び出してAudioConverterComplexInputDataProcのコールバックで、AudioFileStreamPacketsProcで通知されたデータを渡す。
という流れでデータを処理してるんだけどいくつかのコンテンツでAudioConverterFillComplexBufferがエラー(1852797029)で帰ってくるんたが理由がわからん。何でかわかる?
606デフォルトの名無しさん
2017/02/22(水) 21:35:58.65ID:bVPEWVD2607デフォルトの名無しさん
2017/02/24(金) 09:40:08.04ID:hWTo6NC+ >>605
解決した。データが微妙におかしかった。
解決した。データが微妙におかしかった。
608デフォルトの名無しさん
2017/07/09(日) 12:41:36.82ID:GCKhJDjB gfortranでコンパイルしたfortran subroutineをObjCから呼べますか?
609デフォルトの名無しさん
2017/07/09(日) 17:45:16.59ID:8iS3GcZb Objective-CというかCからで、gcc(gfortran)はCへのインターフェースを用意してるし、gccといえどもプラットフォームOSのオブジェクトを吐き出すんだから、clangでのオブジェクトとつーかーでリンクできるから呼べるだろ
610デフォルトの名無しさん
2017/07/09(日) 19:25:46.94ID:XPzyjd3D Cでできることはすべてできる
そう、Objective-Cならね
そう、Objective-Cならね
611デフォルトの名無しさん
2017/07/09(日) 19:30:40.19ID:GCKhJDjB gfortran -c test.f
をコンパイルしてtest.oを得たとします。test.fに入ったsubroutineをObjCのmain.mから呼ぶことができますか?
clang main.m test.o -framework Foundation -o a.out
こうやってコンパイルできるのでしょうか?
調べると、binary compatibilityがあるよ!って話がヒットします。
をコンパイルしてtest.oを得たとします。test.fに入ったsubroutineをObjCのmain.mから呼ぶことができますか?
clang main.m test.o -framework Foundation -o a.out
こうやってコンパイルできるのでしょうか?
調べると、binary compatibilityがあるよ!って話がヒットします。
612デフォルトの名無しさん
2017/07/09(日) 19:47:18.04ID:8iS3GcZb コンパイルというかリンクできるかリンカーのお仕事
リンカーの理解できるオブジェクトはGCCでも排出できる。言語の違いはCのインターフェースで共通。なのでできるだろ
やってみろよwやってできなかったらこっちで検証してみてやるよ(えらそうw)
リンカーの理解できるオブジェクトはGCCでも排出できる。言語の違いはCのインターフェースで共通。なのでできるだろ
やってみろよwやってできなかったらこっちで検証してみてやるよ(えらそうw)
613デフォルトの名無しさん
2017/08/04(金) 11:02:58.83ID:Xk8/NaTI swfit4も結構変更があるみたいだね。
swift5もでるみたいだし、objcでいいや
swift5もでるみたいだし、objcでいいや
614デフォルトの名無しさん
2017/08/04(金) 11:16:18.04ID:PF1N3/4o615デフォルトの名無しさん
2017/08/04(金) 12:00:05.92ID:CVNSY5Yd 今まで通りObjective-Cでは困らないんだよね..
616デフォルトの名無しさん
2017/08/04(金) 13:36:11.66ID:ZGf6UrbU もう俺kotlinのiosサポート待ちなんだが
617デフォルトの名無しさん
2017/08/04(金) 17:00:30.23ID:Xk8/NaTI XcodeProjAdder
618デフォルトの名無しさん
2017/08/05(土) 09:11:30.54ID:AGcDSNVp 結局Objective-Cがなんだかんだ柔軟性があって使いやすい
619デフォルトの名無しさん
2017/08/05(土) 09:30:13.70ID:ocnuRu9M Objective-Cをディスってるやつらが理解できないな
C言語使ったことないのかね
C言語使ったことないのかね
620デフォルトの名無しさん
2017/08/05(土) 09:53:25.64ID:t7RO58+g Cをと言ったら老害扱いするヤツもいるからなw
621デフォルトの名無しさん
2017/08/05(土) 10:41:10.52ID:XESdgnCd Cを使ってたから[インスタンス メソッド:引数 キーワード:引数]の冗長になる表記が鬱陶しかった
ObjCを絶賛してる奴らはC言語を使ったことないのかね、とは思う
しかし、最近追加された_Nullable, _Nonnullはどうにかならんものかのう
アンダーバー一つなのと大文字で始めるのが気に入らねぇ、nullable, nonnullだけにできなかったものか
Apple様がサードパーティライブラリなんて気にしてるんじゃねぇよ
ObjCを絶賛してる奴らはC言語を使ったことないのかね、とは思う
しかし、最近追加された_Nullable, _Nonnullはどうにかならんものかのう
アンダーバー一つなのと大文字で始めるのが気に入らねぇ、nullable, nonnullだけにできなかったものか
Apple様がサードパーティライブラリなんて気にしてるんじゃねぇよ
622デフォルトの名無しさん
2017/08/05(土) 12:50:06.76ID:x2WXXz7r >>621
#defineマクロ使ってnullableって書けば良いじゃん。
#defineマクロ使ってnullableって書けば良いじゃん。
623デフォルトの名無しさん
2017/08/05(土) 12:59:54.68ID:x2WXXz7r #define nullable _Nullable
624デフォルトの名無しさん
2017/08/05(土) 15:28:20.27ID:AGcDSNVp >>621
わろた
まあ、そのメッセージ記法は最初見たときはその変態的な表記方法に非常に面食らった
なんせその[や]を使うのは配列だと決まっていたからな
でもとりあえず使っているうちに、Cの関数表記とObjectiveな部分が非常にわかりやすく共存できるという事実に気づいたとき一気に好きになったのを思い出した
わろた
まあ、そのメッセージ記法は最初見たときはその変態的な表記方法に非常に面食らった
なんせその[や]を使うのは配列だと決まっていたからな
でもとりあえず使っているうちに、Cの関数表記とObjectiveな部分が非常にわかりやすく共存できるという事実に気づいたとき一気に好きになったのを思い出した
625デフォルトの名無しさん
2017/08/05(土) 15:30:37.83ID:Xkpybudy この言語完全にオワコン
626デフォルトの名無しさん
2017/08/05(土) 15:31:16.18ID:AGcDSNVp >>625
Swift使ってればいいと思うよ
Swift使ってればいいと思うよ
627デフォルトの名無しさん
2017/08/05(土) 15:35:09.48ID:v6ezSTSe628デフォルトの名無しさん
2017/08/05(土) 16:01:05.93ID:QC2awpIr どうとでもなることはどうでもいいんだよ
一度__nullableで切っておいて、サードパーティライブラリと競合するから_Nullableにするわって仕様変更した上に
_Nullableとnullableをダブルスタンダードで生かす仕様としていることが可笑しいんだよ
昔のAppleなら__nullableを残したままnullableがモダンだからってnullableの利用を推してたと思うんだけどなぁ
__nullableから_Nullableへの仕様変更とか訳わからんことするのは、やっぱりジョブズがいなくなった弊害か
一度__nullableで切っておいて、サードパーティライブラリと競合するから_Nullableにするわって仕様変更した上に
_Nullableとnullableをダブルスタンダードで生かす仕様としていることが可笑しいんだよ
昔のAppleなら__nullableを残したままnullableがモダンだからってnullableの利用を推してたと思うんだけどなぁ
__nullableから_Nullableへの仕様変更とか訳わからんことするのは、やっぱりジョブズがいなくなった弊害か
629デフォルトの名無しさん
2017/08/05(土) 16:09:21.82ID:UQl/9zAR 定期的に「変態表記だから〜」って人が湧くけれど
わけのわからん重箱的なとこにいちゃもんつけてる人は
だいたい不満を持ってるのは本人が言ってるそこではないのが普通なので
すると、どこだ?って発言を追った時に透けてくるのが
「メッセージングが気に入らない」で
これ結局オブジェクト指向なんて〜おじさんなんじゃwwwとw
わけのわからん重箱的なとこにいちゃもんつけてる人は
だいたい不満を持ってるのは本人が言ってるそこではないのが普通なので
すると、どこだ?って発言を追った時に透けてくるのが
「メッセージングが気に入らない」で
これ結局オブジェクト指向なんて〜おじさんなんじゃwwwとw
630デフォルトの名無しさん
2017/08/05(土) 16:25:52.03ID:AGcDSNVp >>629
メッセージングとはいっても結局事実上メソッド呼び出しとなんら変わらんからな
メッセージングとはいっても結局事実上メソッド呼び出しとなんら変わらんからな
631デフォルトの名無しさん
2017/08/05(土) 16:56:54.30ID:QC2awpIr [や]は重箱的じゃなく大局的な表記の問題だと思うんだけど、それは・・・
そして、_NullableはObjC変態表記を問題視してるんじゃないよ、Appleのスタンスを問題視してるんだよ
「メッセージングが気に入らない」はDynamic Dispatchなのが嫌なんでない?
事実上はコストが上乗せされる別処理になってるわけだし
# アンチObjCもObjC信者もそこまで考えてない気がしなくもない
そして、_NullableはObjC変態表記を問題視してるんじゃないよ、Appleのスタンスを問題視してるんだよ
「メッセージングが気に入らない」はDynamic Dispatchなのが嫌なんでない?
事実上はコストが上乗せされる別処理になってるわけだし
# アンチObjCもObjC信者もそこまで考えてない気がしなくもない
632デフォルトの名無しさん
2017/08/05(土) 17:27:05.60ID:GxOZ02Sj [r method:x label:y];
func(r, x, y);
func(r, x, y);
633デフォルトの名無しさん
2017/08/05(土) 17:31:27.19ID:GxOZ02Sj r.func(label:x, label:y)
634デフォルトの名無しさん
2017/08/05(土) 18:04:47.25ID:AGcDSNVp635デフォルトの名無しさん
2017/08/05(土) 18:13:52.73ID:GxOZ02Sj 大した違いじゃない
だが「この変態!」という根強い意見にも耳を傾けなければならない
だが「この変態!」という根強い意見にも耳を傾けなければならない
636デフォルトの名無しさん
2017/08/05(土) 19:23:41.38ID:AGcDSNVp >>635
だからSwift使ってればいいと思うの...
だからSwift使ってればいいと思うの...
637デフォルトの名無しさん
2017/08/05(土) 19:39:40.05ID:QC2awpIr Swiftが出る前から Objective-C 2.0 を Modern Objective-C と銘打ってモダンを追求してたし、それについてはいつものAppleよな
SwiftはDynamic Dispatchを減らす機構を入れてObjCに比べて速度向上を図ったらしいから、ObjCにもバックポートして欲しい
OptionalやGenericsと同様、Swiftで試作してObjCに取り込めば皆ハッピーなんだよなぁ
SwiftはDynamic Dispatchを減らす機構を入れてObjCに比べて速度向上を図ったらしいから、ObjCにもバックポートして欲しい
OptionalやGenericsと同様、Swiftで試作してObjCに取り込めば皆ハッピーなんだよなぁ
638デフォルトの名無しさん
2017/08/05(土) 19:40:24.64ID:GxOZ02Sj639デフォルトの名無しさん
2017/08/05(土) 19:42:36.20ID:AGcDSNVp640デフォルトの名無しさん
2017/08/05(土) 19:46:59.94ID:GxOZ02Sj641デフォルトの名無しさん
2017/08/05(土) 20:03:05.50ID:AGcDSNVp Objective-Cが当初敬遠されたのはObjective部分のsyntaxというよりはメモリ管理だと思ったが
まあそれに追い打ちをかけるようにallocとinitの組み合わせが普通に頻出したもんだから変態的だと思う人が多かったのだろう
さらにオブジェクト変数がポインタともなればなおさらだろうな
Object *obj = [[Object alloc] initWithParam: a];
まあそれに追い打ちをかけるようにallocとinitの組み合わせが普通に頻出したもんだから変態的だと思う人が多かったのだろう
さらにオブジェクト変数がポインタともなればなおさらだろうな
Object *obj = [[Object alloc] initWithParam: a];
642デフォルトの名無しさん
2017/08/05(土) 20:28:36.38ID:GxOZ02Sj 俺は別に、Obj-Cは実引数の順番が変わるぐらいで変態だとは思わんね
ラベルは有った方がいいし、第一引数は省略可とすべきだし
今風のシンタックスにするとあら不思議Swiftみたいだね
ラベルは有った方がいいし、第一引数は省略可とすべきだし
今風のシンタックスにするとあら不思議Swiftみたいだね
643デフォルトの名無しさん
2017/08/05(土) 20:34:58.96ID:AGcDSNVp >>642
だったらこんなところにいないで、あなたがイメージした理想syntaxと近いSwift使えばいいじゃん...
だったらこんなところにいないで、あなたがイメージした理想syntaxと近いSwift使えばいいじゃん...
644デフォルトの名無しさん
2017/08/05(土) 20:45:40.97ID:NrXpiBRr 何かおもしろいやつがいるな
>>642を意訳すると
Swift使ったこともないから全然知らないんだけど、普通に自分で今風の文法みたいの考えてみたら謀らずともSwiftになっちゃった
俺でも思い浮かぶほどSwiftって自然な文法だっんだ!Swift最高じゃん!
でおk?
>>642を意訳すると
Swift使ったこともないから全然知らないんだけど、普通に自分で今風の文法みたいの考えてみたら謀らずともSwiftになっちゃった
俺でも思い浮かぶほどSwiftって自然な文法だっんだ!Swift最高じゃん!
でおk?
645デフォルトの名無しさん
2017/08/05(土) 20:50:17.10ID:GxOZ02Sj646デフォルトの名無しさん
2017/08/05(土) 20:53:47.23ID:AGcDSNVp647デフォルトの名無しさん
2017/08/05(土) 20:56:12.81ID:QC2awpIr メモリ管理のalloc/freeやポインタ変数なんてそれこそCをやってたら気にならないでしょ...
>>640
本当に性能良くなるのは特定条件下でさほど影響が出るものじゃないよなw
それでもまぁObjCがSwiftに劣っている点ではあるので、気が向いたら対応して欲しいものよ
>>640
本当に性能良くなるのは特定条件下でさほど影響が出るものじゃないよなw
それでもまぁObjCがSwiftに劣っている点ではあるので、気が向いたら対応して欲しいものよ
648デフォルトの名無しさん
2017/08/05(土) 20:59:57.92ID:GxOZ02Sj649デフォルトの名無しさん
2017/08/05(土) 21:00:23.43ID:AGcDSNVp >>647
いやそのはずなんだけど、結局Objective-Cをディスってる人がけっこういるのは、純粋なCをちゃんと使ってた人が殊PCアプリプログラマにおいては少なかったってことなのかね?
いやそのはずなんだけど、結局Objective-Cをディスってる人がけっこういるのは、純粋なCをちゃんと使ってた人が殊PCアプリプログラマにおいては少なかったってことなのかね?
650デフォルトの名無しさん
2017/08/05(土) 21:05:32.04ID:GxOZ02Sj >>647
コンパイル時に静的に解決したいメソッド呼び出しには、たぶんレシーバにnonnull必須になるのかな
それがSwiftにnonnullが必要だった理由かも
Obj-Cで高速化が必要な場合は、Cで書いちゃえばいいのでいらんと思うけどね
コンパイル時に静的に解決したいメソッド呼び出しには、たぶんレシーバにnonnull必須になるのかな
それがSwiftにnonnullが必要だった理由かも
Obj-Cで高速化が必要な場合は、Cで書いちゃえばいいのでいらんと思うけどね
651デフォルトの名無しさん
2017/08/05(土) 21:09:23.61ID:NrXpiBRr とりあえずSwift使ったことないとか言ってるわりにわりと細かいSwiftネタ挟んできてて草
652デフォルトの名無しさん
2017/08/05(土) 21:10:26.33ID:GxOZ02Sj >>651
気にしすぎだってw
気にしすぎだってw
653デフォルトの名無しさん
2017/08/05(土) 21:15:06.89ID:NrXpiBRr654デフォルトの名無しさん
2017/08/05(土) 21:19:04.08ID:GxOZ02Sj■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 今年の漢字 [ぐれ★]
- 今年の漢字は「熊」に決定! 相次ぐクマ被害 去年は「金」 [冬月記者★]
- ミス・ユニバース フィンランド代表の「つり目」写真が波紋… 本人釈明も批判やまず 協会謝罪「徹底的に検証」へ★3 [冬月記者★]
- 高市首相の答弁書に「台湾有事答えない」と明記 存立危機発言当時 ★4 [蚤の市★]
- 「偽サッチャー」「自滅的」「時代遅れ」 高市首相の経済政策を海外メディアが酷評 ★4 [蚤の市★]
- 【おこめ券】物価高対策の“おこめ券”全米販は1枚477円で販売へ 鈴木農水大臣「国民の皆様に活用いただきやすいよう工夫いただいた」 [ぐれ★]
- ハウステンボス、大規模漏えいの可能性。顧客150万人の個人情報、役職員・取引先のマイナンバー情報など [256556981]
- 【速報】今年の漢字、「熊」!wwwwwwwwwwwwwwwwwwwwwwwww [279254606]
- 今年の「感じ」を予想するスレ
- 鈴木農水大臣「今年の漢字は苗。総理のお名前もある」 [256556981]
- たつき鯨のせいで人生狂ったんだが
- 【速報】今年のゲームオブザイヤー、Clair Obscur: Expedition 33 [779938112]
