Swift」タグアーカイブ

みんなで Swift 復習会 GO! in 長野 – 7th′ with NSEG

GEEKLAB.NAGANO

このところ一気に春の暖かさが訪れて花粉症に負けそうな 2018年3月17日(土)東京(神奈川)から講師に熊谷友宏さんをお迎えして、NSEG(Nagano Software Engineer Group)主催で開催された『みんなで Swift 復習会 GO! in 長野 – 7th′ with NSEG』に参加させていただきました。

場所は長野県長野市にある”GEEKLAB.NAGANO”。株式会社日本システム技研さんが入居しているビルの一室、勉強会会場やコワーキングスペースとして開放されているお部屋で開催されました。長野県庁のはす向かい、長野市中心市街地に位置する便利な場所でした。

約10名の参加者のうち、Swiftプログラミングの経験者は私を含めて三人だけ。ということで、もう少し初心者寄りの内容になるかな?と思っていましたが、私が煽ってしまったのが悪いのか? 「参照型(class)と値型(struct)の違い」や「mutable, non-mutable(immutable)の違い」などSwiftの言語仕様の深いところのお話を聞くことができました。

また “Swift API Guideline” の解説もいただいてて、いままで気にもしていなかった関数名や引数ラベルの命名規則も勉強することができました。やはり、やっつけ仕事で「動けばいい」、「コンパイルが通ればいい」とコードを書いていてはいけませんね。 😀

続きを読む

Xcodeが参照しているSwiftの確認

Xcodeが参照しているSwiftのバージョンの確認

実行例

 

Xcodeが参照しているSwiftのパスの確認

実行例

Objective-CからSwiftのクラスが参照できない

課題

Objective-CからSwiftのクラスが参照できない。

Use of undeclared identifier 'xxx'

 

チェックポイント

ポイント 1

Objective-C(*.m, *.mm)において ProjectName-Swift.h をインポートしなければならない。

 

ポイント 2

Objective-Cから参照するSwiftで実装するクラスは NSObject の派生クラスでなければならない。

SwiftのSingletonパターン

宣言コード

参照コード

  • イニシャライザをprivate修飾してクラスの外部から参照できないようにする。
  • structを使うのは古いコーディングスタイル。代わりにstatic let構文を使う。
  • static func getSharedInstance() メソッドを使うのは、さらに古いコーディングスタイル。

Swiftの値型 最小値, 最大値

Swift 3

Custom Types

Swiftの型(Type)に定義したアクセス修飾子(Access Control Level)は、その型のメンバー(プロパティやメソッド、イニシャライザーなど)に影響する。
例えば、private修飾したclassのメンバーの暗黙的(デフォルト)アクセス制限はprivateである。

 

明示的publicクラス

注意

public typeはデフォルトでinternalのメンバーを持つ。publicではない。メンバーのアクセス制御をpublicにするときは、いかなるケースでも明示的にpublic修飾を記述する必要がある。

 

暗黙的internalクラス

型(クラス)のデフォルトアクセスコントロールはinternal。したがって、その型(クラス)のメンバーのデフォルトアクセス制御もinternalとなる。

 

明示的fileprivateクラス

明示的にクラスにfileprivateを指定しているため、そのクラスのメンバーのアクセス制御もデフォルトではfile-privateとなる。もちろん明示的にprivateを指定したメンバーはprivateになる。

 

明示的privateクラス


参照

Custom Types – The Swift Programming Language (Apple)

Result of call to ‘xxx’ is unused

Swift 3.0 (Xcode 8.1.2) において戻り値が未使用のときに警告が発生する

 

解決方法

使用しない(無視する)関数の戻り値はワイルドカード(_)に明示的に代入する。

Trailing Closures

引数の最後においたクロージャ式は特別な記法で記述できる。接尾クロージャ、後置クロージャ。

省略を一切しない一般的な記述方法

 

Closureの引数リストと戻り値を省略した記述方法

 

someFunctionThatTakesAClosureの引数をTrailing Closureに置き換えた記述方法

 

さらに空の括弧を省略した記述方法

続きを読む

var と let の違い

1. ECMAScript 2015 / ECMAScript 6 (ES6), [TypeScript]

1-1. var

関数スコープ
厳密には、function, module, namespace, or global scope

続きを読む