Swiftで遊ぼう! on Hatena

あしたさぬきblogでやってた初心者オヤジのiOSプログラミング奮闘記がHatenaに来ました

Swiftで遊ぼう! - 988 - About App Development with UIKit

さあドキュメントを読むことから再開しています。UIKitを使ったアプリケーション開発の基本はMVCモデル!

About App Development with UIKit | Apple Developer Documentation

MVCモデルの基本しか理解していなかったので、ここでもう少し深い内容が学べました。UIKitではModelオブジェクトとしてUIDocumentが用意されています。知らなかったんですが、名前が示すようにModelオブジェクトのデータを扱うのでだと思います。でもロジックパートは独自に実装する必要がありますね。このUIDocumentを使うのであればControllerオブジェクトとしてApplication Delegateを介してViewControllerで制御するのが一般的です。この扱いはModelオブジェクトにCoreDataを扱うときと同じですね。

Viewオブジェクトは最上位にUIWindowがありますが、Application Delegateから意識しないで扱うようになっています。一つ重要なオブジェクトがあります。アプリケーションのイベントループをコントロールするUIApplicationオブジェクトです。これはアプリのライフサイクルを制御するのですがControllerオブジェクトでシステムが制御している部分です。

このライフサイクルの復習は明日します。

Swiftで遊ぼう! - 987 - 復活を宣言!

「Swiftで遊ぼう!」読者の皆さん、お久しぶりです。

万年プログラミング初心者親父がはてなに戻って参りました(^_^;) ブログの中断に併せて勉強も中断してました。約2年間は毎日できる限りSwiftプログラミングに触れていたんですが、ここ数ヶ月は完全に離れてしまったのでオリジナルアプリ開発の目的が遠ざかったような気がします(T_T)

OOPの概念を理解できたんで後はAPIの利用とオリジナルアプリのアイディアを実体化するところだったのですが... 現役を離れると知識の後退も速いですね(^_^;)

Swift 4が公開され、また言語的なブラシュアップが必要になりました。

それでもAppleが用意しているドキュメントもかなり豊富になっているのでドキュメント・ライブラリを読み返すところから始めます。

まずはフレームワークの1つ「UIKit」のドキュメントから読みます。

Important
Use UIKit classes only from your app’s main thread or main dispatch queue, unless otherwise indicated. This restriction particularly applies to classes derived from UIResponder or that involve manipulating your app’s user interface in any way.

UIKit | Apple Developer Documentation

という記述も理解できます。まあ完全初心者から脱却はできてるようです。

ちょっとずつ毎日ブラシュアップ開始です。

Swiftで遊ぼう! - 986 - WWDC 2017 デザイン

WWDC2017のビデオを見ています。

オリジナルアプリも作っているのでアプリケーションのデザインに関するビデオも見ました。

developer.apple.com

developer.apple.com

developer.apple.com

とりあえずデザイン関係3本見ましたが,面白いですね。

今日はこれだけ。

Swiftで遊ぼう! - 986 - Swift 4からJSONの扱いが超簡単!

WWDC2017のセッションビデオは面白いです!Xcode 9βをダウンロードして遊んでいます。もうXcode 8に戻る気持ちが無くなっています...

Foundation周りでKeyPathとJSONの扱いに大きな変更があります。

developer.apple.com

KeyPathも扱い易くなったので、既存のKVOでもで試してみたくてもまだ実装されていない機能がありチュートリアルを変更できません。

ということでJSONチュートリアルを変更しました。自動化がかなり進んでいるので、Swift 3向けのチュートリアルからコードがかなり抜けてシンプルになりました。初心者にも分かりやすい変更で嬉しいですね。

次のチュートリアルをSwift 4向けに変更しました。

yataiblue.hatenablog.com

Swiftで遊ぼう! - 985 - Swift 4から「private」の扱いが少し緩くなりました。

WWDC 2017のビデオ見てます。

Swift 4向けに自分の記事を少し変更しました。

アクセスコントロールの内容をSwift 4に向けて改訂しました。

yataiblue.hatenablog.com

新しい開発環境を勉強するって楽しいですね。

では。

Swiftで遊ぼう! - 984 - Xcode 9のリファクタリング機能は超絶!

WWDC 2017が開催中です。オリジナルアプリを作っていたのですが完全にストップしてます。暇があれば新しい開発環境の説明を見ています。

Platforms State of the Union - WWDC 2017 - Videos - Apple Developer

リファクタリング」って言葉も知らなかったです(^_^;) Xcode 8までの「ソースエディタ」が「ソースエディタ with リファクタリング」として超便利になりました!

「コマンドキー」を押しながらカーソルを動かすとコードブロックが明示的で分かりやすいし、プロトコールをクリックすれば、準拠すべき必須メソッドは自動的に組み込まれたり、コードブロックを自動的に外部メソッドに書き出せます。このときメソッド名は自動的に「extractedFunc」になりますが、強力な「リネーム・リファクタリング」機能があります。

このリネーム・リファクタリング機能は、初心者の味方ですね。適当につけたメソッドの名前を逃さず変更できるんです。この機能は超絶です!

私はもう今日からXcode 9のベータ版を使ってiOS 11向けの開発だけに集中します。当然Swift 4に変更です。

皆さん、もうSwift 3向けへの改訂作業を中止して Swift 4向けに変更です。しばらく画像は公開できないので古いイメージを使います。

Swiftで遊ぼう! - 983 - Arrayのメソッドjoined(separator:)

ちょっと気が緩むとブログの更新が途絶えてしまいそうです。毎日プログラミングに関して勉強、というか思考しているんですが、ブログに記録を残す作業が捗りません(T_T)

先日コメントして頂いたberrymuchさんにも返事ができていませんでしたm(_ _)m

少しずつ知識をつけています。皆さん、頑張りましょう... あれ頑張らなきゃいけないのは私か(^_^;)

// joined(separator:)

func joined<Separator>(separator: Separator) -> 
  JoinedSequence<Array<Element>> where Separator : Sequence, 
  Separator.Iterator.Element == Self.Iterator.Element.Iterator.Element 

こういうジェネリックな表現のメソッドの表現法にもだいぶ慣れました。このメソッドはArray型のSeparator(ジェネリック表現)がArrayで与えられます。つまり、Array型で与えられた場合、元(Self)のArrayのElementはArrayでないといけません。SeparatorのElementの型が、SelfのElement(Array)のElementの型と一致する条件のときだけ結合します。何のことやらよく分かりません。でも、例を挙げれば分かるでしょう。

let array = [[1, 2, 3], [23, 33, 45], [123, 456, 234]]
let joined = array.joined(separator: [0, 0])

// joined = [1, 2, 3, 0, 0, 23, 33, 45, 0, 0, 123, 456, 234]

こういうスタンダードライブラリを使えるようにならないといけませんね。

mapやreduceを説明したページに加えます。

yataiblue.hatenablog.com