2016年03月22日

Swift: クラスの判定


Objective-Cでクラスを判定してなんらかの処理をする場合を、Swiftで実現するのはどうするのか。例えば、isKindOfClass: とか、isMemberOfClass: とかの処理。

「if ( [object isKindOfClass:[Root class]] )」は、そのオブジェクトが、Rootクラスのインスタンスかまたはそのサブクラスのいずれかのインスタンスであれば真になる。もし、判定後にそのクラスとしてなんらかの操作を行うのであれば、キャストして代入すればよい。「Sub1 *sub = (Sub1*)object;」のようにする。

一方、そのインスタンスそのものである時だけ真にしたい場合には、「isMemberOfClass:」を使う。
続きを読む
ラベル:クラス Swift
posted by 永遠製作所 at 12:12| 東京 ☀| Comment(0) | TrackBack(0) | Swift | このブログの読者になる | 更新情報をチェックする

2016年03月21日

Swift: クラス名を取得する


SwiftのクラスにはObjective-CのNSObjectにあったclassNameプロパティのようなものがないので、文字列でクラス名を取得するには工夫が必要。

Objective-Cのメソッドを使ってNSStringFromClass(String)のようにする。これを実行するにはFoundationをインポートする必要がある。
※Stringは構造体であってクラスではないが、Swiftでは構造体やクラスはタイプという上位概念で包含され様々な点で似た振る舞いをする。

ただし、独自に定義したクラスではランタイムモジュールを含めた修飾が定義したクラス名の前につくのでこれを削除する必要がある。結局、以下のようになる。

import Foundation

func className(type: AnyClass) -> String {
print("AnyClass : ", terminator:"" )
// print( NSStringFromClass(type) ) // "__lldb_expr_198.Root"
return NSStringFromClass(type).componentsSeparatedByString(".").last!
}

class Root { }
className( Root ) // "Root"


単にクラス名を出力するだけであればprint( Root.self )のようにしても"Root"という結果が得られるのだが、これはprintメソッドが内部でクラス名文字列を取り出す処理を行っているだけのようだ。文字列として取り出して使うことはできない。

インスタンスからそのクラス名を取り出すには、同様に出力だけならprint( Root() )でできる。が、ちゃんとするには先ほどのメソッドに Root().dynamicType を渡すとよい。

func className(o: AnyObject) -> String {
print("AnyObject : ", terminator:"" )
return className(o.dynamicType)
}

let root = Root()
className(root)

続きを読む
ラベル:Swift クラス
posted by 永遠製作所 at 01:16| 東京 ☀| Comment(0) | TrackBack(0) | Swift | このブログの読者になる | 更新情報をチェックする

2016年03月18日

Apple TV Tech Talks - 3 Focus-Driven Interface With UIKit

Focus-Driven Interface With UIKit
Apple TV Tech Talks - Session 3 - tvOS
44:39
https://developer.apple.com/videos/play/techtalks-apple-tv/3/

ようやく具体的な実装方法についてのセッション。

tvOS向けアプリケーションではユーザーインタフェースとしてフォーカス指向インタフェースを採用している。これについてはデザインに関するセッションでも紹介された。

このセッションではフォーカス指向インタフェースの基本的な考え方、それを実現するためのフレームワークやクラス、そしてその具体的な実装方法について述べる。後半では、サンプルコードを使って実際に動かして説明しているのでわかりやすい。さらにデバッグ方法としてXcodeなどが備えている機能についても実際にデモしながら説明している。

tvOSで始めて導入されたフォーカス指向インタフェースを使う全てのプログラマが視聴すべきセッション。

なお、使われたサンプルコードは下記からダウンロードできる。

UIKit Catalog for tvOS (Sample Code)
https://developer.apple.com/library/tvos/samplecode/UICatalogFortvOS/Introduction/Intro.html
Build Requirements: Xcode 7.1 and tvOS 9.0 SDK or later
Runtime Requirements: tvOS 9.0 or later
続きを読む
posted by 永遠製作所 at 08:58| 東京 ☀| Comment(0) | TrackBack(0) | WWDC | このブログの読者になる | 更新情報をチェックする

2016年03月10日

Apple TV Tech Talks - 2 Designing for Apple TV

Designing for Apple TV
Apple TV Tech Talks - Session 2 - tvOS
23:40

https://developer.apple.com/videos/play/techtalks-apple-tv/2/

Apple TVのアプリケーションを作成するときにデザイン上の注意点。
テレビのようなエンターテインメント性を重視して、パソコン上のアプリケーションのようなボタン等UI要素を使わない。また少し離れたところから明瞭性が重要。リモコンの操作性も考慮する。

そのために実際に操作画面の例を見せながら解説していてわかりやすい。細部についてはヒューマンインタフェースガイドラインで記述している。

続きを読む
posted by 永遠製作所 at 20:45| 東京 ☁| Comment(0) | TrackBack(0) | WWDC | このブログの読者になる | 更新情報をチェックする

2016年03月01日

Apple TV Tech Talks - 1 Kickoff

Kickoff
Apple TV Tech Talks - Session 1 - tvOS
23:03

Apple TVというプラットフォームの紹介と開発環境についての紹介。

高速インターネット接続が前提になっているという部分以外は特に開発者が事前に知っておくべき技術項目はないと思う。Apple TVとは何かということを事前に知らない場合には紹介として見るのがよいだろう。

https://developer.apple.com/videos/play/techtalks-apple-tv/1/

※スピーチ内容の書き起こしがあるのに気がついた。検索可能だからこのセッションビデオのかいつまんだ紹介のシリーズは不要かもしれない。自分が見たことをまとめる程度の意味はあるかと思うのでもうちょっと続ける。
続きを読む
ラベル:tvOS
posted by 永遠製作所 at 20:28| 東京 ☀| Comment(0) | TrackBack(0) | WWDC | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。