遍匈 / Swift / Swift縮殻 /

壓Swift嶄寡喘Cocoa譜柴庁塀

<貧匯准 和匯准>
聞喘 Cocoa 孖嗤議匯乂譜柴庁塀?頁逸廁蝕窟宀蝕窟匯錘啜嗤栽尖譜柴房揃、糧協議來嬬、措挫議辛制婢來哘喘議嗤丼圭隈岻匯。宸乂庁塀脅卆正噐壓 Objective-C 嶄協吶議窃。咀葎 Swift 嚥 Objective-C 議札喘來?侭參低卆隼辛參壓 Swift 旗鷹嶄聞喘宸乂譜柴庁塀。壓匯乂秤趨和?低封崛辛參聞喘 Swift 囂冱議蒙來制婢賜酒晒宸乂 Cocoa 譜柴庁塀?聞宸乂譜柴庁塀厚膿寄、厚叟噐聞喘。

溜熔?Delegation?

壓 Swift 才 Objective-C 嶄?溜熔宥械喇匯倖協吶住札圭隈才恆儉号袈議溜熔奉來議亅咏燕幣。嚥 Objective-C 屢曳?輝低壓 Swift 嶄写覚匯倖溜熔扮?埋隼写覚庁塀音延?徽頁坪何議糞孖厮将個延阻。祥崧壓 Objective-C 嶄?壓低?溜熔窟僕嶧連岻念?音砿万頁音頁 nil 低脅氏肇臥心?泌惚協吶議圭隈頁掲駅倬糞孖議圭隈?音砿溜熔嗤短嗤糞孖宸倖圭隈?低匆脅氏肇臥心。遇壓 Swift 嶄?宥狛隠隔窃侏芦畠議蒙來?辛參嗤丼議嶧茅宸乂訓末、音駅勣議佩葎諒籾。

和中双竃議旗鷹辛參傍苧宸倖狛殻?
  1. 殊臥 myDelegate 音葎 nil。
  2. 殊臥 myDelegate 頁倦糞孖阻写覚議 window:willUseFullScreenContentSize: 圭隈。
  3. 泌惚myDelegate 音葎 nil 旺拝糞孖阻 window:willUseFullScreenContentSize: 圭隈?椎担距喘乎圭隈?繍乎圭隈議卦指峙蛍塘公兆葎 fullScreenSize 議奉來。
  4. 繍乎圭隈議卦指峙補竃壓陣崙岬。
// @inteface MyObject : NSObject
// @property (nonatomic, weak) id<NSWindowDelegate> delegate;
// @end
if let fullScreenSize = myDelegate?.window?(myWindow, willUseFullScreenContentSize: mySize) {
 println(NSStringFromSize(fullScreenSize))
}
廣吭? 壓匯倖頼畠聞喘 Swift 園亟議 app 嶄?壓協吶 delegate 奉來扮?万恬葎匯倖音協峙議 NSWindowDelegate 斤嵆?旺繍兜兵峙譜葎 nil。

决岳兜兵晒?Lazy Initialization?

低辛參壓 Lazy Stored Properties 嶄阻盾欺厚謹購噐决岳兜兵晒議佚連。

危列烏御?Error Reporting?

Swift 嶄議危列烏御庁塀冽喘阻 Objective-C 議庁塀?徽 Swift 嶄音協峙卦指峙議仟蒙來公厘断揮栖阻駆翌議挫侃。訟倖載酒汽議箭徨?低喘 Bool 峙恬葎匯倖痕方議卦指峙?喘噐炎紛乎痕方頁倦峇佩撹孔?輝低俶勣補竃危列佚連扮?低辛參壓痕方嶄耶紗匯倖NSErrorPointer 窃侏議補竃歌方 NSError。宸倖窃侏窃貌 Objective-C 嶄議 NSError **?旺奐紗阻坪贋芦畠來才掲膿崙來議勧歌。低辛參聞喘 & 塰麻憲恬葎念弸哈喘匯倖音協峙 NSError 窃侏恬葎 NSErrorPointer 斤嵆勧弓危列佚連。泌和中議旗鷹侭幣?
var writeError : NSError?
let written = myString.writeToFile(path, atomically: false,
 encoding: NSUTF8StringEncoding,
 error: &writeError)
if !written {
 if let error = writeError {
 println("write failure: \(error.localizedDescription)")
 }
}
輝低糞孖徭失議圭隈扮?低俶勣塘崔匯倖 NSErrorPointer 斤嵆?旺繍 NSErrorPointer 斤嵆議 memory 奉來譜葎低幹秀議NSError 斤嵆。遍枠殊臥距喘宀勧弓議歌方?鳩隠万頁匯倖掲 nil 議 NSError 斤嵆。
func contentsForType(typeName: String! error: NSErrorPointer) -> AnyObject! {
 if cannotProduceContentsForType(typeName) {
 if error {
 error.memory = NSError(domain: domain, code: code, userInfo: [:])
 }
 return nil
 }
 // ...
}

Target-Action庁塀?Target-Action?

輝嗤蒙協並周窟伏?俶勣匯倖斤嵆?総匯倖斤嵆窟僕嶧連扮?厘断宥械寡喘 Cocoa 議 Target-Action 譜柴庁塀。Swift 才 Objective-C 嶄議 Target-Action 庁侏児云窃貌。壓 Swift 嶄?低辛參聞喘 Selector 窃侏器欺 Objective-C 嶄 selectors 議丼惚。萩壓Objective-C Selectors 嶄臥心壓 Swift 嶄聞喘 Target-Action 譜柴庁塀議幣箭。

窃侏謄塘嚥由匯号袈?Introspection?

壓 Objective-C 嶄?低辛參聞喘 isKindOfClass: 圭隈殊臥蝶倖斤嵆頁倦頁峺協窃侏?辛參聞喘 conformsToProtocol: 圭隈殊臥蝶倖斤嵆頁倦恆儉蒙協亅咏議号袈。壓 Swift 嶄?低辛參聞喘 is 塰麻憲頼撹貧峰議孔嬬?賜宀匆辛參聞喘 as? ?和謄塘峺協窃侏。

低辛參聞喘 is 塰麻憲殊臥匯倖糞箭頁倦頁峺協議徨窃。泌惚乎糞箭頁峺協議徨窃?椎担 is 塰麻潤惚葎 true?郡岻葎false。
if object is UIButton {
 // object is of type UIButton
} else {
 // object is not of type UIButton
}
低匆辛參聞喘 as? 塰麻憲晦編?和謄塘徨窃侏?as? 塰麻憲卦指音協峙?潤栽 if-let 囂鞘聞喘。
if let button = object as? UIButton {
 // object is successfully cast to type UIButton and bound to button
} else {
 // object could not be cast to type UIButton
}
萩壓 Type Casting 嶄臥心厚謹佚連。

殊臥謄塘亅咏議囂隈嚥殊臥謄塘窃議囂隈頁匯劔議?和中頁聞喘 as? 殊臥謄塘亅咏議幣箭?
if let dataSource = object as? UITableViewDataSource {
 // object conforms to UITableViewDataSource and is bound to dataSource
} else {
 // object not conform to UITableViewDataSource
}
廣吭?輝恂頼謄塘岻朔?dataSource 氏廬算葎 UITableViewDataSource 窃侏?侭參低峪嬬恵諒才距喘UITableViewDataSource 亅咏協吶議奉來才圭隈。輝低?序佩凪麿荷恬扮?駅倬繍凪廬算葎凪麿議窃侏。

辛參壓 Protocols 臥心厚謹屢購佚連。
<貧匯准 和匯准>

AltStyle によって変換されたページ (->オリジナル) /