2ちゃんねる スマホ用 ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

let s: プログラミング言語? = Swift[2]

1 :名称未設定:2014/08/23(土) 09:55:25.03 ID:vQdcSMFci.net
Appleの新言語Swiftについて語りましょう

Apple Developer
ttps://developer.apple.com/swift/
Welcome to Swift
ttps://developer.apple.com/library/prerelease/ios/referencelibrary/GettingStarted/LandingPage/

書籍iBooks:
The Swift Programming Language
ttps://itunes.apple.com/jp/book/swift-programming-language/id881256329?mt=11
Using Swift with Cocoa and Objective-C
ttps://itunes.apple.com/jp/book/using-swift-cocoa-objective/id888894773?mt=11
書籍の形にはなってないけどドキュメント
The Swift Programming Language
ttps://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/index.html#//apple_ref/doc/uid/TP40014097
Using Swift with Cocoa and Objective-C
ttps://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/index.html#//apple_ref/doc/uid/TP40014097
Swift Standard Library Reference
ttps://developer.apple.com/library/prerelease/ios/documentation/General/Reference/SwiftStandardLibraryReference/

Swift Blog
ttps://developer.apple.com/swift/blog/
Resources (Xcode 6が無料でダウンロードできる)
ttps://developer.apple.com/swift/resources/

関連スレ
Swift part3
http://peace.2ch.net/test/read.cgi/tech/1406083608/

前スレ
プログラミング言語Swift
http://anago.2ch.net/test/read.cgi/mac/1401736921/

861 :名称未設定:2015/07/21(火) 21:30:26.83 ID:Pf7RPCtF0.net
そんなことは言ってない
Informal protocolみたいなズボラな方法よりSwiftに合ったもっといい方法があるし
ObjCでもObjC 2.0以降はほとんど使われなくなってる古い手法

Informal protocolはただのNSObjectのカテゴリだから、SwiftでもNSObjectのextension書けば同じこと
でもそんなことする意味はまったくない

862 :名称未設定:2015/07/22(水) 07:34:53.39 ID:bv8teojX0.net
>>858
推奨はされてないが使えるってことかな
objc の informal protocol = swift の optional protocol(@objc付与必須)でおk?

863 :名称未設定:2015/07/22(水) 08:14:14.62 ID:t/e2AFT+0.net
>>861
852です。
Swiftでinformal protocol準拠のクラスを定義するには、informal protocol
の実装部分はobjcで書いて、@objcコンパイル指令を使ってintormal protocol
をSwiftソースへ埋め込めば良い。

って解釈でOKでっしゃろか?

864 :名称未設定:2015/07/22(水) 08:26:30.22 ID:t/e2AFT+0.net
protocol Mochi {
func sayHello() -> String
}


class Piyo: Mochi {
func sayGoodby() -> String {
return "By, Piyopiyo"
}
}
上記をコンパイルすると、note: protocol requires function sayHello()
と言って怒られます。
@objcコンパイル指令を使えば、怒られずに済む訳ですよねぇ。

けど。。。@objcコンパイル指令なんて、使った事無いっす。

865 :名称未設定:2015/07/22(水) 10:40:07.81 ID:9Wr60tM+0.net
>>862,862
細かく言うと違う
@protocolは元々あったのねん。でも、全て実装必須
delegateのような実装してもいいし実装してもいくないのを実現する(他にも理由があるだろうが)のに、じゃ、@interface NSObject (Hoge)でインターフェースだけ定義してっていうのが、informal protocol
protocol に対して informal protocol だろう。protocolを使う時点でInformal protocol じゃないだろう

protocolにoptionalをつけたら、informal protocolと同じように(また、なんでもかんでもNSObjectになんて不細工で無く)、実現できたにすぎない

元々の
> CALayerDelegateをAPI Referenceで見ていて出てきたんだけど、informal protocol
も、CALayerDelegate が「まさしく」 informal protocol だからだよ。ヘッダー見てみ

866 :名称未設定:2015/07/22(水) 10:45:28.36 ID:9Wr60tM+0.net
>>863,863
optionalなprotocolを(@objc付きだろうが)Swiftだけで実装するには、
http://tea-leaves.jp/swift/content/プロトコル
らしいよ。ちたーググってみよう。「informal protocol」もたぶんあるよ

867 :名称未設定:2015/07/22(水) 11:07:46.33 ID:t/e2AFT+0.net
>>866
THX
できたぁー。

import Foundation
@objc protocol Mochi {
optional func sayHello() -> String
}


class Piyo: Mochi {
func sayGoodby() -> String {
return "Bye, Piyopiyo"
}
}
let a = Piyo()
print(a.sayGoodby())

コンパイラがrequires function sayHello()って言わなくなった。すごい。

868 :名称未設定:2015/07/22(水) 11:12:02.95 ID:t/e2AFT+0.net
866です
環境はXcode7 beta1 + Swift2.0っす。

869 :名称未設定:2015/07/22(水) 11:40:14.88 ID:MPVI/U/M0.net
結局ここに落ち着くわなw
長々講釈たれてたが@objcで強引にobj-c機能をswiftに持ってくるが正解

swiftが静的だからとか関係なく、気分悪いから使わない文法にしただけで互換のために使えなくもない
ただ、わざわざswiftでドロップしたロジックを使うのは好ましくはない

870 :名称未設定:2015/07/22(水) 16:48:23.11 ID:t/e2AFT+0.net
@で始まるヤツは、アトリビュートっていうのね。
#pragmaとかのコンパイル指令と同類なのかと勘違い
しちゃったわぁ。

総レス数 982
220 KB
新着レスの表示

掲示板に戻る 全部 前100 次100 最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★