X



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

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
垢版 |
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
0900デフォルトの名無しさん
垢版 |
2017/10/01(日) 20:26:37.49ID:xjQetnPj
なんですぐに発狂とか...わからん。まさか、長文書くとか、レス多いとか?だったり?まさかなww
別に嫌なことはない、今暇ってだけだな
0902デフォルトの名無しさん
垢版 |
2017/10/02(月) 10:34:40.67ID:o9ncCo8n
急に長文で笑いつつ読み飛ばした後
日本語がおかしい>>898があって発狂してるんだなって思った。

>>901
ObjCに関係ないけど純正アプリのSafari for macOSは良く出来てると思ってる
ChromeやFirefoxよりバッテリー消費少なくてノートで非常に助かる
Chromeのバッテリー持ちの悪さはなんなんだろうね, 2倍とまでは行かないけど体感できるレベルで差が出る
0903デフォルトの名無しさん
垢版 |
2017/10/02(月) 16:39:06.49ID:Wwkr3eYe
急に長文もなんも、俺には>>893,894が急にというか何もわかってねーなそのくせにだから、スカしながらの説明をにしたら長くなるっていう。もったいつけてるというのはそゆこと
>>898>>893,894だけ見てたけど、>>886の発端のヤツかよ完全否定から入って何も読まずにまだ否定だけかよっていうことだよ

長文とか日本語がおかしいとかいいつつ、読むんだなwそんなの読まなきゃいいのに、読めないんだったら(別に読めなくてもいいよ。そこは責めてない。読めないくせに勝手に決めつけんな、めんどくさい)

な?わかってないのに説明すると長くなるだろ?お前もお仕事上わかると思うけどw
0912デフォルトの名無しさん
垢版 |
2017/10/04(水) 17:55:40.67ID:M+fUbMNH
Command+Clickが地味に使いづらい、ウザい
俺はあんなハイライトいらん。そんな一目で「終わり」を見る機会より定義の場所にジャーンプの機会の方が圧倒的なので
邪魔なポップアップ出さずにジャンプの指定にできるようになってるのはホッとしたがハイライトも出さないようにしたいなあ、できるのかな?
0914デフォルトの名無しさん
垢版 |
2017/10/05(木) 09:44:12.63ID:NTKdykpp
ホップ(カーソル移動)、ステップ(ハイライト表示)、ジャーンプ(定義の場所に移動)
Xcode9はよくできてるな!
0915デフォルトの名無しさん
垢版 |
2017/10/05(木) 13:23:23.73ID:j9fazbko
327デフォルトの名無しさん (ササクッテロリ Sp75-2iPL)2017/10/05(木) 08:23:57.77ID:4UOAx4bZp
新しいこと覚えるくらいならビジネスロジックを勉強するよ
言語だのリアクティブだの状態管理だの
フルスクリーンアプリじゃユーザーに全くメリットないし
業界に踊らされているだけ

Objective-CユーザはObjCの新文法を使わない?
genericsとかnilableとか少し古いとblocksやinstancetypeとかAppleに踊らされつつ
同じアホなら踊らにゃ損々と便利に使ってるけど
0916デフォルトの名無しさん
垢版 |
2017/10/05(木) 14:56:32.48ID:DCONgPWB
人それぞれ。そう言うヤツもいるとなぜ思わないのか?開発向かないか業界病で頭が単純化しすぎ病なのか?w
こっちに持ってこないで、言う本人に言いなさい
0917デフォルトの名無しさん
垢版 |
2017/10/06(金) 14:13:25.71ID:qhLWaNhq
Xcode 9でリファクタリング強化されたって聞いたんだけど、
これってObjective-Cでも使えるの?
使えるなら俺一生ObjCに付いていく。
0919デフォルトの名無しさん
垢版 |
2017/10/06(金) 22:56:31.41ID:R7tcOQE1
>>916
だって、あっちだとスレチじゃんw
基本的にはObjCユーザもAppleに踊されてるって理解で良いのかな?
0921デフォルトの名無しさん
垢版 |
2017/10/07(土) 11:12:08.07ID:s04ZU/0N
なんだろう、個人的にはSwiftやるならObjective-Cの方がいいと思う
Cの勉強にもなるし
Swiftは潰しがきかん
0922デフォルトの名無しさん
垢版 |
2017/10/07(土) 12:02:44.93ID:TgSupA0z
Swiftは相変わらずABI安定してないし、世代交代もまだまだ先という感じがする。
C言語やっておいて損はないというのは今も昔も変わってない気がする。
SDKの活用や今後のモバイル市場の縮小を考えると、Swift一本で戦うのは難しい。
教養とスキル構築のためにObjective-Cを選択するのはありだと思う。
0923デフォルトの名無しさん
垢版 |
2017/10/11(水) 19:06:32.91ID:3FUN2GAU
Cが学べるってのは大きい。
昔はCに変なアレルギー持ってたけど、最近は割りといい言語だと思えてきた。
0924デフォルトの名無しさん
垢版 |
2017/10/11(水) 20:04:23.45ID:M3+oH0ZC
Cは高級アセンブラだからね
能力がある人ほどマシンの性能をより高く発揮できるプログラムが書ける

細かな操作もできるから特に組み込み系などのプログラミングでは依然としてCが多いのものそれが理由
0925デフォルトの名無しさん
垢版 |
2017/10/11(水) 20:54:59.95ID:3I5kECbD
objcで書いてたはずなのに最適化しまくって結局中身Cの関数とコールバックばかりになるよな
0926デフォルトの名無しさん
垢版 |
2017/10/11(水) 21:02:24.61ID:xjGA/sOA
人間のためにオブジェクト指向でかけるようにしてあげたCなのでマシン語が結局そうなっても速けりゃ本望
0929デフォルトの名無しさん
垢版 |
2017/10/11(水) 21:14:46.21ID:3I5kECbD
>>928
clangのARMコンパイラもあるし可能だろ
てかiOSはARMだし組み込みとも言える
picとかavrとかになるとメモリもクロックも少ないしobjcが使えるメリットが無いな
mbedIDEでobjcが使えるようになったらちょっとだけ嬉しいレベル
0930デフォルトの名無しさん
垢版 |
2017/10/11(水) 21:19:00.42ID:M3+oH0ZC
>>929
>clangのARMコンパイラもあるし可能だろ
>てかiOSはARMだし組み込みとも言える
確かにw

pic, avrのレガシーコアの方(not ARM)のMCUはCでいいよね
ObjCもいらんしC++もなくてもいい
どこぞのArduin○さんもC++じゃなくて正直Cでいいかなって思ってる
0931デフォルトの名無しさん
垢版 |
2017/10/11(水) 21:30:30.49ID:3I5kECbD
>>930
物によるけどな
atmega328位のスペックならC++使う方が楽かもなぁ容量あるし
i2cとかグラフィック描画関係はクラス分けたいし
逆にattinyはC++じゃ入り切らない事があるしそこまで大きい事しない

picもUSBホスト機能とか付いてる奴とかの制御はC++使いたい
0934デフォルトの名無しさん
垢版 |
2017/10/11(水) 22:10:57.58ID:3I5kECbD
ここら辺のクロック(16MHz位)とかだとシングルスレッドだし一つの命令でのクロック消費がかなり後引くから
objcのメッソッド呼び出しをどう扱うかだな
オリジナル通りオーバーヘッドがある状態なら処理速度的に使い物にならないだろうし
そこを最適化しちゃうならobjcである必要も無い気もするんだよね
0935デフォルトの名無しさん
垢版 |
2017/10/11(水) 23:52:24.90ID:M3+oH0ZC
言語が高級である意味は人間にとってなわけで、最終的に最適化されるならCでいいってのも本当は変な話だと思うけどね
それ言っちまうと究極は全部アセンブラでいい
なんなら機械語でもいい
0936デフォルトの名無しさん
垢版 |
2017/10/12(木) 00:17:17.26ID:b/Ml+r1m
比較対象がobjcならって話だよ
objcは中身Cだけどobjc特有の書き方をすると冗長すぎる動作をするってこと
極端に言えば所詮Cのマクロ集だから
ただその冗長的な動作がobjcの良さだったりするから
マイコンとかには向かないし意味の無い機能になってしまう

記法とかそういうのは無視してる、どの言語も慣れれば大して変わらないし
0942デフォルトの名無しさん
垢版 |
2017/10/12(木) 22:14:57.97ID:RMeyvXX8
>>941
なんだ
アセンブラリストみたら結局C関数羅列した時と同等コードになってるのかとおもた
0943デフォルトの名無しさん
垢版 |
2017/10/13(金) 12:50:19.84ID:1ukxQn24
ObjCのBlocksは最適化効くからかなり速いよ。
コールバック関数よりも最適化が効きやすい。

というかそこまで速度が必要ならそれこそObjC++の出番。
0944デフォルトの名無しさん
垢版 |
2017/10/13(金) 20:39:05.62ID:3P7mMOBe
Objective-C++って意味がわからない
コレイジョウObjectiveにする必要ねぇだろC++は…
0945デフォルトの名無しさん
垢版 |
2017/10/14(土) 00:38:00.36ID:34+XXBBA
C++は関数をクラスとして使い回すのがオブジェクト指向だろ?というC拡張
Objective-Cは関数をクラスとして命令を送ることで自律的に動作させるのがオブジェクト指向だろ?というC拡張

拡張の方向が違うので混在可能で、C++はいまのオブジェクト指向の原則からすると
相互関係が密になりすぎて使いづらい代わりにハード寄りで速度が出せるので
Objective-Cの中でC++を使うためのしくみがObjective-C++

Objective-(C)に対してのObjective-(C++)
中身でCじゃなくてC++扱いたい人向け。
0946デフォルトの名無しさん
垢版 |
2017/10/14(土) 00:45:54.33ID:3UymfagZ
objcとC++との違いは動的言語かどうかの差だろ
コンパイル時に動作が決まるC++に比べて動作時に動作が決まるobjcが速度で劣るのは仕方ない
書き方次第でどうにでもなるから問題にはならないけど
Objective-C++は
objcの中でC++の書き方が出来るってだけ
新しい言語ではない
0951デフォルトの名無しさん
垢版 |
2017/11/03(金) 20:24:45.50ID:HuwGCmuD
次スレ待ち
0958デフォルトの名無しさん
垢版 |
2017/11/05(日) 15:28:55.43ID:vRv6T9rF
既存のObjective-CプロジェクトをObjective-C++にする場合
なんか問題になることってある?

型キャストしろって警告は沢山出てくるけど、それ以外は特に問題ない気がする。
ObjC++化で動作が変わるかどうか一番心配。
0959デフォルトの名無しさん
垢版 |
2017/11/05(日) 16:37:44.96ID:xaHbiVeP
予約語が増えるとか、autoの意味が変わるとか、文字定数の型が変わるとか
関数宣言の引数なし()が可変長引数から(void)と同じに変わるとか
0960デフォルトの名無しさん
垢版 |
2017/11/06(月) 11:33:21.15ID:2AT1utsC
C言語からC++への移行手順を参考にすれば問題ない気がする。
Objective-C固有の愛称は特に無い。newキーワードとの関係でNSObject.newが使えないくらいか。[NSObject new]なら問題ない。
0963デフォルトの名無しさん
垢版 |
2017/11/06(月) 18:44:32.83ID:d3/PBg+F
新記法ってか...まあ、そうといえばそう

instance.property はコンパイル時に単に [instance property] に置き換えられるってだけで、使用に制限はない(コンパイルエラー/ウォーニングは出ない)。引数なしならなんでもドットで書ける。確か値を返さないのでも( [instance run]; を instance.run; とも)
ドット記法(getter/setter)は単に置き換えられる(setterはset付けられるけど)というのを理解していれば制限は無いので自由っちゃあ自由だが、それは違うだろうという、個人的にw
0964デフォルトの名無しさん
垢版 |
2017/11/06(月) 18:51:06.70ID:d3/PBg+F
ああ、クラスプロパティができるようになったから、instance.propertyだけでなくclass.propertyもありな、newはクラスメソッドしかないしclassで書くべきだったな
0965デフォルトの名無しさん
垢版 |
2017/11/17(金) 03:39:04.53ID:KuiGlQ+X
関数の頭の+と-ってインスタンス済みか違うかってことと継承できるかどうかのちがい?
どっちがメモリ食いでおそいの?
0967デフォルトの名無しさん
垢版 |
2017/11/17(金) 07:49:16.58ID:vXeaPuMS
+(void)test{
 NSLog(@"C %zu", malloc_size((__bridge const void *)(self)));
}
-(void)test{
 NSLog(@"I %zu", malloc_size((__bridge const void *)(self)));
}

メモリサイズ見るとallocしてないからクラスメソッドではセルフのサイズは0になるよ。
速度に関してはメモリ確保しない分クラスメソッドの方が速いだろう
計算だけやらせるとかだけならクラスメソッドの方が良いだろうけど
それならC関数の方が優位
0969デフォルトの名無しさん
垢版 |
2017/11/17(金) 12:49:30.17ID:BwXttssD
継承しないなら+が正解なんですね
ありがとうございます。
0971デフォルトの名無しさん
垢版 |
2017/11/17(金) 13:10:53.82ID:qbOFfyPG
NSObject を継承した Test1ClassのクラスメソッドtestFuncは

Test1Class を継承した Test2Classでも呼べるよ
てかクラスメソッドを継承出来なかったらNSObjectのallocも使えなくなるでしょ

@interface Test1Class : NSObject
+(void)testFunc;
@end
@implementation Test1Class
+(void)testFunc{
 NSLog(@"call test");
}
@end
@interface Test2Class : Test1Class
@end
@implementation Test2Class
@end
int main(int argc, const char * argv[])
{
 [Test2Class testFunc];
}
0972デフォルトの名無しさん
垢版 |
2017/11/17(金) 14:46:32.69ID:KuiGlQ+X
+でも継承できるんですか
勘違いしてました
すると+と比べて-のメリットは何でしょうか?
0974デフォルトの名無しさん
垢版 |
2017/11/17(金) 17:12:02.46ID:0jV1JJrR
OOPSの理解が先だな。OOPS理解すればそんな質問してたのがアホだったと思うだろう
0975デフォルトの名無しさん
垢版 |
2017/11/17(金) 17:31:12.22ID:5PrRKVul
いやJavaとかから来たらわからんだろうよ

通常のオブジェクトがそれが属するクラスにメソッドを定義することで、それをコールできるのと同様に
Objective-CではSmalltalkやRubyなどと同様に
クラスもまた、自身が属するメタクラス(さらに上位のクラス)にメソッドを定義することでそれをコールできる

メタクラスはクラスとちがって無名なので、便宜上そのクラスへのメソッド定義(インスタンス向け)を - で、
対応するメタクラスへのメソッド定義(そのクラス自身向け)を + で表す決まりになっている

つまるところ、+ と - はそのメソッドが定義される場所(ひいてはそれをコールできるオブジェクト)が違う
0976デフォルトの名無しさん
垢版 |
2017/11/17(金) 17:50:54.14ID:P19mM9yq
UMLの-と+でインスタンスメソッドとクラスメソッドを区別するやつ
Objective-Cが由来なのかな
0978デフォルトの名無しさん
垢版 |
2017/11/17(金) 18:38:09.45ID:0jV1JJrR
>>975
なんか小難しいこと書いて言ってるけど、そんな知識をひけらかす必要あるのか?元の ID:KuiGlQ+X には
そのレスの絞めとして、クラスメソッドとインスタンスメソッドは明確に性格が違うと言っているんでしょ?なぜかはOOPS理解していれば聞く必要もないことで、それは、Javaでも同じだろう

理解してないようだから、早々に>>968なんて言うヤツが出たんだろ
0979デフォルトの名無しさん
垢版 |
2017/11/17(金) 18:47:40.32ID:5PrRKVul
>>978
ひけらかすほどの知識とも思わんが
それとも、こんな基本的なことも知らないで使ってるのか?

そもそもOOPSってなんなんだよ…
0980デフォルトの名無しさん
垢版 |
2017/11/17(金) 18:53:04.67ID:0jV1JJrR
>>979
OOP Style だよ。まあ、OOPでいいけど
言ってるのはクラスメソッドとインスタンスメソッドは違うってだけじゃん?何をそんな小難しく読みづらいっていうw
いきなりJavaだからとかから始まって...あるとしたら、Objective-C固有のかと思ったらそうでもないし
0981デフォルトの名無しさん
垢版 |
2017/11/17(金) 19:05:43.30ID:5PrRKVul
>>980
Java、C++等の staticメソッドと、Objective-Cや Smalltalk、Ruby のクラスメソッドは別物だよ?
それすら分かってないのか…
0982デフォルトの名無しさん
垢版 |
2017/11/17(金) 19:13:50.64ID:0jV1JJrR
>>981
機構/実現方法としてだろ?だから、そんなこと元々のヤツは聞いてないだろって言ってるのに。だからそゆ細かいとこをひけらかすって言ってるのに(「俺には当然」らしいけけど、なんでだったらわざわざ書くのか?)

実際インスタンスメソッドがメインでクラスメソッドなんて書く機会/必要性は割合的になくね?OOPS的にはw
でも、やっぱり必要な場合があるから、なんかあんたが違うと拘ってるけど、クラスメソッドがそれぞれの言語でもあるんだろ?
そゆ意味で元々の俺のレスだよ。なんでそれを否定して細かい違いを言ってるのかいまださっぱりわからん=知識のひけらかしにしかみえんのだけど
0983デフォルトの名無しさん
垢版 |
2017/11/17(金) 19:32:51.40ID:oYmLZZ1y
すーぐ熱くなる
マなんてこんな奴らばかりなんだからお互い無駄に体力使うなよ
コミュニケーション以外の所に能力値振ってるから説明がヘタクソになるんだよ
解説本とかみんなそうだろ
ともあれID: KuiGlQ+Xはメリットデメリットの話する前にそれが存在する理由と
どのような使い分けがあるのかを考える方が良い
0985デフォルトの名無しさん
垢版 |
2017/11/17(金) 19:38:54.65ID:5PrRKVul
>>982
じゃあ、私はクラスメソッドなんか使いません。staticメソッドと区別も分かりません。でいいじゃん
まず、クラスメソッドの価値を見いだせないそのOOPSwとやらをなんとかしろよ
0986デフォルトの名無しさん
垢版 |
2017/11/17(金) 19:42:04.64ID:0jV1JJrR
>>985
誰になに言ってるのか不明すぎ
「クラスメソッドの価値を見いだせない」とかいきなり。誰も不要なんて言ってないけど?必要な場合があるって言ってるじゃん?ああ、「なんだか知らんが必要な場合があるんだろうな」と俺が言っているととっているのか??んー、だったら、すげえなww
なんだかどうしても俺を下に見下したいだけにしか見えないんだけど?数スレ前からずっと
0988デフォルトの名無しさん
垢版 |
2017/11/17(金) 19:54:52.75ID:5PrRKVul
>>986
だってOOPSwとか分からんこと言ってる時点で明らかに下じゃんw
逆にどうしてその程度で上から目線を貫けるのか謎だわ
0989デフォルトの名無しさん
垢版 |
2017/11/17(金) 19:58:05.03ID:5PrRKVul
たぶん自慢げに語るそのOOPSwとやらの説明すらまともにできないのでは?との想像に難くないレベルの低さ
0990デフォルトの名無しさん
垢版 |
2017/11/17(金) 20:02:14.50ID:0jV1JJrR
>>988
OOPと書かなきゃダメなのか?まあ、一時的にOOPSもあったんだよ。知らないだろうけど
たかがそれだけのことで全否定できるって、さすが細かいとこにこだわるお人だなあ&くだらなさすぎ&本来の話題が逸れすぎだと思うぞ。なんかあんたが心配(自ら自らを貶めているようでw)

長引くようだったら次スレたててw
0991デフォルトの名無しさん
垢版 |
2017/11/17(金) 20:11:22.65ID:oYmLZZ1y
相手を理解しようとしないで自分のペースでしか話せないと苦労するだろう
ようはOOPSって
Object Oriented Programming Styleでしょ?
つまりオブジェクト指向プログラミングについて学べと言ってるんじゃ無いの?

ID:KuiGlQ+Xは、メリットデメリットって言ってるとこからして
オブジェクトを生成するってことを理解してないレベルの話だよねこれ
まずインスタンスにアクセスした事無いからインヘリタンスとか関係ない所でメリットについて疑問が湧いちゃったんだろうし
0992デフォルトの名無しさん
垢版 |
2017/11/17(金) 20:15:45.26ID:0jV1JJrR
>>991
うん。全くそうなんだけどねえ
(まあ、あんたは>>983で理解してくれてる/その前でもすでに理解してると思ってたけど)
0993デフォルトの名無しさん
垢版 |
2017/11/17(金) 20:29:25.96ID:KuiGlQ+X
うーん、さっぱりわからないです。すみません。
とりあえずViewcintrollerでは-、汎用クラスは+で使い分けてたんですが、+のがメモリ食わないなら、なるべく+使っとけばいいんでしょうか
0995デフォルトの名無しさん
垢版 |
2017/11/17(金) 20:37:15.26ID:oYmLZZ1y
Viewcintrollerでメモリ使ってるんだから
Viewcintroller内で使うメソッドをメモリのためだけにクラスメソッドにする意味は無いし無意味
といってもまずインスタンスについて理解してないと、この話は進まないだろう

あなたの言う+を使ったメソッドで運用出来てるならそれで良いしそのうち躓くだろうから
そこで気づければ良いね
としか言えない感じの大きな壁があるように感じる
0996デフォルトの名無しさん
垢版 |
2017/11/17(金) 20:46:44.49ID:KuiGlQ+X
クラスは設計図、インスタンスはクラスに基づいて作られた実体と聞きました。
設計図メソッドと実体メソッド?
どっちもおなじことできてるんでなんだろ?と思いました
0997デフォルトの名無しさん
垢版 |
2017/11/17(金) 21:16:54.72ID:Eetf/DNi
クラスをメモリーにロードするとインスタンスになるという説明だと
どんな問題が起こるだろうか。
0999デフォルトの名無しさん
垢版 |
2017/11/17(金) 21:46:24.64ID:KuiGlQ+X
ググッてみました。
クラスの中のメソッド間で値の受け渡しが出来るのは、クラスメソッドのメリットですね。

でもインスタンメソッドでも@interfaceで変数定義したら受け渡しができちゃう。

うーん、インスタンスメソッドでいけるとこまでいけば道が開けるんですね
やってみます
レス数が1000を超えています。これ以上書き込みはできません。