トップページ⇒tech
1001コメント313KB

Swift part4 [転載禁止]©5ch.io

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2014/11/13(木) 15:39:01.67ID:TmOo0Hy+
WWDC2014で発表されたAppleの新言語Swiftについて語りましょう

関連スレ
TypeScript(MS) VS Swift(Apple)
http://peace.2ch.net/test/read.cgi/tech/1401758403/
帰ってきた動的言語 VS 静的言語(代表Swift)
http://peace.2ch.net/test/read.cgi/tech/1401809550/
新言語Swiftを語るスレ
http://anago.2ch.net/test/read.cgi/mac/1401736249/
プログラミング言語Swift
http://anago.2ch.net/test/read.cgi/mac/1401736921/

前スレ
Swiftスレ
http://peace.2ch.net/test/read.cgi/tech/1401736341/
Swift part2
http://peace.2ch.net/test/read.cgi/tech/1402465335/
Swift part3
http://peace.2ch.net/test/read.cgi/tech/1406083608/
0477デフォルトの名無しさん2015/01/27(火) 23:06:51.44ID:8Es+EE5K
>>476
うん、いや、本当にわかってないんだったらもういいんだ。
どうぞお幸せにお過ごしください。
0478デフォルトの名無しさん2015/01/27(火) 23:08:02.56ID:Snmezf+m
>>477
お前の主張wが聞きたかった。よく見たらなにもないな… ちくしょーっ
まあおつかれさん
0479デフォルトの名無しさん2015/01/27(火) 23:11:11.07ID:8Es+EE5K
>>478
そうかい。裏とか逆とか対偶とか時々は思い出してやってな。じゃあね。
0480デフォルトの名無しさん2015/01/27(火) 23:32:24.88ID:CUzhPZ77
前はDylanだし、Appleは自社開発のプログラミング言語に
人名とかぶる名前をつけるのが好きだな
0481デフォルトの名無しさん2015/01/27(火) 23:45:37.47ID:ucfZxcxx
ググラビリティ的にありがたくはある
0482デフォルトの名無しさん2015/01/27(火) 23:48:44.31ID:TQ7Re758
テイラー女子とスウィフト男子
0483デフォルトの名無しさん2015/01/28(水) 00:02:34.62ID:/G/OURFa
ダーウィン爺さん

ちなみに社名とロゴもパクリで訴えられました
0484デフォルトの名無しさん2015/01/28(水) 00:05:09.90ID:wg3x/SMn
そういや言語じゃないけどニュートンもそうか
0485デフォルトの名無しさん2015/01/28(水) 12:26:26.21ID:nu6iYjgU
心を打たれた、衝撃だ、と賞賛してくれる人も少なからずいました。
ボロクソに書いてくれた人も少なからずいました。
しかし、ジョブズの言うとおり、誰も無視はできなかったようです。

Think Different! Make a Difference!

https://gist.github.com/kenokabe/cfd0049ac3c11ea45a27
0486デフォルトの名無しさん2015/01/28(水) 12:51:14.29ID:i0epNFcZ
長くて最後の数行だけ読んだら自己批判?してて意味が分からない
滑稽で面白い人をQiitaは追い出してしまった

AliceとかBobはよく使うしな
固有名詞は便利だと思う
0487デフォルトの名無しさん2015/01/28(水) 16:29:05.10ID:M4o1Ahp6
>>485
> 技術の話題でThink differentするのがそんなに難しいですか?

うちの社内にも既存の用語や一般用語を世間で使われているのと別の意味で使って
フレームワークを作っていく人が居る。初めは戦っていたけど、最近では
「あの人の言葉とラベルはそのまま読まないほうがいい」という対応に変わりました。

世の中には言葉と名前を大事にする人と、そうではない人が居ると思う。
0488デフォルトの名無しさん2015/01/29(木) 18:34:00.63ID:lQw9npLj
iTunes Uにスタンフォードの「Developing iOS 8 Apps with Swift」きたで

https://itunes.apple.com/jp/course/developing-ios-8-apps-swift/id961180099
0489デフォルトの名無しさん2015/01/29(木) 19:04:14.08ID:IGBygxum
>>488
ええなこれ
0490デフォルトの名無しさん2015/01/29(木) 19:31:43.52ID:3SK/mE8d
swiftとはなんぞや?を知るには微妙な気がしたがどうだろう
Stringクラスについてとか真面目に説明してくれないとマジで困ると思った
(NSStringとStringに実は互換性がないとか、Cocoa.Framework叩く時に首をかしげるわ)
0491デフォルトの名無しさん2015/01/29(木) 19:54:24.56ID:KP4aMXE3
>>488
おいくらどすのんのん
0492デフォルトの名無しさん2015/01/29(木) 20:34:10.78ID:2DmfCkuL
>>490
互換性が無いというのはなんぞや
CFStringとNSStringとの関係と同じというわけにはそりゃいかないが、言語/コンパイラとして変換をサポートしているのでC StringとNSStringよりは差がない
Stringに関してはそれほど困ることはないように思えるけどな
0493デフォルトの名無しさん2015/01/29(木) 23:28:16.42ID:lQw9npLj
>>491
iTunes Uの抗議は全部無料だよ
0494デフォルトの名無しさん2015/01/29(木) 23:29:38.10ID:KQpjaqDm
初心者にはありがたいねぇ

問題は英語ってことだ
0495デフォルトの名無しさん2015/01/30(金) 00:31:12.48ID:5aFqczel
>>492
何をした時か忘れたけど
NSStringを食うFramework APIにString渡してビルドエラー
はぁー?シームレスに使えるんじゃなかったのかよ、と憤慨したのは覚えてる
他のIntとかにもトラップありそうで戦々恐々しながらswift扱ってるわい
0496デフォルトの名無しさん2015/01/30(金) 00:35:14.73ID:6vb1GQ7+
>>495
そう?結構シームレスだけどな。C Stringも含めてw
何をしたときやねーんと気になるな。まあ、思い出したら教えてください。真摯に
0497デフォルトの名無しさん2015/01/30(金) 02:30:26.68ID:RDtdaN29
optionalで引っかかったんじゃね
0498デフォルトの名無しさん2015/01/30(金) 09:45:24.46ID:sSNe+aTs
>>497
その手の話だった気がするが!付けてもダメだったんだけかなぁ
でもoptionalなオブジェクト渡しても今は落ちるだけだし、思い出したり見つけたら伝えるよ
>>496も今伝えられなくてスマンな
0499デフォルトの名無しさん2015/01/30(金) 16:26:31.83ID:6vb1GQ7+
func hoge( arg: NSObject? ) {
NSLog("%@", arg) //コンパイル通りません
NSLog("%@",arg!) //クラッシュします
}
どないせっちゅうねーんっ!というのに似ているような。Optionalにまつわるメンドクサさであって….
( NSLog("¥(arg)") がSwiftでは正解 )
0500デフォルトの名無しさん2015/01/30(金) 16:28:03.42ID:j3Aclf8I
>>488
GJ

>>494
このセンセの英語の発音は聴き取り易い
0501デフォルトの名無しさん2015/01/30(金) 18:35:59.04ID:+BuiE/FM
>>499
それを常用してたら

var value : String? = "text"
var message = "key=\(value)"
NSLog(massage)

で、???てなるから過信が痛い(自業自得である
"key= text"じゃなく"key=Optional(text)" って何よって

var value : String? = "text"
if let v = value {
var massage = "key=\(v)"
NSLog(massage)
}

って真面目にやってる

var massage = "key=\(value!)"

だと value が nil だと落ちるし...
NSLogくらいならいいけどファイルログで集計時にカティンときた
0502デフォルトの名無しさん2015/01/30(金) 19:26:33.20ID:6vb1GQ7+
>>501
NSLog/デバッグプリントだからあれでええねんw

Optional/非Optionalがうぜーってことね。理解。俺は非Optionalなんていらんなw
0503デフォルトの名無しさん2015/01/31(土) 10:51:17.53ID:2+9KQkal
>>501
Swiftはコード量も実行速度もobjcに比べて悪そうだな
今さらswiftの実行速度低下なんぞ気にするべくもないが
0504デフォルトの名無しさん2015/01/31(土) 10:51:44.50ID:YMt5PyZL
>>488 >>500
また内容増えてるね
0505デフォルトの名無しさん2015/01/31(土) 11:32:19.80ID:YzWkWj5e
SwiftがObjCよりコード量増えるとか言うのは
ObjCでチャランポランな糞コード書いてましたって言ってるようなもんだろ
0506デフォルトの名無しさん2015/01/31(土) 13:30:23.31ID:kkQNEe7E
>>505
Optional()が付かないように>>501をobjcで書いてみ?

さておき
delegateとclosureとNSNotificationとapp内のパラメータ渡しが多様に至ってメンドイんだが
Cocoaと一緒に使える何かスマートな方法はないのか
0507デフォルトの名無しさん2015/01/31(土) 13:40:59.11ID:EHhs58Kx
>>503
あのコードでなんで?Objective-Cでも同じようなもんだと思うけどな

あのコードは俺には冗長に見えるから俺だったら三項演算子で済ますな
"key =" + (value == nil ? "nil" : value!)
また、nilを結果文字列の"nil"として得たい場合なんて無いから、Objective-Cでも同じようなコードにならざるを得ないという
0508デフォルトの名無しさん2015/01/31(土) 13:48:43.56ID:EHhs58Kx
>>506
あんたが一連のお人ならもちと勉強してからモノ言った方がいいと思うよw
ド素人なわけでもなさそうなんだから
0509デフォルトの名無しさん2015/01/31(土) 13:59:20.21ID:YzWkWj5e
501 は nil のとき出力しないコードになってるけど、それなら ObjC でも if 分岐は必要
コンパイラが指摘してくれる Swift の方が間違いがないし、他人に意図が伝わる

一方で nil でも何かしら出力するなら Swift なら断然簡単に書ける
"key=" + value ?? "nil"
このとき nil の場合の出力はもちろん任意
ObjC で %@ でフォーマット文字列つくると nil は "(null)" 固定
ObjC で任意の nil 出力をやろうと思うと面倒
NSString *message = [NSString stringWithFormat:@"key=%@", value == nil ? @"nilだよ" : value];


結論:どう見ても Swift の方が安全かつ表現力ありつつ簡潔なコード
0510デフォルトの名無しさん2015/01/31(土) 14:07:29.64ID:EHhs58Kx
>>509
>"key=" + value ?? "nil"
おおーっ!おおおおーっ!勉強になりました
0511デフォルトの名無しさん2015/01/31(土) 14:53:52.32ID:PdUfXz8W
>"key=" + value ?? "nil"
あっさり言語仕様変更で覆りそうな表記だなw
もういい加減ないのかねぇ、1.1から随分静かで怖いわ
0512デフォルトの名無しさん2015/01/31(土) 16:57:15.06ID:ewQC+Gju
参考になった
0513デフォルトの名無しさん2015/02/01(日) 00:33:03.30ID:RXAfR0Tq
>>456
birdってFlappyのこと?
チュートリアル的なものあるかな?
0514デフォルトの名無しさん2015/02/01(日) 06:59:55.44ID:WcEUmwlI
Flappy Birdの実装チュートリアルって意味ならないと思うぞ

Playground使ったから簡単にできた、的な記事が当時あったが
このコード量ならどの言語に移植したってそんなに変わらないやね
https://github.com/fullstackio/FlappySwift

SpriteKitがObj-CでもSwiftでもI/Fが変わらないから
GUIライブラリが共通な分早かっただけじゃないかと
0515デフォルトの名無しさん2015/02/04(水) 15:08:56.53ID:fRX+xzrd
分割前のスレに書いたことの要約
【新言語開発が破綻する典型的なパターン】
言語比較厨登場。言語仕様を大量に盛り込む。工数が膨大に。
→開発者が不足。しかも楽しい仕事しかやりたがらないダメな奴ばっかり。
→よってライブラリ、デバッガ、IDEの製作やドキュメントの整備等の面倒だが重要な仕事は手抜きし放題。場合によっては完全放置。
→使えない糞言語なので、ユーザーが集まらない。誰も使ってくれないので開発者のモチベーションが保てない。
→終了。
【対策】
・言語ヲタを排除する。工数を増やす人はいらない。
・達成目標をよく議論して明確にする。無計画に始めない。
・小さい言語仕様にする。出来上がってから少しづつ拡張すればいい。
・他の言語に勝てる分野で勝負する。使えない言語を開発することに意義はない。

汎用言語を作っても無視されるか他言語の劣化コピー扱いされるのがオチだし
ライブラリ作成の工数を減らす意味でも対象にするドメインを絞ったほうがいい。
自分が勝算がありそうだと思う分野をあげておく。
0516デフォルトの名無しさん2015/02/04(水) 15:10:03.68ID:fRX+xzrd
【ゲーム専用言語】
有名なところだとノベルゲームやアドベンチャーゲーム用の吉里吉里2やNScripter
なんかがあるが、GOTO指向の時代遅れの言語なので普通にやれば勝てると思われる。
ネトゲは無理でも、アクションゲーム、パズルゲーム、シューティングゲームくらい対応できれば十分。
【携帯用言語】
携帯電話やAndroidやiPad上でプログラミングできるようにする。
既にやってる人もいるだろうが、メジャーなものはないから今なら
まだ勝てるチャンスがある。ライブラリが小さいもので済むのも利点。
【日本語プログラミング言語】
現在は"なでしこ"一人勝ち状態だが実はかなり低速な上にバグだらけ。
文法も破綻気味なのでもう少し洗練された言語を作ればシェアを全部奪えるのではないかと思う。
【画像/動画/音声 処理用言語】
例えば本格的な画像編集をGIMPとScript-Fuなんぞで頑張るのには無理があるし
GPLでがっちり固められてしまっているのでつまらない。
およそマルティメディア関係のアプリケーションでは速度の問題が大きすぎて
結局C++でプラグイン書いてリンクのパターンになってしまう。
簡単な記述でそこそこ高速なデータ処理言語があればシェアがとれるはず。
0517デフォルトの名無しさん2015/02/04(水) 15:42:03.46ID:EuxqLM2M
>>515-516
貴様のような文脈を理解せずにコピペを繰り返すヤツのせいで
他人の尻拭いをさせられるマの苦しみがこの世から絶えないのだ
0518デフォルトの名無しさん2015/02/04(水) 16:37:49.31ID:WGiIsj0P
長いので3行で頼む
0519デフォルトの名無しさん2015/02/04(水) 16:55:16.65ID:z38+xa7s
ス
レ
チ
0520デフォルトの名無しさん2015/02/04(水) 23:15:20.01ID:Xn8Ab3MM
iOS用プログラミング環境はApple的にアウトなんじゃないっけ
0521デフォルトの名無しさん2015/02/05(木) 02:21:01.48ID:j3Xg4gs2
アウトじゃないよ
0522デフォルトの名無しさん2015/02/05(木) 03:31:15.22ID:noCYh1Py
>>516が何も知らんことだけはわかった。

1.ゲーム専用言語
BASICに毛が生えたような言語が量産されているにはわけがある。
初心者や非エンジニアには、GOTOを使ったプログラミングは
むしろ直観的にわかりやすく、それゆえに需要があるのだ。
「GOTO指向の時代遅れの言語」とか逝ってる時点で何もわかってない。
BASICは、本来の目的からするとよく考えられたよくできた言語だ。

2.アホすぎて突っ込む気も起きん。

3.
COBOLを日本語で書けるようにした拡張が(遠い目
ともあれ、日本語文法とRPNの相似性を利用する連鎖性言語で逝く限り
本質的に「MIND」や「なでしこ」を超えたものにはならん。

4.
突っ込む気もおきん。そういうことがやりたきゃCかC++か
FORTRANのライブラリをグルー言語から呼び出すだけだ。
0523デフォルトの名無しさん2015/02/05(木) 03:32:18.26ID:noCYh1Py
あ、あと4には「Allegro CommonLisp」という正面からの回答が存在した。
0524デフォルトの名無しさん2015/02/05(木) 09:27:07.74ID:CzTaxo8P
>【日本語プログラミング言語】

sunabaがある
0525デフォルトの名無しさん2015/02/05(木) 09:56:48.66ID:D6PSg6SP
プログラミングヲタばかりのスレということは分かった。
初心者からの質問もほとんど見かけないし、Swiftも所詮その程度の言語か。
0526デフォルトの名無しさん2015/02/05(木) 10:22:25.24ID:n7T33kxd
川上さんの口癖は蹂躙だった
0527デフォルトの名無しさん2015/02/05(木) 12:17:17.89ID:rNebBHCo
>>524
sunabaより、ひまわりとかなでしこじゃない?
長文読んでないから流れが分からんけど
0528デフォルトの名無しさん2015/02/05(木) 13:08:33.62ID:tTiGllE2
>>525
はいはその程度でちゅねー
僕ちゃん高度で凄いでちゅねー
0529デフォルトの名無しさん2015/02/05(木) 14:35:30.93ID:DzyEGthw
>>525
お前が話題を振ればええねん
俺の必要な話題が無いって文句だけ言うのは馬鹿でもできるんやで。知らないと思うけど
0530デフォルトの名無しさん2015/02/06(金) 14:06:16.67ID:PC2fA5p5
話題振るって、>>529 長文書いた人でしょ。
あんなの読む奴は偉いよ。
0531デフォルトの名無しさん2015/02/06(金) 14:08:00.52ID:PC2fA5p5
すまん、アンカーの位置がおかしい。
0532デフォルトの名無しさん2015/02/06(金) 14:13:31.39ID:dDkKgFLY
いや>>525があの長文を書いた本人なのかを確認する意味も含めて
違う人だったら>>529のまんま。本人だったらより病んでいるのが確定的になるというw
0533デフォルトの名無しさん2015/02/07(土) 16:35:45.70ID:M4CWIGul
すでに型A、型Bに特化したObjective-Cの配列クラスAArray、BArrayがある状態で、
それらを統一して、ジェネリクスで切り替えられるSwiftのクラスAOrBArrayを作っています。
ジェネリクスを使ったクラスで、ユーザーが指定した型がどちらの型なのかで処理をわけるにはどうすればよいですか?
また、型引数をAとBのみに絞るにはどうすればよいですか?
0534デフォルトの名無しさん2015/02/07(土) 23:44:05.89ID:c+ZmGznJ
>>533
Swiftのゴミみたいな型システムじゃ無理じゃねと思いきやいけたはw
https://gist.github.com/anonymous/961a2397def586732b50

と思いきやコンパイルは通るけど何故か落ちるw
Genericパラメータに依存した仮想関数をオーバーライドするとだめくさい
前も似たようなケースにハマったけど、いつの間にか治ってたんだよな。再発か?
0535デフォルトの名無しさん2015/02/08(日) 08:52:07.33ID:4luGWnJH
すいません
Generics使わずにオーバーロードすればいいだけだと気がつきました
ただNSObjectを継承するとオーバーロード出来ない場合がありますね。
0536デフォルトの名無しさん2015/02/08(日) 10:48:48.23ID:mCfZf7e3
オーバーロード?両方のアレイを持つってことかな
順序関係維持するの辛そう
0537デフォルトの名無しさん2015/02/08(日) 11:34:44.43ID:bpPdnmCT
Genericsの型で処理分岐すること自体できなくはないけどprotocolでクラスメソッド拡張しないといけないっぽいから正直面倒くさい

>>534
MyArrayクラス使ってねぇとかGenericsの型指定で()は無理やりじゃね?とかツッコミどころはあるけど
とりあえず
class LegacyStringArrayAdapter<X>: MyArrayView<String>
を
class LegacyStringArrayAdapter<String>: MyArrayView<String>
に書き換えてちょこちょこエラーなおしたら一応動いた
あと
class LegacyStringArrayAdapter<X>: MyArrayView<X>
にしてLegacyStringArrayAdapterの定義の中のStringをかたっぱしからXに書き直しても動いたから
たぶん親と子の型指定が同じじゃないとちゃんと動かないのかもしれない
これが本当に正しい挙動なのかはわからないけど
0538デフォルトの名無しさん2015/02/08(日) 11:58:48.71ID:mCfZf7e3
>>537
> たぶん親と子の型指定が同じじゃないとちゃんと動かないのかもしれない
まじか・・・よく見つけたな。仕様だとしたら謎い
ちなみに、型指定で<()>にしたのは、今のところGenericクラスを継承したクラスは
Genericにしないとコンパイルが通らないため。コードの意味上はLegacyStringArrayAdapterはGenericではない

> MyArrayクラス使ってねぇ
わかりづらくてすんません
let a = MyArray<String>()
とかすると、Stringに対応した実装のLegacyStringArrayAdapterが選択されるという仕組み
例えば、MyArraySpecializableをIntにextensionするとInt用に特化した実装が自動的に選択される
0539デフォルトの名無しさん2015/02/08(日) 12:30:20.97ID:mCfZf7e3
ちなににBoxで包むと落ちないので、コンパイラの吐き出す、関数呼び出し部分の引数を渡すコードがバグってる
X=String(struct)であることが認識できてなくて、オブジェクト(ポインタ)渡し相当のコードを吐き出してる予感
逆アセして確認したわけじゃないけど
https://gist.github.com/anonymous/93149ee64f06859a8506

Boxについて↓
https://github.com/robrix/Box
0540デフォルトの名無しさん2015/02/09(月) 14:26:24.60ID:9He/NoKx
これってWindowsとLinuxでもswiftをこんぱいるできるようになるってことですか?
英語読める人だれかおしえて
http://elementscompiler.com/elements/silver/
0541デフォルトの名無しさん2015/02/09(月) 14:41:29.22ID:jsF3Jw1x
コンパイルだけなら脳内でも可能
0542デフォルトの名無しさん2015/02/09(月) 15:39:57.87ID:/goebppZ
登録してベータ版ダウンロードしてVisualStudio2013から使ってみたよ
なんか色々できるようだけど多すぎて、、まだちょっとしか触ってないわ
デバッガ上で動かすことはできるみたいだ
0543デフォルトの名無しさん2015/02/09(月) 17:21:51.39ID:DA4QfEdE
SilverLightを思い出す名前っすなぁ
0544デフォルトの名無しさん2015/02/09(月) 17:53:09.20ID:KiC5zk90
プログラミングの勉強にはつかえるってことですか?
あとLinuxで使えるか誰か調査おねがいします!
0545デフォルトの名無しさん2015/02/10(火) 20:31:16.85ID:+UMX5X1T
Apple、「Swift 1.2」を収録した「Xcode 6.3」のベータ版をリリース、インクリメンタルビルドに対応
http://codezine.jp/article/detail/8478

ぽまえら試したこれ?俺はこれから試すゾ〜
0546デフォルトの名無しさん2015/02/10(火) 20:51:36.91ID:DWVi8Vxe
>>262
これ 1.2 で修正されてるぞ〜!
0547デフォルトの名無しさん2015/02/10(火) 21:53:31.00ID:+UMX5X1T
早速大量のコンパイルエラーだ☆しかもXcodeおちた
0548デフォルトの名無しさん2015/02/11(水) 09:37:27.10ID:Ec3VgUAW
Swiftを始めたばかりの初心者ですが質問させてください
buttonなどのオブジェクトを配置する際に、入門的なサイトではすべてstoryboardを使っていますが、storyboardにドラッグ&ドロップではなく、ソースに記述することでオブジェクトを生成することはできないのでしょうか
0549デフォルトの名無しさん2015/02/11(水) 10:45:51.94ID:VhSL7DnI
できなきゃ困るでしょ
0550デフォルトの名無しさん2015/02/11(水) 11:16:59.22ID:uxm1HOmW
普通に let button = UIButton()
してbuttonにいろいろ設定して
ViewのaddsubViewで貼り付ければいいよ、Obj-Cと同じ
0551デフォルトの名無しさん2015/02/11(水) 11:49:18.56ID:vZKqTYFN
やっと1.2でコンパイル通った
private classだと何故かUITableViewDataSourceにconformできないとか謎
0552デフォルトの名無しさん2015/02/11(水) 12:29:29.07ID:l5Zb0fzm
謎、、、か?
0553デフォルトの名無しさん2015/02/11(水) 12:49:05.83ID:vZKqTYFN
ごめん、謎だわ。
private classでもメソッドに@objcを付けるとコンパイル通るようだ
0554デフォルトの名無しさん2015/02/11(水) 13:02:06.20ID:HsthihmY
(なし) or public: 公開扱い
private: コンパイルの最適化で見えなくなる
@objc private: Obj-cヘッダファイルのため公開扱い

分からいでもない
0555デフォルトの名無しさん2015/02/11(水) 15:33:31.57ID:HfcdMmVv
オブジェクトがプロトコルに適合しているかどうかの動的チェックってプロトコルに@objc属性つけないとできないの?
0556デフォルトの名無しさん2015/02/11(水) 15:51:13.91ID:UxWhxVTm
@objcが問題じゃなく最適化で Storyboardなり外から見えないんじゃねーの
0557デフォルトの名無しさん2015/02/11(水) 19:30:10.47ID:vZKqTYFN
そもそも仕様かどうかは不明。以前のSwiftでは不要だったので、最適化か何かで消えてしまって〜というのはありうる
あとprivate classでもobjcのプロコトルじゃなければ特に問題はなく、一貫性がないのでやはりバグっぽい。まあベータだし仕方ない
0558デフォルトの名無しさん2015/02/12(木) 09:43:49.84ID:tqHMaeHu
全然知識ないんだけど、スマホのアプリ作りたいならSwift学ぶべきですか?
0559デフォルトの名無しさん2015/02/12(木) 11:58:08.87ID:b3+8aAxm
objective-cを学ぶべき、マジで
0560デフォルトの名無しさん2015/02/12(木) 23:12:19.74ID:GwDWtg1R
文字列内に\()で変数おけるやん?
この中にdictionaryいれるにはどうすればいいの><
dicA.valueforkeypath("rootkey.\(dicB.objectforkey("key"))
みたいにしたいんです…
0561デフォルトの名無しさん2015/02/13(金) 03:36:32.63ID:buPT00S0
>>560
"key"を一旦変数に入れれば辞書の値は取得できる。
val k = "key"
"\(dicB[k])"
だけど、オプショナルなんでOptionalという文字列が付加される。
オプショナルについての条件判断を追加したほうがいいんじゃないの?
if let v = dicB["key"] {
取得した値vを使って文字列作成
}
0562デフォルトの名無しさん2015/02/13(金) 07:51:40.67ID:lUySCnaC
val k = "key\(dicB[k]!)"
ただし nil だと落ちる
0563デフォルトの名無しさん2015/02/13(金) 12:38:22.60ID:iKg98AzI
>>561,562
レスありがとです。
やっぱり一回変数に入れないとなんですね。
ちなみにオプショナルバインディングて、絶対に中身あるってわかってるものでも使っておいた方がいいんでしょうか?
例えばplistから配列作って使う場合みたいに中身が絶対nilじゃないケースで
0564デフォルトの名無しさん2015/02/13(金) 15:03:19.62ID:SEI7NHmi
絶対にnilじゃないとわかっているのにOptionalの皮を被ってるものを狼少年Optionalと呼ぶ(俺の中で)
0565デフォルトの名無しさん2015/02/14(土) 21:52:32.61ID:qQK3AVz3
ArrayやDictionaryが構造体ってことは、関数の引数でArrayやDictionary受け取って、
関数内でいじくっても関数を呼び出した側では反映されない?
いじくったArrayやDictionaryを返り値として返すか、
inoutにすればOK?
0566デフォルトの名無しさん2015/02/14(土) 22:57:54.44ID:yymPAXuR
>>565
array や dictionary はvalue type なので、関数の引数に指定した時はコピーされますよ。
0567デフォルトの名無しさん2015/02/15(日) 09:16:28.92ID:ZBOaPrrY
MVCにチャレンジしてるんだけどそもそもが理解できない・・・アホす
例えばModelで宣言してるクラスの変数を複数のVCから使う場合はそのインスタンスはAppDelegateに宣言して共有しちゃって問題ないですか?
それともprepareSegueでVC同士でインスタンスを都度渡すべき?
0568デフォルトの名無しさん2015/02/15(日) 09:18:22.40ID:OwkhoVMF
>>566
ですよね。
というか引数は定数だからそもそもいじれなかった。
varつけていじっても値型だから呼び出し側には変化無くて(中身のオブジェクトとかいじったら変わるけど)
配列や辞書受け取って、いじった配列や辞書返す関数をつくるには
変えた後の配列や値を返り値として返すか、inoutつけて参照するかになるわけだ
0569デフォルトの名無しさん2015/02/15(日) 11:02:14.80ID:oAveDeym
参照型に持たせて受け渡しするって手もある
0570デフォルトの名無しさん2015/02/15(日) 11:42:17.34ID:I+Ksv/GK
メモリ効率とか大丈夫なのかね。
0571デフォルトの名無しさん2015/02/15(日) 11:44:32.43ID:ZBOaPrrY
>>569
セグエでってことですよね?
グローバルな宣言よりそっちのがいいんですかね
0572デフォルトの名無しさん2015/02/15(日) 11:59:44.48ID:oAveDeym
>>571
ごめん>>569は>>568に向けてだった
0573デフォルトの名無しさん2015/02/15(日) 12:15:41.26ID:ZBOaPrrY
>>572
すみません勘違いしてしまいました汗
0574デフォルトの名無しさん2015/02/15(日) 13:04:44.05ID:Bd6vSIe4
>>567
それってModelをどこで確保しておくかってことじゃね?
たぶんこれという正解は無いので、個人的に作っているならどっちでもどこでもいいよw 仕事上では一部でしか参照しないのになんでもかんでもAppDelegateに入れんなよと思ったりするけど
0575デフォルトの名無しさん2015/02/15(日) 16:15:08.10ID:4GZ3t+xS
>>567
このiOSアプリのMac版作るぞ〜って時に
作り直しの部分が少なくできるように
なってればいいのではないか。
0576デフォルトの名無しさん2015/02/15(日) 18:26:35.75ID:6aDKSPw5
>>567
MVCの元祖の言語SmalltalkがもうMVCモデルすてちゃったよ
■ このスレッドは過去ログ倉庫に格納されています