トップページ⇒tech
1002コメント383KB

Swift part9 [無断転載禁止]©5ch.io

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん 転載ダメ©2ch.net (ワッチョイ 8b3c-/6Y/)2016/10/18(火) 11:34:44.16ID:oLo879ze0
WWDC2014で発表されたAppleの新言語Swiftについて語りましょう

関連スレ

プログラミング言語Swift 3
http://potato.2ch.net/test/read.cgi/mac/1408762479/

[SDK]iPhoneアプリ開発初心者質問箱47[touch][iPad]
http://potato.2ch.net/test/read.cgi/mac/1470902093/

Xcode part14
http://potato.2ch.net/test/read.cgi/mac/1476190499/

Swiftアンチスレ part1
http://echo.2ch.net/test/read.cgi/tech/1458491343/

前スレ
Swift part8
http://echo.2ch.net/test/read.cgi/tech/1463149806/
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
0611デフォルトの名無しさん (アウアウオー Sadf-WaXM)2017/01/24(火) 01:24:22.63ID:6XEtipUUa
なんでそんなことしたいのか知らんけど
くんな感じ?

for ch in "a".utf8.first!..<"z".utf8.first! {
print(Character(UnicodeScalar(ch & 0x5f)))
}

もっとスマートな書き方があるかも知らん
0612デフォルトの名無しさん (ワッチョイ bf8c-GzBV)2017/01/24(火) 01:33:52.81ID:7WmLdbGx0
>>610

let str = "abcdefghijklmnopqrstuvwxyz"

for c in str.characters{
print(c)
}

がんばれ
0613デフォルトの名無しさん (アウアウオー Sadf-WaXM)2017/01/24(火) 01:43:19.82ID:6XEtipUUa
>>612
それ文字列の中を順に表示してるだけじゃん
0614デフォルトの名無しさん (ワッチョイ bf8c-GzBV)2017/01/24(火) 01:56:29.31ID:7WmLdbGx0
>>612
これ何で大文字になんの?
0615デフォルトの名無しさん (ワッチョイ bf8c-GzBV)2017/01/24(火) 01:57:25.69ID:7WmLdbGx0
>>614
>>611の間違い
0616デフォルトの名無しさん (アウアウオー Sadf-WaXM)2017/01/24(火) 02:07:07.07ID:6XEtipUUa
それはAsciiコードがそうなってるから...
0617デフォルトの名無しさん (アウアウオー Sadf-WaXM)2017/01/24(火) 02:10:03.40ID:6XEtipUUa
大文字にするだけならこっちの方がいいか

for val in UnicodeScalar("a").value...UnicodeScalar("z").value
{
print(String(format: "%c", val).uppercased())
}
0618デフォルトの名無しさん (スッップ Sd1f-JNK/)2017/01/24(火) 02:22:36.10ID:kY6N+f51d
>>611
クッソ読みにくいな
さすがSwift()だわ
0619デフォルトの名無しさん (ワッチョイ c33c-ddg/)2017/01/24(火) 05:59:43.55ID:odFyaWZN0
>>616
何だ?Asciiコードって。

SUICAカード
電球の球
頭痛が痛い
地震が揺れた
0620デフォルトの名無しさん (ワッチョイ 9339-u5as)2017/01/24(火) 07:47:42.37ID:exkLo0yv0
ありがとう

>>611
ワイの求めていたものに近い

見てたら意味的には
>>617のがよさげ

別に小文字を大文字にしたいわけじゃなくて
文字コードを数値で扱いたく
かつ数値を文字にしたかった

例えば大量のテストデータを自動生成するとか
発想が Cなので、そういうやり方しか思いつかないんだけど
手段にたどりつけないで試行錯誤してます
0621デフォルトの名無しさん (ワッチョイ 9339-u5as)2017/01/24(火) 07:50:49.58ID:exkLo0yv0
>>612
それは思いついたけどスマートじゃないと思った

例えばその "a-z" の文字列を生成したい時にどうするかというのが気になった

Cなら例えば
atoz = malloc('z' - 'a' + 2);
p = atoz;
for(c = 'a'; c <= 'z'; c++) {
*p++ = c;
}
*p = 0
ってできるじゃん

それを "abc...z" って26文字ぐらいならベタで書けるけど
これを "aa"〜"zz"までとか量が増えて行ったら
ベタでは書けないなぁとか。

てかなんで for ch in 'a'...'z' って書けないんだよ
それぐらいやらせてくれよ
0622デフォルトの名無しさん (ササクッテロリ Sp87-/mpU)2017/01/24(火) 10:19:40.46ID:PbjuVM+3p
aからzが子文字のみの昇順で並ぶ保証がないから
万が一、将来AaBbC...yZzって並ぶ文字コードが世界標準になったら
'a'...'z'が書ける言語仕様にしてたらどうすればいいか分かんないじゃん

これは極端な例だけど、要はそういう不意の事象に耐える意識高い言語仕様にswiftはなってる
0623デフォルトの名無しさん (アウアウオー Sadf-WaXM)2017/01/24(火) 10:32:22.93ID:8WMehL2Va
いやもう文字コード決まってんじゃんw
今更文字コード変えられたら、どっちみちコンパイルし直しになるし
どんだけ既存のプログラムに影響出るんだよw
0624デフォルトの名無しさん (ワッチョイ ff4c-Taza)2017/01/24(火) 10:52:16.06ID:bcJOEpSP0
ASCII知らないのか
0625デフォルトの名無しさん (ワッチョイ c33c-3qL8)2017/01/24(火) 11:01:02.71ID:HBr+KooL0
>>620
>文字コードを数値で扱いたく かつ数値を文字にしたかった
一応部品化すれば本処理部分は多少は見やすく・・・

func irange(_ a:UnicodeScalar, _ b:UnicodeScalar) -> CountableClosedRange<UInt32> {
  return a.value...b.value
}
func nchr(_ a:UInt32) -> UnicodeScalar {
  return UnicodeScalar(a) ?? "?"
}

for i in irange("a", "z") {
  print(nchr(i & 0x5F))
}
0626デフォルトの名無しさん (ササクッテロリ Sp87-/mpU)2017/01/24(火) 11:16:48.70ID:PbjuVM+3p
ソースファイルの文字コードとランタイム内の文字コードは別に考えろよ
ソースファイルの話ならjavac -encodingみたいに対応すればいい
ランタイム内はそれが変動出来るようにString.utf8やUnicodeScalarがある

ソースファイルの文字コードに影響されるってC言語かよw
0627デフォルトの名無しさん (ワッチョイ 335b-wAZW)2017/01/24(火) 12:08:53.72ID:gy8Md2CU0
文字列は魔境
0628デフォルトの名無しさん (アウアウオー Sadf-WaXM)2017/01/24(火) 12:14:47.00ID:8WMehL2Va
ソースファイルにしろランタイムにしろいきなり文字コード体系が変わってもらっちゃ
どんな言語だって困るだろ
文字コードの大小に依存してるコードなんてごまんとあるぞ
0629デフォルトの名無しさん (ワッチョイ c33c-M+yL)2017/01/24(火) 17:34:40.36ID:+WwPKdrl0
日本語が不自由だとか勘弁してくれよ。
https://kotobank.jp/word/%E3%81%A8%E3%81%8B-582055#E3.83.87.E3.82.B8.E3.82.BF.E3.83.AB.E5.A4.A7.E8.BE.9E.E6.B3.89
0630デフォルトの名無しさん (ワッチョイ 9339-u5as)2017/01/24(火) 19:57:41.91ID:exkLo0yv0
>>625
イイね

ただ大文字化したいというよりは
こういった基本的な処理を身に着けたい

今まで Cや Perlでやってたことが
swiftでもできたらなぁって感じ
できないと俺の寿命がストレスでマッハ
0631デフォルトの名無しさん (スッップ Sd1f-JNK/)2017/01/24(火) 21:29:28.75ID:6Rgy6vgTd
最近の言語だとPythonは読みやすくて覚えやすくていい文法してると思う
0632デフォルトの名無しさん (アウアウウー Sa67-WaXM)2017/01/24(火) 21:47:34.41ID:KTC1YGyNa
Pythonが最近の言語なわけないだろ
0633デフォルトの名無しさん (ワッチョイ a3d4-hfv1)2017/01/24(火) 22:31:37.74ID:GRF78Bhf0
Pythonは3で死んだ
0634デフォルトの名無しさん (ワッチョイ cf42-3qL8)2017/01/24(火) 22:35:46.17ID:L2GKKZjf0
死んだの?
0635デフォルトの名無しさん (ワッチョイ a3d4-hfv1)2017/01/24(火) 22:50:13.02ID:GRF78Bhf0
俺が死んだ
0636デフォルトの名無しさん (ワッチョイ ffc9-NwiU)2017/01/24(火) 23:30:23.92ID:Khh2743H0
UnicodeScalarを拡張してしまえばいいのでは

extension UnicodeScalar : Strideable {
  public func advanced(by n: Int) -> UnicodeScalar {
    return UnicodeScalar(self.value.advanced(by: n))!
  }
  public func distance(to other: UnicodeScalar) -> Int {
    return other.value.distance(to: self.value)
  }
}

extension UnicodeScalar : BitwiseOperations {
  public static var allZeros: UnicodeScalar = UnicodeScalar(UInt32.allZeros)!

  public static func &(lhs: UnicodeScalar, rhs: UnicodeScalar) -> UnicodeScalar {
    return UnicodeScalar(lhs.value & rhs.value)!
  }
  public static func ^(lhs: UnicodeScalar, rhs: UnicodeScalar) -> UnicodeScalar {
    return UnicodeScalar(lhs.value ^ rhs.value)!
  }
  public static func |(lhs: UnicodeScalar, rhs: UnicodeScalar) -> UnicodeScalar {
    return UnicodeScalar(lhs.value | rhs.value)!
  }
  public static prefix func ~(rhs: UnicodeScalar) -> UnicodeScalar {
    return UnicodeScalar(~rhs.value)!
  }
}

for c in UnicodeScalar("a")...UnicodeScalar("z") {
  print(c & UnicodeScalar(0x5f)!)
}
0637デフォルトの名無しさん (アウアウウー Sa67-WaXM)2017/01/25(水) 08:50:03.50ID:WD3nSRWWa
うっわめんどくせ
もうC言語でいいわ
0638デフォルトの名無しさん (エムゾネ FF1f-JNK/)2017/01/25(水) 09:06:42.63ID:Xv7wslg5F
>>637
基本読みにくいんだよなSwift
0639デフォルトの名無しさん (ワッチョイ c33c-3qL8)2017/01/25(水) 10:23:43.05ID:2+5m68360
>>636
結局リテラルがアレなんだよな
型指定しないとStringになるから俺はStrideable断念して引数使ったけど

シングルクォートのリテラルを言語仕様に入れなかった理由がよく分からない
0640デフォルトの名無しさん (ササクッテロリ Sp87-/mpU)2017/01/25(水) 10:39:46.63ID:+ZiK5CtYp
シングルクォート = UnicodeScalar で言語仕様切るとUnicodeに引っ張られるからでは
古い言語にならってASCIIを想像する人もいれば、今時ならUTF8だと想像する人もいるだろうし、フレームワークに合わせてUnicodeと言う人もいる
落とし所のない不毛な議論が目に見えるから、検討したけど削除した仕様な気がする
0641デフォルトの名無しさん (ワッチョイ c33c-3qL8)2017/01/25(水) 11:04:36.57ID:2+5m68360
でもStringとUnicodeScalarの間にCharacterが入ってるあたりは
既にUnicodeに盛大に引っ張られてる気もする

let c = Character("あ" + "゚")

まぁ何らかの検討はあったんだろうけど・・・
0642デフォルトの名無しさん (ワッチョイ 734c-JNK/)2017/01/25(水) 20:41:52.96ID:RfIl6u1t0
Swiftって確かに字数は少ないかもしれないが読みやすいかっていうと…
0643デフォルトの名無しさん (アウアウウー Sa67-WaXM)2017/01/25(水) 20:56:49.37ID:xQi6cekNa
じゃあ読みやすい言語ってどれだよ
0644デフォルトの名無しさん (スプッッ Sd1f-CBoF)2017/01/25(水) 21:09:38.61ID:d9MKwq+md
cobol
0645デフォルトの名無しさん (ワッチョイ 1342-3qL8)2017/01/25(水) 22:58:32.84ID:CYUx5EoW0
Java
Java
Java
Java
Java
0646デフォルトの名無しさん (ワッチョイ 1342-3qL8)2017/01/25(水) 23:07:52.05ID:CYUx5EoW0
とおもったけどC#
0647デフォルトの名無しさん (ワッチョイ 1342-3qL8)2017/01/25(水) 23:12:20.50ID:CYUx5EoW0
>>642
Swift字数おおくないか
ライブラリの名前がいちいち長ったらしいし
関数に引数の名前2つがデフォとかげんなりするし
try!に至ってはもう
0648デフォルトの名無しさん (ワッチョイ 0f4c-2P18)2017/01/26(木) 01:40:32.20ID:9A8WN5h/0
>>647
そ、そうね…
落ち着いて考えるとCで簡潔に書けることも長ったらしいし、それでいて読みにくい
Swiftって一体どこがいいんだろう…
0649デフォルトの名無しさん (ワッチョイ 2b10-Ve17)2017/01/26(木) 02:37:16.34ID:dAEo4WV40
引数名がない言語の方が見た目はシンプルだけど、特にtrue/falseだけのパラメータとかだと何してるかわかんないときがあって今となってはイラッとするな。
obj.doSomething(true, false, true)みたいなやつ
標準APIだとそういうのは良くないってわかってるのかあんまりないけど、誰かが適当に作ったライブラリだとそんなのがよく出てくる気がする
0650デフォルトの名無しさん (スッップ Sdca-2P18)2017/01/26(木) 03:07:53.57ID:26kSGCXVd
Swiftのラベル機能、アンダーバーってなんだよ
クソ過ぎやしないか?
Objective-Cのままでいいわまじで
0651デフォルトの名無しさん (ワッチョイ 833c-AZYz)2017/01/26(木) 07:35:18.87ID:8RDF259k0
トレーリングクロージャは良い点
それとクロージャ構文にプレフィックスが不要なところも
代わりにスコープブロックにdoが必要だけど2文字は許容範囲内
0652デフォルトの名無しさん (ワッチョイ 7e0d-Spol)2017/01/26(木) 08:13:25.19ID:O9H7zUJg0
>>641
Stringのメンバを見るとCharacterとUnicodeScalarは同列っぽいよ
どちらもUnicodeを内部エンコードに扱ってるからそれらはUnicode依存のフレームワークの様子だけど
同じ層にUTF8, UTF16もいるからいつかCharacterUTF8, UTF8Scalarみたいな構造体もできるかもなw
0653デフォルトの名無しさん (ワッチョイ 833c-AZYz)2017/01/26(木) 09:33:06.97ID:8RDF259k0
>>652
String.initに格差があってね
この差も疑問なんだけど

let ca:[Character] = ["a", "b", "c"]
let ua:[UnicodeScalar] = ["a", "b", "c"]

let cs = String(ca)
let us = String(ua) //これが出来ない

let us = String(ua.map(Character.init)) //これは出来る
0654デフォルトの名無しさん (アウアウウー Sa7f-4cPM)2017/01/26(木) 10:39:40.20ID:k8NBikxqa
Swiftに慣れるとSwift以外でのコーディングが煩わしくなるぞ
varとletの明確な使い分けも、それがない言語だと逆にモヤッとする
0655デフォルトの名無しさん (ワッチョイ 6ac9-P4zY)2017/01/26(木) 10:57:10.28ID:KCQLgRNZ0
Stringに関して言いたいことはメーリスで今のうちに言っとけよ
今ちょうどSwift4でStringどうするか議論の真っ最中だから
0656デフォルトの名無しさん (ササクッテロリ Sp13-vNtw)2017/01/26(木) 11:04:45.63ID:CKOy8ZWqp
4は破壊変更なしで、5の破壊変更混みで直すからまだ時間はあるなw
>>653もCharacterとUnicodeScalarをまとめた上位インターフェース作るだろ(適当
0657デフォルトの名無しさん (オイコラミネオ MM76-bF0B)2017/01/26(木) 11:10:44.87ID:NOZ2YrK+M
オプショナルバインディングの利点ってなんだろう?
言葉で説明するのは難しいですわ
nilチェックして強制アンラップでもいいだろって思われそう
どう思う?
0658デフォルトの名無しさん (オイコラミネオ MM76-bF0B)2017/01/26(木) 11:15:35.23ID:NOZ2YrK+M
と思っけど失敗のあるイニシャライザ使う時めっちゃ便利だわ
Appleのリファレンスは説得力あるわ
0659デフォルトの名無しさん (ワッチョイ 1b3c-R94c)2017/01/26(木) 23:16:58.81ID:ufLIfALs0
BB2C使って書き込みしてるけど、こういうブラウザアプリってどうやって作られてるの?
初心者だから全然想像できん
0660デフォルトの名無しさん (ササクッテロリ Sp13-vNtw)2017/01/27(金) 08:27:01.41ID:Zy0rRYCMp
>>659
定期乙
0661デフォルトの名無しさん (ワッチョイ 6f5b-ci5U)2017/01/27(金) 17:31:32.73ID:MVo+YM4y0
>>650
俺は重宝してるけど。

_ = someMethod()
0662デフォルトの名無しさん (ササクッテロリ Sp13-vNtw)2017/01/29(日) 13:24:08.53ID:MpcYD/kyp
let宣言しなくても変数_って使えたのか
いつ変わったんだ、便利じゃねーか
0663デフォルトの名無しさん (ワッチョイ 833c-T3y8)2017/01/29(日) 14:08:41.99ID:PyqVv5fH0
>>662
宣言じゃなくて、定義じゃね?
0664デフォルトの名無しさん (ワッチョイ 9733-4cPM)2017/01/29(日) 15:05:33.45ID:3Y3DXVvV0
アンダーバーってクソすぎやしないか
0665デフォルトの名無しさん (ササクッテロラ Sp13-4cPM)2017/01/29(日) 15:25:26.09ID:yL6xb8U5p
アンダーバーでいいと思います。
0666デフォルトの名無しさん (ワッチョイ 833c-T3y8)2017/01/29(日) 17:02:22.62ID:PyqVv5fH0
アンダスコア
0667デフォルトの名無しさん (スッップ Sdca-2P18)2017/01/29(日) 17:03:21.38ID:htBmfO4kd
アンダースコアや三点リーダー、クソ過ぎやしないか
0668デフォルトの名無しさん (アウアウウー Sa7f-4cPM)2017/01/29(日) 17:19:12.25ID:EnysbUOea
許容範囲だと思います。
0669デフォルトの名無しさん (ワッチョイ 9739-4eSF)2017/01/30(月) 07:33:20.34ID:qYAaUQoA0
_ の書き方はともかく

引数にラベルが必須でないというのは
可読性の確保という面で
選択肢として存在するのはアリだと思うな
0670デフォルトの名無しさん (ワッチョイ 2b8c-EfrK)2017/01/30(月) 08:01:35.96ID:Jmyw1tRr0
C APIをSwiftから叩くために選択肢どころか必須機能なんだよなぁ
ObjCみたいにC APIだけは別の表記するならいいけどさ
0671デフォルトの名無しさん (スップ Sdca-eBhG)2017/01/30(月) 09:17:47.99ID:djGawl3Pd
swiftいいよ書きやすいよ
最近の次世代言語は関数型ばかりだからswiftが最後の希望や
0672デフォルトの名無しさん (ワッチョイ 833c-AZYz)2017/01/30(月) 17:37:30.67ID:5ceKaohv0
ネタ
DictionaryのValueをOptionalにした場合の
削除とnil設定のオーバーロード区別
http://swiftlang.ng.bluemix.net/#/repl/588ef6a306f99d213b3a7f3a
0673デフォルトの名無しさん (ワッチョイ 833c-AZYz)2017/01/30(月) 20:30:32.06ID:5ceKaohv0
ついでに今更ながら>>498の対策
http://swiftlang.ng.bluemix.net/#/repl/588f20efcf58891f104c975c

どちらにも言えることだけど
意味的に異なるオーバーロードがあると厄介
0674デフォルトの名無しさん (ワッチョイ 9733-4cPM)2017/01/31(火) 08:04:31.17ID:TojTxigN0
詳解Swift 第2版と第3版ってやっぱ内容だいぶ違う?
仕様ころころしててイライラしてるんだけど
0675デフォルトの名無しさん (スプッッ Sd6a-eBhG)2017/01/31(火) 09:09:51.57ID:qlhVwcaGd
その程度でイライラするならswift向いてないよ
0676デフォルトの名無しさん (ササクッテロリ Sp13-vNtw)2017/01/31(火) 10:07:32.51ID:Wlpmu9Pop
だいぶ違うし、4版が出るならまた変わってるだろうなぁ
破壊変更がないとしてもだ

なんで詳細Swiftなんて買ったと言わざるをえない
Qiitaで直近の記事を漁った方がよほど有効だろうよ
0677デフォルトの名無しさん (ワッチョイ afc9-4cPM)2017/01/31(火) 10:44:07.96ID:IISx8Cj70
>>672
keySortedメソッドの引数
by:(Key,Key)->Bool

がよく判りません。
Key型を要素とするタプルを取ってBoolを返すclosure byって意味なんだと思いますが、Key型ってなんですか?
0678デフォルトの名無しさん (アウアウウー Sa7f-4cPM)2017/01/31(火) 10:57:03.39ID:13oBEuV5a
タプルってw
引数を2つとってBoolを返すクロージャだろ
0679デフォルトの名無しさん (オイコラミネオ MM76-bF0B)2017/01/31(火) 11:38:05.84ID:5xUQa1EZM
Keyはラベルです
0680デフォルトの名無しさん (ワッチョイ 833c-AZYz)2017/01/31(火) 12:46:54.40ID:E6Yo5vL90
>>677
ジェネリクスの型パラメータ名

http://swiftdoc.org/v3.0/type/Dictionary/
> struct Dictionary<Key : Hashable, Value>

extensionの中では元定義にある型パラメータ(Key, Value)や
Associated Types(Element, Indexなど)が使える

[Int:Int?] は Dictionary<Int,Int?> の糖衣構文
0681デフォルトの名無しさん (ワッチョイ afc9-4cPM)2017/01/31(火) 14:26:38.67ID:IISx8Cj70
>>680
納得です。
ジェネリクスの型パラメータなんですね!

それでも、こう書くとコンパイルできない。なんでだ?
func keySorted(by:(Key, Key)->Bool) -> [(Key,Value)] {a, b in
return self.sorted{by(a.key,b.key)}
0682デフォルトの名無しさん (ワッチョイ 833c-AZYz)2017/01/31(火) 14:49:05.08ID:E6Yo5vL90
>>681
1つ目の{は関数本体の始まり、2つ目の{がクロージャー

func keySorted(by:(Key, Key)->Bool) -> [(Key,Value)] {
  return self.sorted {a, b in
    by(a.key, b.key)
  }
}
0683デフォルトの名無しさん (ワッチョイ afc9-4cPM)2017/01/31(火) 15:12:54.62ID:IISx8Cj70
>>682
あんた!親切だなぁ。
0684デフォルトの名無しさん (ワッチョイ 1b3c-R94c)2017/01/31(火) 22:05:26.16ID:Jtcmcjs90
プログラミング初心者でiOSアプリ作ってるけど、オススメの学習サイトある?
ドットインストールは全部やってしまった
0685デフォルトの名無しさん (アウアウウー Sa7f-4cPM)2017/01/31(火) 22:25:58.19ID:cYDluZxDa
オススメは、raywenderlich.com やろなぁ
英語だけど
0686デフォルトの名無しさん (ワッチョイ 7fa1-+rHU)2017/01/31(火) 22:39:58.93ID:BjflOzhk0
>>684
それより何作ったらいいかな?
0687デフォルトの名無しさん (ワッチョイ 7eba-eBhG)2017/01/31(火) 22:59:56.23ID:rB3HMGuL0
初心者ならappleの公式ドキュメントでしばらく困らなくね?
0688デフォルトの名無しさん (ワッチョイ afc9-4cPM)2017/02/01(水) 10:21:51.18ID:P9C8z9K60
>>687
しばらくどころか、公式ドキュメントはズゥートお世話になります。
何言ってるか?チンプンカンプンなところもあるけど。
UITableViewの2つのメソッドの使い方がよく判らん。

dequeueReusableCell, register
0689デフォルトの名無しさん (ワッチョイ afc9-4cPM)2017/02/01(水) 10:38:50.47ID:P9C8z9K60
>>684
日本語、独学だけでiOSアプリを自在に作れる様にはなれない。

英文でしか、入手できない情報が多いから。

英語で情報取れるなら、独学でOK!
これが現実。
0690デフォルトの名無しさん (ワッチョイ aade-EfrK)2017/02/01(水) 11:44:08.43ID:nI3xSAO90
[SDK]iPhoneアプリ開発初心者質問箱47[touch][iPad]
http://potato.2ch.net/test/read.cgi/mac/1470902093/
0691デフォルトの名無しさん (スプッッ Sd6a-T3y8)2017/02/01(水) 12:10:48.46ID:rrXFdmRqd
>>689
ちょっと違うんじゃないないかな。

Appleは、公式に日本語資料もリリースしているけれども、最終的には英語の資料を見るように書いてある。
それに、帰結すると思う。

よって
> 英文でしか、入手できない情報が多いから。
では無くて、英文で入手しなくてはならない。

> 英語で情報取れるなら、独学でOK!
これが現実。
まーこれは、正解。
その通りだね。
0692デフォルトの名無しさん (オイコラミネオ MM76-bF0B)2017/02/01(水) 12:12:02.48ID:smtLVi82M
>>688
そのメソッドはね、セル自体を更新する時に使うよ
チェックマークをつけたり、外したり
0693デフォルトの名無しさん (ワッチョイ 13b6-UFRj)2017/02/03(金) 09:03:28.41ID:QkHJCDQQ0
すみません。質問よろしいでしょうか。
今、macでテストアプリ作ってるんですが、
アプリ内のボタンを押したらキーボードでショートカットを入力した状態(画面切り替えの' ^← 'とか)にする方法はないでしょうか?
ご教授お願いいたします
0694デフォルトの名無しさん (ワッチョイ 7fc9-vqxm)2017/02/03(金) 10:34:26.43ID:9keII8ru0
スレチ
0695デフォルトの名無しさん (スフッ Sd9f-4SR0)2017/02/03(金) 12:29:41.54ID:REH9prgEd
>>552
古い話にレスつけて悪いが

この場合のdelegateはiOS/macOSのライブラリの話なので
言語の教科書には出てこない
操作対象と処理を行う所を分けるしくみの概念的な名称
勉強したければiOS/macOSのプログラミングの資料を参照するとよい

protocolはSwiftの言語仕様なのでSwift言語の教科書で説明される
共通の名称で処理を受け付けることを保証するしくみ

OSのdelegateの多くはswiftではprotocolを使って実装されている
0696デフォルトの名無しさん (ワッチョイ 13c9-kDlj)2017/02/03(金) 12:54:13.39ID:OvWQoQse0
delegateってのは、まあ、いろんなコンテクストで出てくるから混乱するけど、
制御の逆転、っていう設計を実装する時にでてくるパターンとか、プロパティー変数だとかなんだよねぇ。

だから、言語の教科書には出てこない。Design Patternの本には出てくるかも。
教科書に出てきていても良い様な気がするけど、そんな事を上手く説明できる
著者も少ない事もあって、和文では良い説明がされているのを見た事無いなぁ。

delegateがわからんと、Framework/Libraryの違いが理解できんからね。

まあ、ここの辺りが障壁になってるから、俺みたいなおっさんでも食っていける
わけだが!
0697デフォルトの名無しさん (アウアウウー Sa07-kDlj)2017/02/03(金) 13:07:30.01ID:QCj1HTOka
イベントドリブンになれたVBプログラマならなんとかなるやろ使うだけなら
設計する側になるとあれやろうけど
0698デフォルトの名無しさん (ワッチョイ 13b6-UFRj)2017/02/03(金) 14:12:12.30ID:QkHJCDQQ0
>>693
スレチみたいなので他のところ行ってきます
すみませんでした
0699デフォルトの名無しさん (ワッチョイ 7f3c-6sTg)2017/02/03(金) 15:29:58.35ID:p7fNNQ2Y0
>>695
詳解Objective-Cにはデリゲートの節があるよ
分かりにくいから役には立たないけどね
0700デフォルトの名無しさん (ワッチョイ 934e-2G09)2017/02/03(金) 15:59:32.48ID:GQ++c1010
delegate:委譲 delegater:委譲元 delegatee:委譲先

delegaterにdelegateeの参照を持たせてコールバックしてもらう
tableViewにviewControllerの参照を持たせてcellForRowを呼んでもらう
0701デフォルトの名無しさん (ワッチョイ 934e-2G09)2017/02/03(金) 16:02:25.45ID:GQ++c1010
間違い -> 委譲元:delegator
0702デフォルトの名無しさん (ワッチョイ 7f3c-6sTg)2017/02/03(金) 17:13:14.47ID:p7fNNQ2Y0
細かいけど委譲はdelegation
delegateって言葉は基本的に委譲先のオブジェクトを指す言葉として使われてると思うよ
delegate == delegate object == delegatee
https://developer.apple.com/library/prerelease/content/documentation/General/Conceptual/DevPedia-CocoaCore/Delegation.html
0703デフォルトの名無しさん (スフッ Sd9f-4SR0)2017/02/03(金) 19:50:02.27ID:REH9prgEd
最初のうちって
言語の話と、OSやライブラリの仕組みの話と、開発ツールの話が
違うってことに気付かないんだよね

でもこれに気づけないと、正しい教科書にすらたどり着けない
意外と大きな落とし穴
0704デフォルトの名無しさん (ワッチョイ 135b-C9DF)2017/02/03(金) 20:01:45.15ID:j/Uvz34o0
>>703
自分が何を知りたいのか?が判るまで、結構時間かかる人多いね。
0705デフォルトの名無しさん (アウアウウー Sa07-kDlj)2017/02/03(金) 20:55:42.27ID:MnLqnHc9a
 
  以上。
0706デフォルトの名無しさん (スフッ Sd9f-4SR0)2017/02/04(土) 15:18:45.31ID:EO0q2wxld
>>693さんは無事に目的のスレにたどり着いたかな?

自動化に主眼があるならAutomatorかAppleScript

テストに主眼があるならXCTestのUITest

あたりなんだろうけど、残念ながら詳しくは無い
0707デフォルトの名無しさん (ワッチョイ 3fb6-UFRj)2017/02/04(土) 21:20:56.34ID:hsGpXHdO0
>>706
おおお!ありがとうございます!
applescriptをswiftで呼び出したらいいのかな?
やってみます!
0708デフォルトの名無しさん (ワッチョイ 3fb6-UFRj)2017/02/04(土) 21:54:16.56ID:hsGpXHdO0
>>706
できました!
本当にありがとうございます!
0709デフォルトの名無しさん (ワッチョイ b333-tZqJ)2017/02/04(土) 21:55:53.65ID:TiE86E8B0
Swiftおつ
0710デフォルトの名無しさん (ワッチョイ 7f3c-6sTg)2017/02/04(土) 22:36:30.18ID:2gkSNY4M0
AppleScriptに比べると面倒くさいけど直接キーボードイベントを発火させる方法もあるよ

//Cmd+Tabキーの例
let tab_down = CGEvent(keyboardEventSource: nil, virtualKey: 0x30, keyDown: true)
let tab_up = CGEvent(keyboardEventSource: nil, virtualKey: 0x30, keyDown: false)
tab_down?.flags = CGEventFlags.maskCommand
tab_up?.flags = CGEventFlags.maskCommand
tab_down?.post(tap: CGEventTapLocation.cghidEventTap)
tab_up?.post(tap: CGEventTapLocation.cghidEventTap)
■ このスレッドは過去ログ倉庫に格納されています