Swift part13 (412レス)
1-

28: (ワッチョイ 0a7c-Qqtb) 2021/06/08(火)16:52 ID:SIkqpe8x0(1) AAS
やっとasync/awaitかよ
他の言語から何周遅れだ
29: (アウアウウー Sa11-3tT5) 2021/06/08(火)21:06 ID:zJ9nrfP2a(1) AAS
MS起源の構文を入れるのに反対する勢力がApple社内にいたんでしょ
30
(1): (ワッチョイ 335f-gyPn) 2021/06/13(日)06:48 ID:2BcHX0XT0(1/2) AAS
async awaitについて教えて下さい。
DispatchQueueでのsequencial queueと比較して理解しようとしています。
async付きで値を返すClosureブロック自体は、呼び出しスレッドとは別スレッドで動く。Closureの終了後に、awaitしているスレッド側で値を受け取る、という理解で合っていますでしょうか。

この場合、Closureを動かすスレッド自体がawaitなり処理中な場合、デッドロックになるのでしょうか。
31: (ワッチョイ ff01-NdOG) 2021/06/13(日)12:15 ID:kMWVg3vn0(1/2) AAS
>>30
let foo = await fn_async()

fn_asyncは呼び出し側と同じスレッドで実行されて
fn_asyncの中のawaitが来たらsuspendされてスレッドを明け渡す

resumeされた後は呼び出し側と同じスレッドで実行されるかもしれないし
違うスレッドで実行されるかもしれない
32: (ワッチョイ 335f-gyPn) 2021/06/13(日)15:25 ID:2BcHX0XT0(2/2) AAS
ありがとうございます。
c#5.0側の資料なども読んでみました。なんかNSRunLoopでの非同期処理に近い様な。
awaitが登場するまでは同期実行し、そこからスレッドプールへ投げるという事ですかね。
もう少し読み込んでみます。
33: (ワッチョイ ff01-NdOG) 2021/06/13(日)16:32 ID:kMWVg3vn0(2/2) AAS
これ見るといいと思う

Swift concurrency: Behind the scenes
外部リンク:developer.apple.com
34: (ワッチョイ 2301-plNJ) 2021/06/14(月)11:17 ID:dKj7zboM0(1) AAS
ボタン押したらバックグラウンドでインカメラを作動して動画が保存される機能付けたいけど難しい?
35: (ワッチョイ 2301-YknO) 2021/06/16(水)21:34 ID:NAAsM4eN0(1) AAS
swift ui以前に、swiftそのものを使ってる人が居ない
36: (ワッチョイ a32d-Cdqd) 2021/06/17(木)05:45 ID:rV77MlmA0(1) AAS
SwiftUIな
スペースはいらない
37
(3): (ワッチョイ 4f35-1a2e) 2021/06/28(月)11:33 ID:eks/qTPV0(1/4) AAS
struct DoubleGenerator: IteratorProtocol {
var cnt = 1
typealias Element = Int
mutating func next() -> Element? {
defer { cnt *= 2 }
return cnt <= 10 ? cnt : nil
}
}
struct Doubler: Sequence {
// typealias Element = Int?
typealias Iterator = DoubleGenerator

func makeIterator() -> Iterator {
return Iterator()
}
}
上記のコードはコンパイル出来るのですが、コメントを外すとダメです。

SequenceのAPI DocumentにはElement, Iterator requiredとあるのに何故でしょう?
38
(1): (ワッチョイ 4f35-1a2e) 2021/06/28(月)11:39 ID:eks/qTPV0(2/4) AAS
>>37
API Referenceには
Default implementations provided.
とあるのでconflictするのかな?

ちな、compile errorは、
error: 'Sequence' requires the types ‘Doubler.Element' (aka 'Optional<Int>')
and 'DoubleGenerator.Element' (aka 'Int') be equivalent
39: (ワッチョイ 4f35-1a2e) 2021/06/28(月)12:02 ID:eks/qTPV0(3/4) AAS
>>38
Default implementationの件はSequenceのmakeIterator()の事です。
40
(1): (ワッチョイ 3f01-0Hhk) 2021/06/28(月)12:30 ID:/8Q9yNC80(1) AAS
>>37
コメントアウトしてもOKなのは推論が効くから

SequenceのElementは↓なのでエラーメッセージにあるようにInt?じゃなくIntにする
associatedtype Element where Self.Element == Self.Iterator.Element
41: (ワッチョイ 4f35-1a2e) 2021/06/28(月)12:52 ID:eks/qTPV0(4/4) AAS
>>40
Great Thanks.

typealias Element = Int
とするとCompile errorが消えました。
また、この文が無くても良いのは型推論なのですね。
42
(1): (ワッチョイ 4f35-1a2e) 2021/06/29(火)07:37 ID:2raiHHQH0(1/4) AAS
>>37
func makeIterator() -> Iterator {
return Iterator()

この部分はdefault implementationがあるとAPI referenceにある。
Jump to Definitionでソースを見てみる!
43
(2): (ワッチョイ 4f35-1a2e) 2021/06/29(火)07:45 ID:2raiHHQH0(2/4) AAS
>>42
これか!
where Self == Self.Iterator
これはどう言う事でしょうか?

/// A default makeIterator() function for `IteratorProtocol` instances that
/// are declared to conform to `Sequence`
extension Sequence where Self == Self.Iterator {

/// Returns an iterator over the elements of this sequence.
@inlinable public func makeIterator() -> Self
}
44: (ワッチョイ 4f35-1a2e) 2021/06/29(火)07:50 ID:2raiHHQH0(3/4) AAS
>>43
Doubler == Doubler.Iterator
という意味なら、変なんですが!
45: (ワッチョイ 4f35-1a2e) 2021/06/29(火)08:11 ID:2raiHHQH0(4/4) AAS
>>43
この部分は実装では無く、別Sequenceの別シグネチャによる定義なのかな?

XcodeのJump to Definition機能ではdefault implementationを発見することは出来なかった。
46: (ワッチョイ 8f8c-eHmd) 2021/06/30(水)09:59 ID:xkSteTRI0(1) AAS
非同期処理でTwitterAPI通信を行なって(Twitterライブラリ Swifter使用)、あるユーザーの最新ツイート一件を(30秒くらいの間)取得し続け、そのユーザーがツイートを行いツイートが更新された瞬間 そのツイートを表示するという仕組みを作りたいのですが、
( 早い者勝ちシステムに勝つため)

ループ部分の良い案が思いつきません、アドバイスいただけませんでしょうか

以下がSwifterライブラリで用意されたのユーザーの最新ツイート一件を取得する関数です、ツイートの取得に成功するとsuccess 、APIエラー等で取得できない場合はfailureが帰ります

ループを行いsuccess時に取得したツイートが前回 取得時のテキストと異なっていたら そのテキストを返すという関数を作りたいので、もし可能でしたらアドバイスやコードをお願いしたいです。長々と申し訳ありません

swifter.getTimeline(for: .screenName("ターゲットのID"),count:1 , success: { json in
// 成功時の処理
print(json[0]["text"])

}, failure: { error in
// 失敗時の処理
print(error)
})
47: (ワッチョイ 7f35-k50j) 2021/07/04(日)15:02 ID:PTgpkIAJ0(1) AAS
Combineフレームワークを弄ってる。
自前のSubscriber, 例えばWeatherInfoを受け取るWeatherSubscriberクラスを実装しようとすると、大変なのだと気がついた。

UITableViewDelegateがtableViewメソッドの実装をたくさん求めるのと同様に、Subscriberはreceiveのシグネチャ違いのメソッドを3つも求めて来る。

e.g.
receive:_
receive:subscription
receive:completion
 
48
(1): (ワッチョイ 7f35-k50j) 2021/07/05(月)07:20 ID:bBZppKt50(1) AAS
MVVMって何だ?
とずっと思ってたがMVCにObserver/Observableなメカニズムを導入したものだと理解した。

SwiftUI使えば必然的にMVVMを採用せざるを得ないという、良記事がここに!
外部リンク:tech-blog.rakus.co.jp

RxSwift付属のPlaygroundを開くとマシンのLoadAverageが飛び上がりXcodeがカクカク動いて閉口していた2017年頃から、気になってたのだ。
49: (アウアウエー Sa82-28NW) 2021/07/05(月)08:29 ID:CIIXcSIba(1) AAS
アーキテクトの話に、あー聞いたことあるってなりたい
50: (スップ Sd4a-tKHk) 2021/07/06(火)17:09 ID:aMSJ7UkJd(1) AAS
>>48
階層モデルなんてwin95辺りにチヤホヤされた構造やん。
どんだけ出遅れ脳持ちの出来損ないなの?Ww
51: (ワッチョイ 758c-4x/S) 2021/07/09(金)14:43 ID:Bmeh7adm0(1/3) AAS
dispatch使って非同期の処理を並列化させて
1番早かった処理が1つ完了したら処理を止めるなんてできる?
52: (ワッチョイ 758c-4x/S) 2021/07/09(金)17:42 ID:Bmeh7adm0(2/3) AAS
非同期処理1: ----->キャンセル

非同期処理2: ----------->完了★ 一つが終わった時他を止めたい

非同期処理3: -->キャンセル
53: (ワッチョイ a301-knaX) 2021/07/09(金)18:03 ID:w0l6CXLG0(1) AAS
3つ全部にキャンセル投げる処理をそれぞれのCompletion Handlerに入れとけば?

最近は変わってるかもだけど昔はキャンセルが必要なやつはDispatchWorkItem使ってた
非同期処理側でキャンセルリクエストされたかどうかをチェックして自分で処理を抜ける必要はある
54: (ワッチョイ 758c-4x/S) 2021/07/09(金)22:10 ID:Bmeh7adm0(3/3) AAS
ありがとうございます。 ちょっとやってみます
55
(1): (ワッチョイ 4bda-jBUj) 2021/07/14(水)02:46 ID:Z9MQZom50(1/3) AAS
IAP詳しい人いたら教えて下さい。

1.自動更新のサブスクリプションを購入
2.アプリをアンインストール+再インストール
3.リストア(SKReceiptRefreshRequest)実行

サーバ側でレシート検証を行うと、
「1」で購入した時のレシートに含まれるInApp.TransactionIDが
「3」で更新されたレシートに含まれるInApp.TransactionIDが変わってしまってます。
PurchaseDateとかその他フィールドはすべて同じ。
TransactionIDだけ変わってしまってます(sandbox)。

これは仕様でしょうか?それともApple側の不具合?
56: (JP 0H43-/6+5) 2021/07/14(水)07:55 ID:wgyTk/upH(1) AAS
>>17
>かと言って、ドロイド開発しても売れねーしなwww
自作アプリはともかく、フリーランスだと単価爆上がり中だろ > ドロイド
57
(1): (ワッチョイ a301-knaX) 2021/07/14(水)08:19 ID:idSc395A0(1) AAS
>>55
仕様
外部リンク:developer.apple.com
1-
あと 355 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.020s