Objective-C [ObjC part:8.1]; [転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
2014/11/01(土) 13:35:17.70ID:12FSUUrY
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
2016/10/25(火) 13:48:49.63ID:aBo6S+EN
@interface
@implementation

これに変数2回宣言するだろ?
違いってなんですか?
2016/10/25(火) 14:18:03.51ID:OZkbpJ7G
>>553
必要なスコープに1回宣言すればいい。
というか、外部に変数を公開する事は、特殊な事情以外ありえないから、
ヘッダにはアクセサ即ちプロパティを書けばいい。
つまりインスタンス変数なら@implementation{ } のブロックで宣言すればいいよ。

継承した子クラスからその変数へは、親クラスのアクセサ経由でアクセスするのが普通。
こうすると、ヘッダには外部に公開する情報しか現れない。

どうしても子クラスから親クラスの変数に直接触りたい場合は、
親クラスの@interface{ }ブロックで宣言する。
その場合はデフォルトでアクセス制限が@protectedになる。
2016/10/25(火) 14:31:48.57ID:OZkbpJ7G
>>553
補足
その変数を外部に公開しないのなら、ヘッダでプロパティにしなくてもいいよ。
プロパティは.mにも書けるし。
2016/11/17(木) 12:45:51.00ID:0S40a4Cy
インスタンスメソッドの実行に関して教えてください。

// message sending
[obj say: @
2016/11/17(木) 13:13:08.74ID:Psw7U5GH
事切れたか
2016/11/17(木) 13:29:09.43ID:5aO/SijD
ダブルクオートとかで切れるのよく見かけるけど、@ でも切れるんかな
2016/11/17(木) 13:29:10.81ID:0S40a4Cy
ソースコードが勝手に切られちゃう(サニタイズ関係?)みたいなので画像で失礼します。

インスタンスメソッドの実行に関して教えてください。
message sending / function pointer
どちらの方法でもちゃんと動くのは確認できましたが、
なぜ後者はSELパラメータが必須(この場合selector) な仕様になっているんでしょう?
冗長に見えますが何か意味があるんでしょうか。
2016/11/17(木) 13:30:21.21ID:5aO/SijD
@ の次は当然 " がくるだろうけど、今まで1個目の"が表示されて切れるんだよなあ
2016/11/17(木) 13:33:39.43ID:0S40a4Cy
> SELパラメータが必須
instanceMethodForSelector: の時点で伝えてあるのに、なぜ実行時にも必要になるのかという事です。
2016/11/17(木) 13:40:44.67ID:+o4tuiiL
>>561
1.instanceMethodForSelectorでメソッドの実体である関数のポインタを取得(IMP func)
2.funcをキャストして呼び出し

2のときに、メソッドの暗黙の第1,第2引数である id obj, SEL selectorを渡してます。
2016/11/17(木) 13:54:11.06ID:0S40a4Cy
ありがとうございます。それでは改めて聞き直します。
メソッドの暗黙の第2引数が SEL である、そもそもの設計の意図はなんなんでしょう。

内部で振り分ければいいので複数のメソッドに対して一つの関数(ポインタ)が共通で対応可能とか?
それが実際にできたとして何かメリットがあるんでしょうか。
2016/11/17(木) 14:00:22.50ID:f6OBJy8Y
セレクタを見て他のメソッドにデリゲートするとか。
2016/11/17(木) 14:05:35.87ID:+o4tuiiL
ランタイムは、渡されたセレクタをメソッドリストから検索して、有れば実行、無ければエラー。
ってことかな。
2016/11/17(木) 14:28:15.44ID:+o4tuiiL
IMP使った場合はランタイムは経由しないでダイレクトに関数コールするけど、
通常は動的にメソッド呼び出しをするのでそういう仕様になってる。

のではないだろうか。
2016/11/17(木) 18:17:20.63ID:ZyPoEOxl
サブクラスでのオーバーライドをサポートするために
だと思うよ。
2016/11/17(木) 21:32:33.37ID:XVALpd1q
Smalltalkで、実行中メソッドのコンテキスト内からそのセレクタを得ることができる機構を
Objective-Cでも_cmdパラメーターを介して模したかったからなのでは?

Object subclass: Foo [ bar [ thisContext method selector displayNl ] ]
Foo new bar "=> #bar "
2016/11/17(木) 23:13:49.69ID:+o4tuiiL
だいたいその辺の、実行時解決を実現したかったという理由だと思うけど、
ランタイムがメソッド呼び出しするときの動作は

1.レシーバがnilかどうか
2.レシーバのメソッドリストに該当メソッドがあるか
3.なければスーパークラスにあるか
4.なければthrow exception

だよね。
だからメソッド呼ぶときはランタイムにレシーバとselectorを渡して調べてもらう必要が有るんですよ。
2016/11/17(木) 23:51:59.51ID:8N+auLd3
レシーバはselfとして使うから必要なのはわかるんだけど、セレクタはいつ必要になるの?
ランタイムに調べてもらうのは関数(メソッド実体)コールの前だろうから、コール時にはすでに不要な情報だよね
2016/11/18(金) 00:08:47.34ID:QxITf25H
>>570
セレクタはメソッド呼び出しで必要>>569
IMPで関数呼び出しの場合はランタイムを経由しないので不要
しかしどちらもシグネチャは共通なので(id, SEL, …)ということ
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にアクセスすると落ちる。
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したいのです。
2016/11/18(金) 11:55:15.19ID:U2qFJJrM
>>574
素の落書きツールは かなり使い勝手が悪いので
自作の Geasemonkeyスクリプト(for Firefox)使ってます。
2016/11/18(金) 11:57:16.56ID:U2qFJJrM
まあ、すぐにサイズオーバーになるのでごく簡単な絵しかアップできません。
2016/11/18(金) 12:14:37.99ID:8cb+/Ta9
消せないから気軽にあげられないのがちょっとあれよね
プログラム板なんだから自分で書けば良いよ
てことでobjcで書いてみた
サイズの頭打ちがあるからと思ってインデックスカラーに圧縮したけど弾かれるのね
2016/11/18(金) 12:22:18.47ID:U2qFJJrM
IMP関数ポインタの SELパラメターの件
正直言うと、自分にはコメの意見の善し悪しを判断する能力ありません...。
ググるとこれ使って >>559 で書いたような事ができるようですが (参考:class_addMethod)
設計側はそういう用途まで考慮していたのかは、よく分かりませんでした。
シグネチャを共通にしたかった? どうなんでしょう、それって何か気持ちいいから以上の理由はあるんですかね。
2016/11/18(金) 12:39:28.44ID:QxITf25H
>>578
シグネチャが共通というより、同一の関数なので同じシグネチャなんですよ。
ランタイムが呼ぶメソッドの実体も、IMPを取得してダイレクトに呼ぶ関数も、「同じ関数」です。
その関数の引数が (id, SEL, …) なんですね。
2016/11/18(金) 12:42:31.61ID:QxITf25H
で、自分はIMPは使いません。
IMPを使うくらいならCの関数を書けばいいだけなので。
2016/11/18(金) 12:51:34.13ID:QxITf25H
Objective-Cは、以前はメソッド呼び出しのオーバーヘッドがネックになってたようなので、
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な動作をどうやってさせようかと!
2016/11/18(金) 21:20:02.14ID:U2qFJJrM
ObjCスレだからObjCで頑張るのはアリかもしれませんけど、物事には適材適所ってもんがあるとおも...。
2016/11/19(土) 03:19:56.84ID:vr8hDAX5
適材適所かどうかは自明ではないね
2016/11/26(土) 10:43:02.50ID:EbyefIsj
みんなSwiftに移行しちゃったの?
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からの移行者がボチボチ増えてるかも。
2016/11/30(水) 23:57:30.93ID:48Nf+yqm
>>585
殊Swiftにおいて仕様が安定することはまだしばらくないだろう
Swift5くらいじゃね?安定版は
588デフォルトの名無しさん
垢版 |
2016/12/01(木) 09:30:20.02ID:RHRo1hP4
コンパイラとしての安定性は最初から問題無いんじゃない?
コンパイラが原因でアプリが落ちるっては経験無いなぁ。

C++、Javaが最近仕様変更が激しいのと同じく、Swiftだって言語仕様変更があるって事で、コンパイラとしては安定してると思う。

例:C++TR1, C++11, C++14
JavaSE6, 7, 8, 9

Swift3の言語仕様変更は、現在アナウンスされてないんじゃないのか?Swift4ってのはABIの導入って事で、言語仕様の変更じゃ無いし。
2016/12/01(木) 12:10:25.84ID:5zfWITAP
ぬるぽで落ちてもコンパイラのせいです(kr
590デフォルトの名無しさん
垢版 |
2016/12/01(木) 12:43:47.19ID:RHRo1hP4
>>589
それは、nil guardしてないコードのせい!
591デフォルトの名無しさん
垢版 |
2016/12/01(木) 17:17:16.90ID:ODvXgIax
 
キチガイの集まり・創価学会・公明党!

人殺しの殺人鬼が政治活動・創価学会・公明党!

池田大作・人殺しの殺人鬼・創価学会・公明党!

あやかりドチンピラの池田糞作・創価学会・公明党!
592デフォルトの名無しさん
垢版 |
2016/12/02(金) 10:10:54.60ID:84dQUHiS
禁止語句、に追加すれば、見なくてすむよ!
2016/12/03(土) 14:45:44.29ID:rA9b0IH0
孔明党ならゆるされるのだろうか?

仲達「ゆるさないぞ!」
2016/12/07(水) 10:42:29.07ID:iWjUJEoY
メッセージをたくさん送る時、[[[なるじゃん?
みなさんどう打ってます?Xcodeに自動補完とかあるの?
595デフォルトの名無しさん
垢版 |
2016/12/07(水) 11:09:26.74ID:lAZ4q7Te
>>594
適当に打って、あとから余計なのを消す。
余計を検出するのは、XVimの%コマンドを使う。

matchitとかっていうpluginをterminal.appで使うって手もある。
2016/12/07(水) 12:37:41.63ID:YlvsrELD
>>594
]を打ったら状況に応じて勝手に[を入れてくれるよ
入れる場所を間違えてエラーになる事もあるけど
2016/12/07(水) 15:21:19.56ID:iWjUJEoY
ありがとうございます!
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はコンパイル早いっていうメリットがあるけどね。
2016/12/07(水) 15:48:24.59ID:iWjUJEoY
>>598
そうですか!
言語は新旧ありますが、ロジックやフレームワーク自体に優劣がある訳ではないので、Objective-Cが読めるとプラスですよね
600デフォルトの名無しさん
垢版 |
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する
2016/12/09(金) 00:46:26.18ID:68yJ6/bb
>>596
メッセージ呼び出しの自動補完はifの周りが割と鬼門だよね、式の解析が一部混乱してる感じ
くっころさんになることたまにある。
2016/12/15(木) 13:46:48.92ID:7KRIzock
https://chrome.google.com/webstore/detail/%E3%81%AF%E3%81%A6%E3%81%AAng/mbgdnfmdelffjdhkdggilmphfdihnmcj?hl=ja
2016/12/16(金) 09:51:52.86ID:6vWCzpx7
Bool areInst(int thing1, int thing2)
{
return(thing1 - thing2)
}
これ、YESかNOが返されるんだけど
0か1が返ってくるには、どうすればいい?
604デフォルトの名無しさん
垢版 |
2016/12/16(金) 10:15:26.25ID:OzPYYpv3
>>603
if YES {
return 1
} else {
return 0
}
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)で帰ってくるんたが理由がわからん。何でかわかる?
606デフォルトの名無しさん
垢版 |
2017/02/22(水) 21:35:58.65ID:bVPEWVD2
http://video.fc2.com/content/20170222aQ2BSKaX
2017/02/24(金) 09:40:08.04ID:hWTo6NC+
>>605
解決した。データが微妙におかしかった。
608デフォルトの名無しさん
垢版 |
2017/07/09(日) 12:41:36.82ID:GCKhJDjB
gfortranでコンパイルしたfortran subroutineをObjCから呼べますか?
2017/07/09(日) 17:45:16.59ID:8iS3GcZb
Objective-CというかCからで、gcc(gfortran)はCへのインターフェースを用意してるし、gccといえどもプラットフォームOSのオブジェクトを吐き出すんだから、clangでのオブジェクトとつーかーでリンクできるから呼べるだろ
2017/07/09(日) 19:25:46.94ID:XPzyjd3D
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があるよ!って話がヒットします。
2017/07/09(日) 19:47:18.04ID:8iS3GcZb
コンパイルというかリンクできるかリンカーのお仕事
リンカーの理解できるオブジェクトはGCCでも排出できる。言語の違いはCのインターフェースで共通。なのでできるだろ
やってみろよwやってできなかったらこっちで検証してみてやるよ(えらそうw)
2017/08/04(金) 11:02:58.83ID:Xk8/NaTI
swfit4も結構変更があるみたいだね。

swift5もでるみたいだし、objcでいいや
614デフォルトの名無しさん
垢版 |
2017/08/04(金) 11:16:18.04ID:PF1N3/4o
>>613
ObjCで作るiOSアプリの方が、Swiftのそれよりキビキビ動く印象があるけど、
どうなんでしょうか?
2017/08/04(金) 12:00:05.92ID:CVNSY5Yd
今まで通りObjective-Cでは困らないんだよね..
2017/08/04(金) 13:36:11.66ID:ZGf6UrbU
もう俺kotlinのiosサポート待ちなんだが
2017/08/04(金) 17:00:30.23ID:Xk8/NaTI
XcodeProjAdder
2017/08/05(土) 09:11:30.54ID:AGcDSNVp
結局Objective-Cがなんだかんだ柔軟性があって使いやすい
2017/08/05(土) 09:30:13.70ID:ocnuRu9M
Objective-Cをディスってるやつらが理解できないな
C言語使ったことないのかね
2017/08/05(土) 09:53:25.64ID:t7RO58+g
Cをと言ったら老害扱いするヤツもいるからなw
2017/08/05(土) 10:41:10.52ID:XESdgnCd
Cを使ってたから[インスタンス メソッド:引数 キーワード:引数]の冗長になる表記が鬱陶しかった
ObjCを絶賛してる奴らはC言語を使ったことないのかね、とは思う

しかし、最近追加された_Nullable, _Nonnullはどうにかならんものかのう
アンダーバー一つなのと大文字で始めるのが気に入らねぇ、nullable, nonnullだけにできなかったものか
Apple様がサードパーティライブラリなんて気にしてるんじゃねぇよ
622デフォルトの名無しさん
垢版 |
2017/08/05(土) 12:50:06.76ID:x2WXXz7r
>>621
#defineマクロ使ってnullableって書けば良いじゃん。
623デフォルトの名無しさん
垢版 |
2017/08/05(土) 12:59:54.68ID:x2WXXz7r
#define nullable _Nullable
2017/08/05(土) 15:28:20.27ID:AGcDSNVp
>>621
わろた
まあ、そのメッセージ記法は最初見たときはその変態的な表記方法に非常に面食らった
なんせその[や]を使うのは配列だと決まっていたからな

でもとりあえず使っているうちに、Cの関数表記とObjectiveな部分が非常にわかりやすく共存できるという事実に気づいたとき一気に好きになったのを思い出した
2017/08/05(土) 15:30:37.83ID:Xkpybudy
この言語完全にオワコン
2017/08/05(土) 15:31:16.18ID:AGcDSNVp
>>625
Swift使ってればいいと思うよ
2017/08/05(土) 15:35:09.48ID:v6ezSTSe
>>622
>>623
まあ言い方悪いけど所詮Cだからどうとでもなるよな
それがObjective-Cのよさでもあるけど
2017/08/05(土) 16:01:05.93ID:QC2awpIr
どうとでもなることはどうでもいいんだよ
一度__nullableで切っておいて、サードパーティライブラリと競合するから_Nullableにするわって仕様変更した上に
_Nullableとnullableをダブルスタンダードで生かす仕様としていることが可笑しいんだよ

昔のAppleなら__nullableを残したままnullableがモダンだからってnullableの利用を推してたと思うんだけどなぁ
__nullableから_Nullableへの仕様変更とか訳わからんことするのは、やっぱりジョブズがいなくなった弊害か
2017/08/05(土) 16:09:21.82ID:UQl/9zAR
定期的に「変態表記だから〜」って人が湧くけれど
わけのわからん重箱的なとこにいちゃもんつけてる人は
だいたい不満を持ってるのは本人が言ってるそこではないのが普通なので
すると、どこだ?って発言を追った時に透けてくるのが
「メッセージングが気に入らない」で
これ結局オブジェクト指向なんて〜おじさんなんじゃwwwとw
2017/08/05(土) 16:25:52.03ID:AGcDSNVp
>>629
メッセージングとはいっても結局事実上メソッド呼び出しとなんら変わらんからな
2017/08/05(土) 16:56:54.30ID:QC2awpIr
[や]は重箱的じゃなく大局的な表記の問題だと思うんだけど、それは・・・
そして、_NullableはObjC変態表記を問題視してるんじゃないよ、Appleのスタンスを問題視してるんだよ

「メッセージングが気に入らない」はDynamic Dispatchなのが嫌なんでない?
事実上はコストが上乗せされる別処理になってるわけだし
# アンチObjCもObjC信者もそこまで考えてない気がしなくもない
2017/08/05(土) 17:27:05.60ID:GxOZ02Sj
[r method:x label:y];
func(r, x, y);
2017/08/05(土) 17:31:27.19ID:GxOZ02Sj
r.func(label:x, label:y)
2017/08/05(土) 18:04:47.25ID:AGcDSNVp
>>631
Dynamic DispatchはObjective-Cの話に限らないのでなんとも...

nullableについては表面的なモダンさを表面的に考えて追求する雰囲気がSwiftが出だしたくらいから社内で蔓延してるからじゃないの
社員じゃないから知らんけど

>>632
>>633
だからSwift使ってればいいと思うの
2017/08/05(土) 18:13:52.73ID:GxOZ02Sj
大した違いじゃない
だが「この変態!」という根強い意見にも耳を傾けなければならない
2017/08/05(土) 19:23:41.38ID:AGcDSNVp
>>635
だからSwift使ってればいいと思うの...
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に取り込めば皆ハッピーなんだよなぁ
2017/08/05(土) 19:40:24.64ID:GxOZ02Sj
>>636
変なこと言う奴だな
あいにく俺はSwift使ったこと無いんだわ
2017/08/05(土) 19:42:36.20ID:AGcDSNVp
>>638
あ、そうなんだ
>>633を書くくらいだからてっきり
メッセージ式の表記ってそんなに気になる?
自分が最初にはまったのはセレクタの時のコロン忘れかな
それ以外はあまり苦労した記憶がない
2017/08/05(土) 19:46:59.94ID:GxOZ02Sj
>>637
速度がネックだったObj-Cランタイムだってアセンブラで書き直したらしいし
速度向上と言っても大したこと無いけどな
nilなら何もしないルールがあるからランタイムを経由しないわけにはいかない

>>639
三番目の>>633はSwiftじゃなくて俺俺言語
あいにくSwiftのようになったようだが
2017/08/05(土) 20:03:05.50ID:AGcDSNVp
Objective-Cが当初敬遠されたのはObjective部分のsyntaxというよりはメモリ管理だと思ったが
まあそれに追い打ちをかけるようにallocとinitの組み合わせが普通に頻出したもんだから変態的だと思う人が多かったのだろう
さらにオブジェクト変数がポインタともなればなおさらだろうな

Object *obj = [[Object alloc] initWithParam: a];
2017/08/05(土) 20:28:36.38ID:GxOZ02Sj
俺は別に、Obj-Cは実引数の順番が変わるぐらいで変態だとは思わんね
ラベルは有った方がいいし、第一引数は省略可とすべきだし
今風のシンタックスにするとあら不思議Swiftみたいだね
2017/08/05(土) 20:34:58.96ID:AGcDSNVp
>>642
だったらこんなところにいないで、あなたがイメージした理想syntaxと近いSwift使えばいいじゃん...
2017/08/05(土) 20:45:40.97ID:NrXpiBRr
何かおもしろいやつがいるな
>>642を意訳すると
Swift使ったこともないから全然知らないんだけど、普通に自分で今風の文法みたいの考えてみたら謀らずともSwiftになっちゃった
俺でも思い浮かぶほどSwiftって自然な文法だっんだ!Swift最高じゃん!
でおk?
2017/08/05(土) 20:50:17.10ID:GxOZ02Sj
>>643,643
いや俺Swift嫌いなんだよw
ポインタ扱いづらいだろ、よく知らんけど
その割に仕様を減らすんじゃなくて増やしてるし
2017/08/05(土) 20:53:47.23ID:AGcDSNVp
>>644
www
いや俺ももはやこの人が何を言いたいのかよくわかんなくなってきたのよ...
2017/08/05(土) 20:56:12.81ID:QC2awpIr
メモリ管理のalloc/freeやポインタ変数なんてそれこそCをやってたら気にならないでしょ...

>>640
本当に性能良くなるのは特定条件下でさほど影響が出るものじゃないよなw
それでもまぁObjCがSwiftに劣っている点ではあるので、気が向いたら対応して欲しいものよ
2017/08/05(土) 20:59:57.92ID:GxOZ02Sj
>>646
それはちょっと色眼鏡で見すぎだね
アンチすぎるんじゃね?w
俺は使わないからどうでもいいし、Swiftはアンチになるほどの存在では無い
2017/08/05(土) 21:00:23.43ID:AGcDSNVp
>>647
いやそのはずなんだけど、結局Objective-Cをディスってる人がけっこういるのは、純粋なCをちゃんと使ってた人が殊PCアプリプログラマにおいては少なかったってことなのかね?
2017/08/05(土) 21:05:32.04ID:GxOZ02Sj
>>647
コンパイル時に静的に解決したいメソッド呼び出しには、たぶんレシーバにnonnull必須になるのかな
それがSwiftにnonnullが必要だった理由かも
Obj-Cで高速化が必要な場合は、Cで書いちゃえばいいのでいらんと思うけどね
2017/08/05(土) 21:09:23.61ID:NrXpiBRr
とりあえずSwift使ったことないとか言ってるわりにわりと細かいSwiftネタ挟んできてて草
2017/08/05(土) 21:10:26.33ID:GxOZ02Sj
>>651
気にしすぎだってw
2017/08/05(土) 21:15:06.89ID:NrXpiBRr
>>652
いや誰がみてもSwiftの最新情報を調べてるレベルだろ
使ったことないのに嫌いとかいっちゃうほどバカじゃないだろうし
隠す理由が謎
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況