Slide 5
Slide 5 text
Builderパターン
class SampleBuilderClass {
@IBOutlet var profileImageView: UIImageView?
@IBOutlet var nameLabel: UILabel?
!
typealias SampleBuilderClosure = (SampleBuilderClass) -> Void
init(buildClosure: SampleBuilderClosure) {
// 実際はInterface Builderで⽣生成
profileImageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 320, height: 40))
nameLabel = UILabel(frame: CGRect(x: 0, y: 40, width: 320, height: 40))
buildClosure(self)
}
}
!
let sampleBuilderClass = SampleBuilderClass(buildClosure: {(sampleBuilderInstance) -> Void in
sampleBuilderInstance.nameLabel?.text = "hato"
let url = NSURL.URLWithString("http://www.sekkisei.com/images/white_bb/img_main.png");
var err: NSError?;
var imageData :NSData = NSData.dataWithContentsOfURL(url,options: NSDataReadingOptions.DataReadingMappedIfSafe, error: &err);
sampleBuilderInstance.profileImageView?.image = UIImage(data:imageData)
})
!
sampleBuilderClass.nameLabel?.text
sampleBuilderClass.profileImageView?.image
.FNP
ΦϒδΣΫτͷੜΛநԽͯ͠؆ܿʹ͢ΔύλʔϯͩΑɻෳࡶͳΫϥεɺଟ͘ͷΠ
χγϟϥΠζύϥϝʔλʹ໘ͨ࣌͠ʹϏϧμʔΛݕ౼͢ΔΑɻΑ͘ϝιουνΣʔ
ϯͷλΠϓΛݟΔ͚ͲɺࠓճDMPTVSFͰɻ
DMPTVSFͷجຊܗ
{ (parameters) -> return type in
statements
}
closureの書き⽅方は⾊色々あるよ
closureの例
reversed = sorted(names, { (s1: String, s2: String) -> Bool in return s1 > s2 } )
型推論
SFWFSTFETPSUFE OBNFT
\T
TJOSFUVSOTT^
SFUVSOলུ
SFWFSTFETPSUFE OBNFT
\T
TJOTT^
γϣʔτϋϯυҾ໊
SFWFSTFETPSUFE OBNFT
\^
0QFSBUPSؔ
SFWFSTFETPSUFE OBNFT