プログラミング言語Swift Part4 [無断転載禁止]©2ch.net
じゃあ autoresizingMask だけで書いてみたら? CGRectの引数のoriginとは何でしょうか?
ドキュメント読んだり調べたりしたけれどはっきりとはわかりませんでした。
Creates a rectangle with the specified origin and size.
明記された原点とサイズを持つ長方形を作る
とは書いていますが、
この”原点(origin)”はその長方形”内”におけるアンカーポイントの位置のことでしょうか、
それともsuperview座標における長方形のアンカーポイントの位置のことでしょうか。
座標の系がわかんねえ
時間がある神が居たらご教示いただけたら幸いです。 >>212
CoreGraphicsでは左下、UIKitでは左上 >>213レスありがとうございます。
ただ、質問がうまくできてなかったみたいで、
聞きたかったことは、originがさすx,yはそのイメージの座標系におけるものでしょうか。
あるいは、viewの座標系におけるものでしょうか。
シミュレーターでoriginの値を色々変えてみましたが、いまいちピンと来ませんでした。 アンカーポイント(回転や拡大でのピン留め位置)はデフォルトでは中央とか
原点とアンカーポイントは別物
原点の位置は213で書いた通り
どこを0,0とするかはメソッド次第、大抵はsuperviewの原点を0,0としたもの
スクリーン原点を0,0とする場合もある
CGRectは単なる数値の入れ物 >>215,>>126
スッキリしました!
ありがとうございます
すごく助かります >>212, >>216です。
助言をいただけたおかげでとりあえずConwey's Game Of LifeをSwiftで
カタチにはできました。
https://qiita.com/TrapedInABottle/items/91635fd7eb3db6ae8a29
ただ、重い。
どこで非効率的な処理をしているか指摘していただける方はいねえがぁ。 >>218
大量描画を高速にするならMetalとかOpenGLとか使ってGPUに描かせないと。 同じ書き方してもMetalでCompute Shaderに置き換えるだけで速くなるよこの場合 どっかに差分分かりやすくまとめてくれないと追いつかない… >>225
ざっと読んだけどあんま変わってねーのな import Foundation
let dateFormatter = DateFormatter()
dateFormatter.dateStyle = .full
dateFormatter.locale = Locale(identifier: "ja_JP")
dateFormatter.calendar = Calendar(identifier: .japanese)
print(dateFormatter.string(from: Date(timeIntervalSinceNow: 60*60*24*30)))
令和まだか Result type@Swift5のuse caseが判らん。 丸2年Swift勉強してきたが(合間合間に)まだ1つもアプリリリースできてない。しかし不思議と飽きない、ところでSwift2の本があったのでそれ見てコード写して勉強してるがエラーだらけで …こんなのやるだけ無駄かな? これは意味なさそうやな…リリースする時は10個位まとめて出した方がええからとおもて時間かかるんよなぁ 先ずは何でもいいから一つ完成させろよ。
アレもコレもと手を出していると、いつまで経っても完成したものができないぞ。 丸二年勉強してて今時Swift2のテキストからコード拾ってるってちょっとどんな状態なのかイメージ出来ない。
もし英語にアレルギーなければ↓のサイトで最新バージョンで一通り勉強できるよ。無料だし
Hacking With Swift 100days of Swift
https://www.hackingwithswift.com/100 ほとんど書籍からしか勉強してなかったから そんな動画もいいね 基礎的な事から紹介されてる様だ
いまスマホだから帰ってから見るわ ありがとさん 動画は補助だね。
テキストがメイン。
効率的に記述できる技なんかも織り混ぜつつ、覚えた方が良いコードは敢えてリピートに入れずに徹底的に手で書かせてくれる。
そんな箇所を後で自分なりに書き直してみたりと、かなり美味しい。
よく考えられた教科書だよ。 アプリリリースって審査を通すがかなり大変じゃない?
大手のバグフィックスリリースも含めて、全体の通過率4割じゃなかったっけ?
そういったものを除いた新規のもののみだと通過率がかなり厳しそう。 >>234
ちょっとプログラムに興味あるけど
初学者とかでもこの人の動画大丈夫? >>238
お勧め。
動画は補助で、メインはテキスト。
全くの初学ならiBooksストアからダウンロードできる「Swiftによるアプリケーション開発:入門編」あたりをやっておくと良いかも。これ、残念ながら内容が少し古いんだけど、基本の部分は通用するし、レッスンがインタラクティブでわかりやすい。 >>239
ありがとうございます。ちょっとがんばってみます!
英語の人聞き取りやすいし1日1時間のコンセプトもすばらしい
その前に入門編みてみます 英語大丈夫なら、やはりiBooksストアからダウンロードできる「App Development With Swift」の方が内容は新しい。 >>227
なぜかPlaygroundだとダメなんだよな。
iOSアプリだったらシミュレータ、実機とも問題ない。 >>243
つXcode11(+macOS10.15) ほんとだ
PlaygroundでもmacOSだと
"令和元年7月7日 日曜日¥n"
で、iOSとtvOSだと
"平成31年7月7日 日曜日¥n"
だな
バグ報告しなされ つうか、シミュレーターのバージョンがiOS12だと平成
iOS13だと令和
これはXcode10でも11でも変わらない
playgroundはXcode10では平成
Xcode11では令和 11で治ってるならバグ報告要らんね
Bug Reporterがいつの間にかFeedback Assistantにリニューアルしてる SwiftUIはDateFormatterのロケールに未対応 バカみたいな質問だが、アプリ作る時で分からない無い時 公式のリファレンスで調べたりまたはプラグインを導入もやるのが普通なのかな?
自分は欲しい機能がありどう書けば分からなければ ググってコードをコピペして書いてるのだがこれはアホみたいな作り方で非効率なのかな? 見つけたコードを読んで理解できてるなら良いんじゃない? むしろリファレンスだけでコードを書くのはかなりの非効率
動いてる実績のあるコードをコピペしたほうが5倍ぐらい速い
どんなSDKでもサンプルコードがついてるのはそのため
ドキュメントにAPIのめちゃくちゃ細かい挙動まで記述するのは、書く側も読む側も負担が大きい
API一覧から初期化時に呼ぶべきメソッドを抽出するためには、極論全部のメソッドの解説を読まなくちゃいけなくなるし
ただ、>>250の言ってるように、コピペしてわからないところを放置しないというのは大事だと思う >>250
>見つけたコードを読んで理解
盗んだバイクで走り出すのメロディーで読める リファレンスもプロパティとメソッドの一覧とか引数となるクラスへのリンクくらいは整備してくれると有難いんだけどなぁ... Appleは英語圏以外のプログラマーを増やそうとは
思っていないのかな。
デベロッパー向けのリファレンスやメールなど
英文多いですよね。
例えば日本の子供達がSwiftを学ぼうと志しても
プログラミングよりも先に英語でつまずくと思う。 その為にiPadでplaygroundが用意されている プログラミング言語そのものからして、英語をある程度知らなきゃ、機能などが想像できなくてキツイよ。
若年層のコーディング教育は、まずは単純な動作のコード化から、手続き記述、組織化などを学ばせる方が良いと思う。そこではプログラミング言語なんて使わない。
日本人は大人でもこの辺りが弱い人が多い。 プログラミング言語を使わないってのはちょっと語弊が有るか...
導入は自然言語で行って徐々に語彙と文字を制限した環境に移行してルーチン基準を学ぶ辺りから専用の言語環境を用いる様にしていくイメージ。
日本語ベースで。
オブジェクト指向の言語をベースに日本語に置き換えて行けば叩き台は出来ると思う。 PC上で走らすもんじゃないから、リアルの「辞書」みたいなものを想定してる。
国語、というか純粋に「言語」教育。
日本の言語教育プログラムには、書式の理解や作成とか事象の分析的・客観的記述とそのデコードといったカテゴリが抜け落ちてる。
小学校から高校くらいまでのスパンでしっかり教育すべきなんだけど。
その辺りが身についていればVBAマクロくらいはもっと多くの人が記述できるようになるよ。 実務優先でDBやらせる。
iTunesとSwift(スクリプト)でプレイリスト作成とか Xcode10.3からXcode11.1へupdateした。
macOSはMojave10.14.6のままで。
SwiftUIを初めてさわってみた。
UIKitを置き換えるFrameworkだなんて知らんかった。
数年後にはimport UIKitすればdeprecatedって警告されるのか?
とりあえず、link compilation
https://github.com/Juanpe/About-SwiftUI >>264
>数年後にはimport UIKitすればdeprecatedって警告されるのか?
これマジこうなるからワロエナイ 今更ながらWWDC2019の動画みてる。
WWDC 2019 _ Full - Platforms state of the union.
これ、超重要かも! >>267
SwiftUIってUIKitと同時に使うもんだと思ってたけど、違った。
外付けのUSB-SSDへCatalinaをinstallしてXcode11をinstallしたほうが良さそうだ。
Xcode11@MojaveだとCanvasが動かん。 >>267
こっちか!
https://developer.apple.com/videos/play/wwdc2019/103/
Platforms State of the Union
WWDC 2019 Platforms State of the Union
こんなResourceがあるなんて知らんかった。 >>268
APFSでディスクに余裕があるなら別ボリュームにインストールする方法もある。 >>270
THX
USB-SSD接続してinstaller起動した。
今ココ
macOS Catalinaをインストールするには再起動… Catalina install memo
1. reboot回数: 5
2. 残り時間を計算回数: 3, 16min, 1min, 15min
3. 最初の再起動直前から、ようこそ画面出現までのの時間: 22min
外付けSSD, 960GB, 3分割(2:1:1)した最後の区画(APFS)へinstall
久しぶりに新規installしたけど、設定が大変。
マウス感度とか、IMEの設定とか。 ❶@Stateを利用するには、Model側(Observable側)の下ごしらえが必要で
1. Observable準拠が必要
struct Order: Observable {
var includeSalt: Bool
…
}
2. プロパティー宣言時に@State属性付与
@State private var order: Order
❷ViewModel側(Observer側)で値の変更通知を受け取るには$マークの付与をインスタンス変数にする
$order.includeSalt
って事か? >>272
CatalinaをinstallしてXcode11が動き始めたが、逆に動かないアプリを発見。
El media Playerで再生しようとしたswfファイル(TOEIC問題集)が動かない。
どうしよう?
外付けUSB-HDDにSierraをinstallしておくかぁ。
超、面倒だ。 >>276
Sierra install直後のDisk Usage: 20.31GB
createinstallmediaコマンドでUSB2 Pendriveにinstaller作成: 26min
reboot回数2回
install中残り時間15minと表示後、9.5minでrebootが掛かり、「ようこそ画面」が出現 やべ!
今更ながらWWDC2019 Keynote Speech見たけど、冒頭で感動しちまった。 なぜclassよりstructが速いのか?
なぜ、class UIButtonよりstruct Buttonが速いのか?
答え:
ある関数に値を渡す処理を記述する際、参照渡しは速いと教わる。値渡しはコピーに時間が掛かって時間を食うのだ。
しかし、関数内でその値に何度もアクセスする場合に、アクセスのたびに、参照先を見に行く処理が参照渡しには生じる。このため、参照渡しは遅くなる。
値渡しは、スタック内で処理が完了し、速い。
http://nex2t.blog.shinobi.jp/c言語/値渡しとポインタ渡しで実行速度比較-c言語-
だから、UIKitよりSwiftUIが速い。PlayGroundの用に、CanvasでLive Renderingできる。 >>279
Introducing SwiftUI: Building Your First App, 17m10sec around >>280
やっと見終わった。
Introducing SwiftUI: Building Your First App
Safariで再生すると途中で止まる。
Chromeで再生すると解像度が低いのでソースがボヤける。
RoomsアプリのソースはGithubにあるのかな? 順番からは次見るべきは
SwiftUI Essensials
けど、関心のある
Data Flow Through SwiftUI
を見ることにする。
Property Wrapperの@State, @ObjectBindingの使いかたとか、
Identicalプロトコルが知りたい。
Xcode起動して、Help, Developer Documentationとして検索してもヒットしないぞぉ? >>282
ObjectBinding、ってのは俺の勘違いで、
ObservedObjectってのが正解らしい。Developer Documentationでもヒットした。
しかし、Dash.appではヒットしない? >>283
と思ったら、ObservedObjectはDash.appでもヒット!
落ち着け、俺! >>282
Identicalではなく、Identifiable Protocolだった。
これは簡単。
struct User: Identifiable {
var id: UUID = UUID()
var firstName: String
var lastName: String
}
let a = User(firstName: "OK", lastName: "NG")
print(a.id)
おっと、これが、Terminal.AppだとStack dumpを吐くのに、XcodeのPlaygroundでは上手く動く。なんで? >>282
Data Flow Through SwiftUI
イタリア人の英語はワケワカメ
e.g.
Enviroment = エンバイロメンタ ただでさえSwift人口少ないのに、お前みたいなキモいのがいるとますます減るだろがバカ >>287
Data Flow Through SwiftUI
これ見終わった。
Data Flow Through SwiftUI
これ、冒頭見てつまんなかったので、
Combine in Practice
Combineの実際、Combine Frameworkってimport Combineするのか?
これ見てみる。 >>289
Combine in Practice
これ、ムズかった。
Promiseは非同期処理の最終結果。
Futureってなんだ?
debounceってのはハードウェア・スイッチのチャタリング防止装置をソフトウェアで実現したものって感じか?
@Published を付与すれば一撃でPublisherへ変身させる事ができるっぽい。
Promiseは良いとして、Future, Justって何だ?
ここに、解説があるっぽい。
https://dev.classmethod.jp/smartphone/swift-combine-framework-for-beginners/ >>290
>Combine in Practice
こいつをみる前に
Introducing Combine
これを見るべきだったかも。
Reactiveプログラミング系のオブジェクト生成用の属性には、2種類あるみたい。
1. 非Combine系(import Combine不要)
2. Combine系
後者には、
Publisher, Subscriber, Operator
が含まれる。
前者には、State, Environment, Bindingとかあるっぽい。 >>279
UIButtonがViewに対してButtonがCellになっている
ように感じるのだが。 >>279
参照渡しも値渡しも結局はメモリ上に構造体のようなものを置いているのなら、それの先頭アドレスから
何バイト先を見る、ってのが特定のメンバ変数を見るための実際の処理だろ。
それだけで考えたら、その領域がスタックだろうとヒープだろうとその速度に違いがあるとは思えないけどな。
違いがあるとすればキャッシュに載ってる可能性が高いかどうかぐらいじゃないの?
スタックのアクセスのほうが速いとする根拠は何? >>293
1. 参照渡しの場合に構造体メンバ変数へアクセスする場合:
構造体へのアドレス - > メンバ変数へのアドレス - > その値
2. 値渡しの場合に構造体メンバ変数へアクセスする場合:
メンバ変数へのアドレス - > その値 ViewControllerどこ行った?
override func viewDidLoad() は? iPhoneアプリ開発の人たちは、swiftに移行してる やっとtype(of:self)じゃなくてSelfが使えるようになった せんせい質問∩(´・ω・`)
初心者質問でごめんなさい。
本を2冊くらい読んで、基礎はなんとなくわかったのだけど。
もっとあれこれとサンプルコードを見たいんですが、検索してもいまいちわかりません。
どこか「ここだ、ここ」って場所はあるんでしょうか?