[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 05/01 18:42 / Filesize : 287 KB / Number-of Response : 1028
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Objective-C [ObjC part:8.1];



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

741 名前:デフォルトの名無しさん mailto:sage [2017/08/06(日) 21:36:01.59 ID:/dqOVGNE.net]
ああ、肝心なところtypoした
×Objective-CのC
○Objective-CとC

742 名前:デフォルトの名無しさん mailto:sage [2017/08/06(日) 21:39:48.15 ID:/dqOVGNE.net]
>>720
確かに記事読むと表面的な話に終始してるな
Objective-Cはその他に類を見ない柔軟性により玄人指向なのだろう
逆に本当にスキルがある人には使いやすいんだろうなって思う

743 名前:デフォルトの名無しさん mailto:sage [2017/08/06(日) 21:45:13.30 ID:/dqOVGNE.net]
>>723
まだCocoaが発展途上だった時代にCarbonとの親和性を確保する意味でもObjective-Cは都合がよかったんだろう

744 名前:デフォルトの名無しさん mailto:sage [2017/08/06(日) 21:49:46.04 ID:0XdHuxlK.net]
>>723
骨幹から(?) C -+-> C++ -+-> Objective-C かな
KEXTはカーネルにすごい近いからカーネルと言ってもいいじゃんというまさしくそれに沿って別に簡単にフックできるから危ないからじゃなくてC++なんだろうという

いろいろなプラグインなんて、それこそ今でもハッキングや割れ(?)が簡単にやり放題にできるけどね。だが、いまだにそんなのが無いんだな、これが。まあサンドボックスやrootlessでやりづらくはなってはいるけど
んなとこから、IOKitがC++なのはObjective-Cが危ないからって話では無いだろうという俺論

>>725
一行で素晴らしいw彼もわかってくれればいいがw

745 名前:デフォルトの名無しさん mailto:sage [2017/08/06(日) 22:07:37.99 ID:5hrgPajG.net]
>>722
>・純粋なCをやっているとObjC文法は素直に習得できる
の部分については、オブジェクト思考部分以外はCそのものなので、単純に追加されたオブジェクト思考部分を記述する文法さえ覚えればいいので、Cをやっていた人からすると習得コストが低いと言えるんじゃないかな
もちろんオブジェクト思考部分を記述する文法(=ObjC文法というのかな?)はCをやってた人からすると「変態的」なので最初は面食らった人がほとんどだと思うけど
ただやって実際見たらそんなに覚えることそんなにないじゃん的な感じかと

746 名前:デフォルトの名無しさん mailto:sage [2017/08/07(月) 00:31:33.61 ID:j1CBqyDH.net]
>>729
いまだに無いって世間知らずにもほどがあるだろ?
appStoreに移行しても被害額減るどころか増えてるんだから
まあメソッド名隠さないで簡単に推理出来る名前のまま公開してる奴は擁護出来ないが
objcは簡単に中身を書き換えられる&覗かれるってことを理解した上で書いてないシェアウェアが多いよね

ただmac自体ユーザーが極端に少ないからそれらをやる人間も必要としている人間も少ないわけで目立たないだけだろう
SIMBLだって今後使えなくなったとしても同じプロセス上にロードするだけで良いだけだから
動的なリダイレクトが出来る今のobjcの設計ならいくらでもやりようはあるからな
カラーピッカープラグインでもロードされるタイミングでスウィズル出来るわけだし
ただ結局それらは個ソフトウェア内だけだからあまり問題視されてないのが現状だろう、結局エンジニア次第だからな

これがOSの根幹で出来るとなったらやばいどころじゃ無いのは簡単に想像出来るだろう

747 名前:デフォルトの名無しさん mailto:sage [2017/08/07(月) 00:48:46.15 ID:fzx+TAun.net]
>>731
知らん。例えば具体的にどんな?ニュースになるような被害って?例え少ないのでもMac関係では大いに報道するだろ(アンチなのは妙に誇大にするからアレだがw)
あんな簡単に外部コードロード&フックできる仕組みなら、例えユーザ数が少なくたってある程度/かなりあっても不思議ではないだろ

別にObjective-Cに限らず、トロイにしろなんにしろ、なんでもできるのはそりゃそうだろ。そうじゃないと困るわ、生きづらいw
だからそもそもナニかする手段はあるって言ってるだろ。それが具体的に悪用されてるのがどんだけあるのかって話だよ
ネイティブコードが読み込まれるなら、Objective-CでなくてもMach-Oなプラグインだったら何でもできるだろうに、
なぜかObjective-Cだけ(危険/C++は安全??)とか、Objective-Cが簡単にフックできるからってのに捕らわれ、そうだからそうに違いないと言ってるだけにしか見えないな

そういえば、iOSは頑なに内製Framework(というか、dylib/別にObjective-Cなdylibでなくてもいろいろできる)を認めなかったが、
なんかいきなりあっさり認めるようになったな。お前の言っていることとは逆じゃね?より厳しいiOSでなのに

748 名前:デフォルトの名無しさん mailto:sage [2017/08/07(月) 01:04:19.31 ID:fzx+TAun.net]
>>731
・コードをシステムなりに入れて起動できれば、そんなのObjective-Cだろうが他の言語だろうが関係ない、別のこと
・そのアプリの機能に介在するナニかをしたい場合にObjective-Cでフック機能が便利
・アプリの機能に関係なくなら、別にObjective-Cでなくても同じ危険性があるだけ
アプリの機能に介在してナニかあくどいすることなんてそもそもそんなありえるのか?関係なくの方が多いだろう。トロイ的にだが、その手法はあることはあるし

なんだかよくわからんが「これがOSの根幹で出来ると」いう、さもObjective-CでOSの根幹がありきのような話だが、そんなこと最初からないって言っているのがわからんのかなあ
アプリレベルプログラマでもCoreとかObjective-Cの同クラスより高機能なのが並列している時点で、
Objective-Cはアプリ/サービスレベルのフレームワーク用=OSの根幹でんなことしてられねえ(めんどくさいのだか何だかわからんがw)ってわかると思うだが、なぜかそこがObjective-Cであったらという前提はただの妄想にすぎないと思うよ

749 名前:デフォルトの名無しさん mailto:sage [2017/08/07(月) 06:19:41.05 ID:1ENgAefL.net]
この流れがつまらない。
仮定の話で盛り上がるならオフ会でも行けば。



750 名前:デフォルトの名無しさん mailto:sage [2017/08/07(月) 06:41:26.11 ID:n0QtNiqf.net]
物知らずの無知無知ボーイ ID:5hrgPajG が声高に頑張ってたせい。

751 名前:デフォルトの名無しさん mailto:sage [2017/08/07(月) 07:26:00.83 ID:nZ0RU5t+.net]
「酔っ払いの喧嘩は外でやっとくれ!」
酔っ払いの一方:「あいつが悪いんだ!」

752 名前:デフォルトの名無しさん mailto:sage [2017/08/07(月) 08:04:58.98 ID:a1ES+HTw.net]
>>735
は?関係なくね?

753 名前:デフォルトの名無しさん mailto:sage [2017/08/07(月) 09:16:12.87 ID:zZbb3/ny.net]
>>735
何かした?

754 名前:デフォルトの名無しさん mailto:sage [2017/08/07(月) 10:19:38.86 ID:0r/N/mwc.net]
>>735
俺にも構ってくれよ

755 名前:デフォルトの名無しさん mailto:sage [2017/08/07(月) 10:43:49.21 ID:GHOXhqb3.net]
>>725
それは知っているよ、だからどうしたというね
別物である部分があるからって話をしてるんだから話を手前に戻さんでくれよ

>>730
初めて真っ当なObjC擁護レスがきて感動した...(感涙
ObjC文法が多くなけりゃその通りなんだよねー
懸念はSwiftが出ても尚延々とObjC言語仕様を追加してるから、益々Cから離れていきそうでなぁ


>>729
だから、お前は自分の意見を矛盾なくレスしろw
>>657のレスも結局ボケだったのかマジレスだったのか分からんぞ

756 名前:デフォルトの名無しさん mailto:sage [2017/08/07(月) 12:30:02.80 ID:fzx+TAun.net]
>>740
何言ってるの?www
マジレスに決まってるやん。なんだCと同じじゃなきゃダメだって言ってるのか?それでも何言ってるのだがwダメだこりゃ

757 名前:デフォルトの名無しさん mailto:sage [2017/08/07(月) 14:09:29.67 ID:GHOXhqb3.net]
>>741
マジレスっつーことは意図することはこういうことか
> 純粋なCをちゃんと使ってた人ほど文法がゴロっと変わるObjCは辛い、が当たり前のことでそれが誰かの失礼に当たる?

誰に何が失礼にあたるのか相変わらず分からないけど、共感してくれてるようで良かったよ
Cと同じじゃなきゃダメだって言ってるんじゃないよ、共感してくれてる通りCと違いすぎてるから純粋なCやってるとObjCが辛いって言ってるんだよ

758 名前:デフォルトの名無しさん mailto:sage [2017/08/07(月) 14:12:34.97 ID:0r/N/mwc.net]
218デフォルトの名無しさん (ワッチョイ 056c-cJAr)2017/08/07(月) 09:36:54.43ID:tO02o/C10>>222
>>213
メソッド呼び出しに、ドット構文が使えればObjCも描きやすくなるよねぇ。
Objective-C 3.0に期待だね。

id a = [[NSObject alloc] init];
->id a = NSObject.alloc().init(); // こんな感じ!

221デフォルトの名無しさん (ワッチョイ d9b5-xdmZ)2017/08/07(月) 12:05:53.21ID:tDzZ+7xU0
>>219
obj-cの魅力ってあくまでcの拡張でありobj-cの世界は[]の中だけってスタンスであってほしいから
ドット構文?はあんまり増やしてほしくない
個人的にはElixrのパイプ演算子(|>)をobj-cに採用して欲しい。
(元ネタはElixirじゃないかもしれないけど。)

[NSObject alloc] |> [@ init]
みたいな感じで使う。Elixirの場合だと返却値を次のメソッドの第一引数に渡すって意味だけどobj-cでは@を置き換えるみたいな感じで


ObjCユーザ的にはこういう構文変更はあり?

759 名前:デフォルトの名無しさん mailto:sage [2017/08/07(月) 14:32:41.53 ID:fzx+TAun.net]
>>742
理解はするが、全く共感はしない
見慣れない構文に戸惑うが、そりゃ違う部分だから当たり前だろ。「辛い」なんて全くわからん。見慣れない構文もよく使うのがほとんどだから直ぐに見慣れるだろうに、なにが辛いんだか??



760 名前:デフォルトの名無しさん mailto:sage [2017/08/07(月) 14:40:24.16 ID:fzx+TAun.net]
>>742
ああ、なんかイミフでスルーしてたが、「失礼」って、俺が書いた「(失礼)」のことか??
だとしたら、お前にだよ。で、失礼の部分はそこじゃない。アホだなと思ったが、そう直球でいきなりアホ呼ばわりするのもっていう「アホって書くけど失礼」って意味

761 名前:デフォルトの名無しさん mailto:sage [2017/08/07(月) 15:36:57.49 ID:GHOXhqb3.net]
>>744
うんうん、理解できたのは良いことだぞ
ObjC至上の宗教家っぽいし、共感できないのは信仰が違うから仕方ないんだろうね
流石に信仰を曲げてまで共感してくれとは思ってはないよ

ただ、お前さんが共感できないからってアホとなじるのはどうかと思うし
信者がそういう言動をする所もObjCがディスられる要因なんじゃないかな

762 名前:デフォルトの名無しさん mailto:sage [2017/08/07(月) 16:33:25.65 ID:fzx+TAun.net]
なぜに上から目線?wwまあ、自己脳で完結してるのは知ってるからいいけど

宗教とか信仰とかただのアンチなのか?まあ、言いぶりからはお前は使っているっぽいのかなと思ったが、ちょっとやってみただけ(/やらされたのか?辛いらしいからw)が正解かな?
自分のモノにできてないのは確かのようだけど。で、やっぱ最初の俺のレスが正解か…ww なら続けた意味は、まあ、あったようななかったような

763 名前:デフォルトの名無しさん mailto:sage [2017/08/07(月) 17:19:28.82 ID:nZ0RU5t+.net]
中身がCの文法で書かれたモジュールを
Cの関数なんかじゃできなかったレベルで
取り回せるのが便利で評価されてる言語に
「そのCじゃない部分が嫌なのよね俺」とか
ここで口を開くレベルにも至ってなくて草ボウボウwww

764 名前:デフォルトの名無しさん mailto:sage [2017/08/07(月) 20:29:51.10 ID:zWbONOmM.net]
>>743
既に出来なかったっけ?ドット構文

765 名前:デフォルトの名無しさん mailto:sage [2017/08/07(月) 20:36:52.55 ID:n9zFQLuH.net]
>>749
それはプロパティ限定。
seterとgetterの糖衣構文に限定してる

766 名前:デフォルトの名無しさん mailto:sage [2017/08/07(月) 21:11:50.86 ID:zWbONOmM.net]
>>750
あーそうだね スマソ

767 名前:デフォルトの名無しさん mailto:sage [2017/08/07(月) 21:19:43.31 ID:n9zFQLuH.net]
>>743
それ。俺が書いたやつだけどマジで欲しいぞ。
https://github.com/ReactiveCocoa/ReactiveObjC
これとかみてくれればわかると思うけど。
ネストが深くなると凄く書きづらくなるし。Rxの学習をobjCで始めるとマジで辛い。
swiftはopensourceになって提案できるようになってるけど
objcにそういう仕組はないのかね

768 名前:デフォルトの名無しさん mailto:sage [2017/08/08(火) 00:11:51.35 ID:fmNB/sG0.net]
>>752
たぶんこのスレで[ ]のネストについてなんか言ったところで暖簾に腕押しだと思うけど

769 名前:デフォルトの名無しさん mailto:sage [2017/08/08(火) 04:37:18.97 ID:qCAzS5bX.net]
>>747
Swiftなんて商用利用に耐えないし他にApple OSで使える言語ないから、10年以上業務で使ってるよ
今更自分で使う分にはさほど問題ないけどだからってObjCは至上の言語!とか言うほど陶酔してないわ

>>752
[ ]のネストの深さに味があっていいんだろ
慣れてくると冗長な命名規則と[ ]ネストの深さで1行あたりの処理がアホほど伸びて、それが美しく感じられるようになるぞ



770 名前:デフォルトの名無しさん mailto:sage [2017/08/08(火) 09:10:19.12 ID:qTxWRpQR.net]
メッセージ構文だろうがドット構文だろうがネスト数が多いこと自体が鬱陶しいだろ
どっちかっつぅとクラス設計の問題じゃないの

771 名前:デフォルトの名無しさん mailto:sage [2017/08/08(火) 09:54:27.79 ID:Apkyawzp.net]
>>755
Rxの概念的な都合によるものだから
どうしてもネストが深くなりがちなんだよね。
そもそもパイプが使えるとデバッグが楽だったりするし

ネスト構造でログを間にはさみたいときとかどうする?
結局ネストを壊して一時変数に途中経過を代入して出力するしかないでしょ?
メソッドチェーンなりパイプ演算子が使えると間に挟むだけになるから凄く
メンテナンス性が高い

772 名前:デフォルトの名無しさん [2017/08/08(火) 09:55:18.73 ID:N1iCp3j/.net]
>>755
Reactive Functional Programmingは必然的に多重ネストしちゃうが、
鬱陶しいとは、初めての意見だなぁ。

variable.asObserver()
.foo()
.bar()
.baz() {|cell|
// do something
// do something
}

これって、鬱陶しいかなぁ?

773 名前:デフォルトの名無しさん mailto:sage [2017/08/08(火) 09:55:30.87 ID:Apkyawzp.net]
>>755
あとドット構文とかパイプ演算子を使うとネストは深くならない。
メソッドチェーンを繋げるとネストが深くなるとは言わないよね

774 名前:デフォルトの名無しさん mailto:sage [2017/08/08(火) 12:01:58.34 ID:qTxWRpQR.net]
ドットでも[ ]でも大して変わらないって自分は思うってだけ

775 名前:デフォルトの名無しさん mailto:sage [2017/08/08(火) 12:24:05.02 ID:qCAzS5bX.net]
[[[[variable asObserver] foo] bar] baz:^(id cell) {
// do something
// do something
}];
ふつくしい

776 名前:デフォルトの名無しさん mailto:sage [2017/08/08(火) 13:23:55.95 ID:F28KTTfx.net]
>>759
そうとも言えるし、そうとも言えない

リアルに最近、(ちょっと)ん?と思った文w
[self menuItemsForPath:[[[node attributes] getNamedItem:@"representedFile"] value]]
まあ、現在のObjective-Cでも、
[self menuitemsForPath:[node.attributes getNamedItem:@"representedFile"].value];
と書けば、全然w。ドットにしてみて、
self. menuitemsForPath(node.attributes.getNamedItem(@"representedFile").value)
まあ、あんま変わんないかな

そうとも言えないにはイマイチだったか

777 名前:デフォルトの名無しさん mailto:sage [2017/08/08(火) 13:47:41.40 ID:qTxWRpQR.net]
>>760
同じように改行でもインデントでもなんでもいれれば?

778 名前:デフォルトの名無しさん mailto:sage [2017/08/08(火) 14:36:01.22 ID:qCAzS5bX.net]
Apple様のXcode自動インデントに任せて baz:^ の:の所に合わせてブロック文の中身はインデントを入るよ?
ブロック処理がコード上のすごい右側に行ってしまって
もうこの美しさと言ったらObjC/Xcode以外では中々に見ることが出来ないレベルだと思ってる

779 名前:デフォルトの名無しさん mailto:sage [2017/08/08(火) 14:44:47.05 ID:F28KTTfx.net]
Apple様とか言ってるのはお前がだぞw
有るものを受け入れるに過ぎない&有るものをいかにどう使うかがお前や俺らのやること。それを使うというのはお前や俺らが自分で決めたことなんだから。それは別にAppleのに限らず

なんか自称開発経験長いようだが、よくそんな自分では解決できない不満満々でやってるなあ。その分他に使えばいいのに。全然長いように見えないな



780 名前:デフォルトの名無しさん mailto:sage [2017/08/08(火) 15:38:18.31 ID:taAceK/L.net]
2個目以降のblocks引数のことだろ
1個目の左側と揃えた方がいいよ

781 名前:デフォルトの名無しさん mailto:sage [2017/08/08(火) 16:10:59.77 ID:F28KTTfx.net]
デフォのフォーマットでは、2個目以降のblocksも引数のblock中身はインデントひとじゃね?
いくらあろうが右へ右へとは行かないよな??

782 名前:デフォルトの名無しさん mailto:sage [2017/08/08(火) 16:22:42.51 ID:taAceK/L.net]
インデントは2個目で止まる
だけどシグネチャがそもそも長いから右に寄りすぎるってのはある
1個目と同じで問題なさそうなのにね
まあ別にいいんだけど気になる点ではあるな

783 名前:デフォルトの名無しさん mailto:sage [2017/08/08(火) 16:29:39.36 ID:F28KTTfx.net]
そもそもデフォのフォーマットが気に入らないwから、自動補完後に整形するけど、自動補完中はTab(&click)とReturnで進めばBlockの中身分インデント一つだけのような/だけだけどなあ
2つになる場合がなんかあったかもしれないが補完後に整形するから忘れてるのかもしれないけど

784 名前:デフォルトの名無しさん [2017/08/09(水) 07:47:44.63 ID:EM9uH4Ru.net]
>>761
ドットもよくわからんよね
[ ]はどのオブジェクトに対して何の呼び出しをかけているかが明確にわかりやすくて個人的にはいいと思うんだけどな

785 名前:デフォルトの名無しさん mailto:sage [2017/08/09(水) 11:34:46.72 ID:7tAKIt6P.net]
提供された言語仕様をあるがままに受け入れられないヤツはObjCを使うな

786 名前:デフォルトの名無しさん mailto:sage [2017/08/09(水) 12:55:35.37 ID:a8XvE339.net]
「俺の馴染みのない表記が混ざってるのがキモチワルイ」言われても
評価してる側は「外への働きかけが表記分けで一目瞭然なのがイイネ」だから
話が平行線というか、
むしろ、最近の言語が(swiftみたいに)すぐにどのレベルの処理も
フラットにベターッと書くのを指向していて
それよく知られてるいつもの【ダメなやつ】なのになんで
あれやりたがる開発者多いのか…

787 名前:デフォルトの名無しさん mailto:sage [2017/08/09(水) 13:23:22.09 ID:qPu9JyaP.net]
Obj-Cのラインは行頭に@という手もあるぞ

788 名前:デフォルトの名無しさん mailto:sage [2017/08/09(水) 13:28:37.05 ID:mzNn5sYF.net]
[] はコストが関数呼び出しより高いことを明示してる感じでとても良いと思う。

789 名前:デフォルトの名無しさん mailto:sage [2017/08/09(水) 14:34:41.41 ID:7tAKIt6P.net]
プロパティとかいうドット表記が問題なんだよな, 挙句にgetter/setterのメソッドに紐づいてるし
あれをObjCに取り込んだ害悪は誰だったんだろうね



790 名前:デフォルトの名無しさん [2017/08/09(水) 14:53:43.66 ID:ocU/hJiZ.net]
>>774
変な日本語!
プロパティアクセスに限って、ドット表記ができるってのは、
Objective-Cらしくて良いんじゃ無い。

791 名前:デフォルトの名無しさん mailto:sage [2017/08/09(水) 15:10:08.58 ID:7tAKIt6P.net]
230デフォルトの名無しさん (ワッチョイ 056c-cJAr)2017/08/09(水) 14:56:18.93ID:ocU/hJiZ0
>>230
Objective-Cでもジェネリクス可能なのか?

どのレベルまでできる?
1. 型汎用な関数
2. 型汎用なクラス
3. 型汎用なプロトコル
4. 型汎用なプロトコル・エクステンション


SwiftスレでObjCについて聞く前にググれ
https://developer.apple.com/library/content/documentation/Swift/Conceptual/BuildingCocoaApps/InteractingWithObjective-CAPIs.html#//apple_ref/doc/uid/TP40014216-CH4-ID173

792 名前:デフォルトの名無しさん mailto:sage [2017/08/09(水) 15:10:17.60 ID:qPu9JyaP.net]
プロパティじゃなくてもシグネチャ次第でドットにできるけどね

793 名前:デフォルトの名無しさん mailto:sage [2017/08/09(水) 15:15:27.76 ID:qPu9JyaP.net]
あゲッターだけか

794 名前:デフォルトの名無しさん [2017/08/09(水) 15:47:05.07 ID:ocU/hJiZ.net]
>>776
Lightweight Generics
って書いてあるね。
Swiftから呼べるObjective-Cコードは軽量版ジェネリクスってことか?

軽量版ジェネリクスかぁ。。。なんかグッと来る日本語無いかな?
Matzだって名前重要って言ってるし。

795 名前:デフォルトの名無しさん mailto:sage [2017/08/09(水) 18:10:30.11 ID:m222t+F2.net]
>>774
確かそもそもは、Cocoa Binding
Cocoa Binding(内で使う/に指定する)で メンバ(のメンバ?) の表記がドット。Cocoa Bindingとして対象は当然「プロパティ」という概念/名称になろう
この時点ではObjective-Cには property なんてなく、当然ドットもない。Cocoa Bindingがプロパティとして呼び出すのは単にセッター/ゲッター。セッター/ゲッターを量産する手段をObjective-Cには同時期かまたはちょっと後(それまでは、全部手でセッター/ゲッターを書く)

その後いろいろあって、今のに

なので、よくわからんが今やり始めてそう思うのは仕方がないのかもしれないが、無茶苦茶言ってるなてとこかなw

796 名前:デフォルトの名無しさん mailto:sage [2017/08/09(水) 18:46:53.08 ID:P/9b8Th9.net]
>>771
その【ダメなやつ】を最近もクラスプロパティの言語仕様追加で従来[ ]で呼び出してたものを.で呼び出すように推進してるからなぁ
言語仕様変えただけじゃなくご丁寧にCocoa, UIKitのフレームワークライブラリの実装まで修正してくれてるし

昔は【ダメなやつ】だったのかもしれんが、今は【イイやつ】になってると思うべきなんじゃねw
ObjCの言語仕様が追加されるのはいつものことだし、変わったものをモダンで良いものと思って追い続けないとやってけないよ

797 名前:デフォルトの名無しさん mailto:sage [2017/08/09(水) 18:55:51.12 ID:P/9b8Th9.net]
>>779
なんか誤解してそうだけどObjC単体でも使えるからな
ListやDictionaryなんかの一部コレクション系クラスの保持オブジェクトの型をコンパイル時チェックできるようになった
Java5の頃のジェネリクスと同じ感じだな, C++のTemplateみたいな使い方はできないがまぁ仕方あるまい

軽量"版"というからしょぼく見えるんだから軽量ジェネリクスでいいじゃん
コンパイル時間は多少伸びてるだろうが、実行時オーバーヘッドは0のはずだからな

798 名前:デフォルトの名無しさん mailto:sage [2017/08/09(水) 19:35:58.41 ID:eNfr2UIc.net]
>>780
まあドット表記自体は構造体のメンバアクセスとしてC(=Objective-C)に備わってるけどな
それをオブジェクトに対してあえて適用しなかったのがObjective-C

799 名前:デフォルトの名無しさん mailto:sag []
[ここ壊れてます]



800 名前:e mailto:2017/08/09(水) 20:09:54.22 ID:EM9uH4Ru.net [ >>783
正確にはC(∈Objective-C)だけどな
まああえて=って書いたのかもしれんが ]
[ここ壊れてます]

801 名前:デフォルトの名無しさん mailto:sage [2017/08/09(水) 20:20:14.93 ID:m222t+F2.net]
>>783
あえてというか、必要性が無かったからだろう
Cocoa BindingでGetter/Setterをたくさん用意しなくてはならない/するのを強制されるのは確か。そういえばGetter/Setterの命名規則もこれのせいだったような(それ以前にあったかもしれないが「でなければならない」ではなかった)

オブジェクトに対しては、
ClassA *obj = …
(*obj).instaceVariable = …;
として、(たぶん)最初からあるけどなww(Cの構造体メンバアクセスとは確か「ちょっと」違う)

最初は構造体のと同じ表記なのに単なるメソッド呼び出しの置き換えとかキモかったなw

802 名前:デフォルトの名無しさん mailto:sage [2017/08/09(水) 20:31:19.14 ID:m222t+F2.net]
>>785
>それ以前にあったかもしれないが「でなければならない」ではなかった
ちょっと違うな
それ以前にあったかもしれないがルールが明文化された
かな。ルールに基づかないのにもなのがsetter=/getter=の存在でもあるし

803 名前:デフォルトの名無しさん mailto:sage [2017/08/09(水) 20:49:27.68 ID:qqV2xE2N.net]
>>785
obj->instaceVariable = …;
とするとどこぞの言語っぽくもなるなw

804 名前:デフォルトの名無しさん mailto:sage [2017/08/09(水) 20:57:44.83 ID:P/9b8Th9.net]
> オブジェクトに対しては、
> ClassA *obj = …
> (*obj).instaceVariable = …;
> として、(たぶん)最初からあるけどなww

最初からはねーよwww
ギリギリ->オペレータがあったくらいだわ
まぁその当時はC/C++を継承した->は【ダメなやつ】で[ ]のみが正義だったわけだが

805 名前:デフォルトの名無しさん mailto:sage [2017/08/09(水) 20:59:19.88 ID:m222t+F2.net]
>>787
それは「たぶん」でなくて「確かに」だろう
そっちの書き方が普通で>>785の書き方する方はちょっと捻くれ者かなww

NSCopying実装するのに普通にそれをだったが、今時はsetter/getterやpropertyのがかな?まあ、setter/getterやpropertyを用意するまでもないインスタンス変数なんて普通にあるから、今でもだろうけど

806 名前:デフォルトの名無しさん mailto:sage [2017/08/09(水) 21:01:34.46 ID:m222t+F2.net]
>>788
なるほど。使おうとしたことあるのか?w
なんか下みたらそんな気配は無さそうだが、まあ、俺は試したことは無いので、いう通りなんだろう。どうも

807 名前:デフォルトの名無しさん mailto:sage [2017/08/09(水) 21:03:58.20 ID:qPu9JyaP.net]
(*obj).foo も obj->foo も@publicじゃなきゃならんな
Cの構造体の構文に似せてあるが、シュガーだよ

808 名前:デフォルトの名無しさん mailto:sage [2017/08/09(水) 21:15:38.13 ID:m222t+F2.net]
>>791
うん。まあ、単なる目に見えるメソッド置き換えよりも、なんか気分的な親和性があったというか

NSObjectの構造を見るとアクセスするのに単純にいかなさそうなんだけど、今はなんか簡単にやってやがるっぽくない?よく調べてないがコンパイルで吐くコードがなんか単純(以前のでの吐くコードがどんなんか知らんけど)
struct objc_class が OBJC2_UNAVAILABLE だから、Objective-C 2.0 で何か思いきったことやってんのかなあ?

809 名前:デフォルトの名無しさん mailto:sage [2017/08/09(水) 21:51:51.46 ID:m222t+F2.net]
>>788
稼働可能状態な古いMac持ってる知り合いに聞いて試してもらったら、10.4では (*). はコンパイル&ランで問題ないって
10.0 から 10.3 の間かなあ?そんな別に無くてもいいもんwいつサポートするようになったか興味がちょっとあるなw(いつの話か教えてくれたら嬉しいな)



810 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 07:30:10.75 ID:qaUJfGjG.net]
objective-c property のアクセス制限で相談です。
外部へはreadonlyプロパティとして公開し、内部向けにclass extentionにてreadwriteプロパティとして再定義したクラスがあります。

これを、swiftで使おうとしたところ、generated headerの中にこのプロパティ定義が作られない事に気付きました。(xcode 8.3.3)
多重定義を止めると、普通にプロパティ定義が作られます。

多重定義プロパティでのgenerated header不具合っぽいのですが、良い対処方法を教えてください。

思いつくのは
・Immutable classのサブクラスとしてmutable classを作り、そこでプロパティを再定義
・readwriteのpropertyを別名でclass extentionで定義しインスタンス変数を共有、内部からはwrなプロパティを使う
くらいです。

811 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 12:13:53.23 ID:dKEWL6WP.net]
こういうこと?

Hello.h
--
@interface Hello : NSObject
@property (readonly) int i;
@end

Hello+ReadWrite.h
--
#import "Hello.h"
@interface Hello()
@property (readwrite) int i;
@end

ObjCでもSwiftでもHello+ReadWrite.hをimportしてればrwプロパティとしてアクセスできてる(Xcode8.3.3/High Sierra)
Hello.hをimportしてrwプロパティを持つgenerated headerにならないのは不具合ではなく仕様通りではないかと

812 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 12:32:23.62 ID:qaUJfGjG.net]
いえ、公開したいのは、readonlyなプロパティなので、上記例で言えばHello.hの方です。

その場合、プロパティ自体が存在しない空のgenerated headerになってしまいました。

Foobar.h
@interface Foobar: NSObject
@property (readonly) uint32_t count
@end
Foobar+internal.h
@interface Foobar ()
@property (readwrite) uint32_t count
@end
Foobar.m
#import "Foobar.h"
@implementation Foobar
@end

813 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 13:46:56.49 ID:dKEWL6WP.net]
同一プロジェクト内で双方向のpublic getter, private setterはこんな感じでいけた
ttps://pastebin.com/2ckH2LeE

ライブラリプロジェクトでプロジェクトを跨る時はObjC側はBuild Phrases -> HeadersでHello.hをpublic設定して
Swift側は@objc public class HelloSwiftで宣言するんだったかな, @objc publicは最新で不要になってる気もする
多分、ライブラリプロジェクトについて話してるんではないだろうから、ここは意識する必要ないだろうけど
プリミティブ型じゃない時に何か特殊な障害があったかな・・・

814 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 14:18:44.04 ID:2Yw2XYfL.net]
372仕様書無しさん2017/08/11(金) 10:31:43.41
フリーランスで検索すると引っかかる零細ITがやっているフリーランスのサイトはだめだ。
高額に見せているけど実際は50万前後
JIET加入した方がいいよ。案件は毎日千件以上末端価格は60万円 平凡な稼働時間の80万円の案件もある。
ユー子も求人をだしてる。名刺も渡せる。ユー子に名刺が渡せるんだぞ。夢のようだ

それらの案件まさぐってHPで転売していたのが零細ITがやるフリーランスサイト

473非決定性名無しさん2017/08/03(木) 15:21:30.71

JIETに加入すれば誰でも3次60万からスタートだ。フリーランスのサイトをやってる
自称エージェントもそこから案件情報を取得しきてる。サイトで60万で釣って40万から55万の
間でやらしている。

446非決定性名無しさん2017/08/02(水) 22:12:48.95

JIETに毎月5千円払えば3次から入場できるだろ?
高額をうたうフリーランスのサイトはだいたい5次から45万円
JIETで閲覧応募できる末端価格からさらに搾取するのが高額をみせつけるフリーランスサイトでした
高額案件をみせつけるフリーランスサイトも案件の取得はJIETでした

自称エージェントはJIETから流れてくる案件を転売してるだけだった。
JIETに加入すれば誰でも案件に応募することができた。収入が40万50万台にならなくて済む

815 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 15:21:17.11 ID:3WtgEz9W.net]
その方法でまんま何も問題ないけど?
Swift側で、入力補完でプロパティ出てくるし、参照に問題なく代入で
cannot assign to property: 'count' is a get-only property
ってエラー出るし

generated headerってなんじゃらほいだが。SwiftでFoobar.countの定義参照(Command+Click)してもFoobar.hのそれまんまがだし
Swift -> Objective-C が Generated Header(SwiftソースからObjective-Cのヘッダーをじぇねれーと)じゃないのかな??Objective-C -> Swift はBridge Header (なにかしているんだろうが、単なる参照用)

816 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 15:26:34.38 ID:3WtgEz9W.net]
>>799>>796宛て

>>797
すでにレスってたのね、失礼。ほぼ、同じどす

817 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 15:37:26.13 ID:qaUJfGjG.net]
>>797,799
コメントありがとうございます。指摘通り、Generated interfaceの誤りですね。

今手元でこんな感じです。
ttp://i.imgur.com/D8CWZTP.jpg

上がCocoaアプリ、下がFrameworkに置いたものです。
いずれも、Generated I/Fの中に上書きしたプロパティが出てきません。

Xcode再インストールが先でしょうか?

818 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 15:52:20.34 ID:3WtgEz9W.net]
>>801
絵が見えないー。何をやってるのか見えなーい

んー… Swiftで作ったクラスをObjective-CでがGenerateだと思うんだがな。HeaderとInterfaceの違いではなく…まあ、どうでもいいけど、Objective-Cで作ったクラスをSwiftででいいのね?

何やってるのか見えないのでなんともだが、とりあえず Product メニューの Clean(よりも、Option押しながらのClean Build Folder…)かな

819 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 15:57:11.27 ID:qaUJfGjG.net]
ttp://light.dotup.org/uploda/light.dotup.org471442.png.html
すみません貼り直します。

Obj-c => Swift が目標です。



820 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 16:09:41.21 ID:3WtgEz9W.net]
>>803
ん??右端の Hello.h が generated header/Generated interface とやら?んなのいらんだろ??
単に、Bridge Header に、その左隣の Objective-C 用の Hello.c をインポートすればいいだけだろ??>>797さんのでいえば30から31行目、Hello-Bridging-Header.hというファイルに#import "Hello.h"を一行

Bridge Headerを使うようには設定でだが、Objective-Cのプロジェクトで最初にSwiftファイル作れば、「Bridge Headerつくるよ」とXcodeが勝手にやってくれるし、その後設定を確認してみればBridge Headerを使う設定がわかるだろう

821 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 16:13:00.14 ID:3WtgEz9W.net]
>>804
>勝手にやってくれる
Bridge Headerファイルの作成と、プロジェクトへのBridge Headerファイル登録と、ビルド設定ね
Swiftで使うクラスは、Bridge Headerに自分で記述する(単に#import "….h")

822 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 16:22:45.31 ID:3WtgEz9W.net]
>>804
すまん。ちょこちょこ間違えた
>その左隣の Objective-C 用の Hello.c
その左隣の Objective-C 用の Hello.h
>でいえば30から31行目
でいえば30から32行目

823 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 20:56:39.29 ID:3WtgEz9W.net]
>>803
そういえば、(標準の)Frameworkは?ってのは、umbrella headerってのをFrameworkに仕込むらしい
それも、ヘッダーはそんなSwiftみたいなのではなく、単にObjective-Cのヘッダー(をSwift

824 名前:用にプリコンパイル(?)してモジュール化しての)
すると、Swiftで
import Foobar
ってだけで
[]
[ここ壊れてます]

825 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 21:33:48.50 ID:3WtgEz9W.net]
>>807
ああ、umbrella headerって、Objective-Cでも/でのModulesのためのか。@importの。@importなんて忘れてたw
それの使用/流用か?@importはSwiftより1年先みたいだし

826 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 21:37:17.32 ID:vLIuNhx/.net]
流用っていうかLLVMの機能

827 名前:デフォルトの名無しさん mailto:sage [2017/08/13(日) 11:30:09.68 ID:TkYKFb/H.net]
解決できてなさそうだから一式上げた
ttps://www.dropbox.com/s/dycv00sv7gc9c9a/Hello.zip?dl=0

Swift PJをベースに作ったけど、ObjC PJベースで作っても同じ感じ
Hello-Bridging-Header.h を適切に作成、参照させてないのが原因とエスパーしとく
参照設定はXcodeで Hello -> Build Settings -> Swift Compiler - General -> Objective-C Bridging Header の所な

828 名前:デフォルトの名無しさん mailto:sage [2017/08/13(日) 14:47:06.11 ID:XQniorI3.net]
アンブレラヘッダって、Cでよくやる各モジュールのヘッダをincludeしてまとめてあるヘッダのこと

829 名前:デフォルトの名無しさん mailto:sage [2017/08/13(日) 16:13:58.67 ID:OaUgUnZt.net]
iOSでアンブレラヘッダって出来るんだっけ



830 名前:デフォルトの名無しさん mailto:sage [2017/08/13(日) 16:17:13.40 ID:XQniorI3.net]
できるよ
.h作って必要なヘッダを#import

831 名前:デフォルトの名無しさん mailto:sage [2017/08/13(日) 16:32:48.83 ID:OaUgUnZt.net]
Accelerate.frameworkを見ると出来るみたいね
>>813
サンクス

832 名前:デフォルトの名無しさん mailto:sage [2017/08/13(日) 17:27:14.87 ID:GzzlNSce.net]
>>813
ごめん、アンブレラヘッダとアンブレラフレームワークと混同してた。frameworkも出来るみたい。

833 名前:デフォルトの名無しさん mailto:sage [2017/08/13(日) 19:08:50.09 ID:3CTOgVkL.net]
皆さんありがとうございます。

どうにもドツボにはまっているので、頂いたものを勉強し直します。

834 名前:デフォルトの名無しさん mailto:sage [2017/08/30(水) 09:43:22.83 ID:thVvZo3p.net]
Xcodeのメジャーバージョンアップに合わせた言語仕様更新
ここ2年くらいないけどもうObjCの改善はやめたのかな

835 名前:デフォルトの名無しさん mailto:sage [2017/08/30(水) 14:31:13.31 ID:VdDjZJhL.net]
Xcode 8からクラスプロパティが入った。
Xcode 9はわからん。

仕様変更は正直いらないよ。新機能の追加だけで十分。
最近のObjective-Cの良いところは仕様変更が少ないことだと思う。
Swiftは変更しすぎでついていけない。

836 名前:デフォルトの名無しさん mailto:sage [2017/08/30(水) 16:55:31.83 ID:thVvZo3p.net]
そうか、クラスプロパティが去年だったか, 地味だから忘れてた
Xcode9は今出てるリリースノートの範疇を見るになさそうなんだよねぇ

最近のObjC下位互換破棄はGCの完全撤廃がXcode8であったような?誰も使ってないだろうけども
ObjCはシンタックスシュガー多いけど基本は残していくスタンスよな

837 名前:デフォルトの名無しさん mailto:sage [2017/08/30(水) 18:53:05.49 ID:OtY774nI.net]
>>818
ころころ仕様が変わったら何のデバッグしてるのかわからんからね

838 名前:デフォルトの名無しさん mailto:sage [2017/08/31(木) 12:33:49.66 ID:ELOqa+z/.net]
Xcode9では言語仕様追加はないのか
毎年何らか追加してきてたし、ネタ切れってわけでもないだろうに、Swiftにリソース食われてるのかねぇ

Swiftはコミュニティにぶん投げて、AppleはObjCの言語仕様をアップデートしてくれよなぁ

839 名前:デフォルトの名無しさん mailto:sage [2017/08/31(木) 16:41:09.38 ID:DmRL1EOk.net]
nullability にしろ generics にしろ、最近の変更は swift から obj-c を使いやすくするのに必要なものだったから、もうやることはあまり残ってなさそう



840 名前:デフォルトの名無しさん mailto:sage [2017/09/01(金) 09:02:41.01 ID:YXmfUhFy.net]
autoキーワードのデフォルト有効化はよ
ObjC++(.mm)にすれば良いんだけどなんか違う、idをautoの代わりに使うのはもっと違う

841 名前:デフォルトの名無しさん mailto:sage [2017/09/01(金) 10:47:18.17 ID:B8cKPTM5.net]
C++17も出るし、C++14, 17の新規機能のポーティングが始まるんじゃね?






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<287KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef