SlideShare a Scribd company logo
1 of 57
Download to read offline
Standford 2015 iOS讀書會
week3
彼得潘
1. Objective-C Compatibility, Property List, Views
Bridge:⾃自動轉型變⾝身
var name1:String = "20.2"
var name2:NSString = "10.0"
name2 = name1
name1 = name2 as String

name1 = String(name2)
name2.doubleValue
(name1 as NSString).doubleValue
有問題的程式:
name1.doubleValue
name1 = name2
NSString -> String 要另外轉型
Bridge:⾃自動轉型變⾝身
var num1:Int = 3
var num2:Float = 2.5
var num3:Double = 3.2
var num4:Bool = true
var num5:NSNumber = 3
num1 = num5 as Int
num1 = Int(num5)
num1 = num5.integerValue
num3 = num5 as Double
num3 = Double(num5)
num3 = num5.doubleValue
有問題的程式:
num1 = num5
NSNumber -> Int, Float, Double, Bool 要另外轉型
Bridge:⾃自動轉型變⾝身
var array1:[Int] = [2,3]
var array2:NSArray = NSArray(object: 1)
array2 = array1
array1 = array2 as! [Int]
(array1 as NSArray).componentsJoinedByString(",")
可能轉型失敗,要⽤用as!
array1 = array2 as! [Double]
array1 = array2
有問題的程式:
NSArray -> Array 要另外轉型,⽽而且可能失敗
NSDictionary同NSArray,
同樣NSDictionary -> Dictionary要另外轉型
Bridge
String 轉換成NSString
struct變成object !
⼀一定要import SDK的framework, ex Foundation
Property List
包含以下六種型別資料的集合(容不下其它型別)
NSString NSArray NSDictionary NSNumber
NSData NSDate
NSDictionary和NSArray裡的資料也必須是這六種型別
像是⼩小型的database
property list
Wealthy App的記帳類別
property list
預設唯讀
修改
copy到可讀寫的doc路徑
func copyItemAtURL(_ srcURL: NSURL,
toURL dstURL: NSURL,
error error: NSErrorPointer) -> Bool
NSUserDefaults
每個App都有的propert list
永久存在
適⽤用例⼦子: App的相關設定資料
只適合儲存少量資料
存太多資料時,存取也會較花時間
user’s defaults database
NSString NSArray NSDictionary NSNumber
NSData NSDate
可寫⼊入的資料
NSUserDefaults
let defaults = NSUserDefaults.standardUserDefaults()
defaults.setObject("peter", forKey: "name")
if let name = defaults.objectForKey("name") as! String? {
println("name (name.uppercaseString)")
}
if let name = defaults.stringForKey("name") {
println("name (name.uppercaseString)")
}
defaults.setInteger(3, forKey: "age")
var age = defaults.integerForKey("age")
println("age (age)")
defaults.removeObjectForKey("age")
var ageObj = defaults.objectForKey("age")
println("age (ageObj)")
defaults.synchronize()
synchronize:寫⼊入disk,定期被呼叫,⾃自⼰己呼叫更保險
standford demo
var program:PropertyList {
get {
var returnValue = Array<String>()
for op in opStack {
returnValue.append(op.description)
}
return returnValue
}
}
Array<String>轉換成內容為NSString的NSArray
get {
return opStack.map{$0.description}
}
typealias PropertyList = AnyObject
幫型別取個好聽名字
typealias
standford demo
set {
if let opSymbols = newValue as? Array<String> {
var newOpStack = [Op]()
for opSymbol in opSymbols {
if let op = knownOps[opSymbol] {
newOpStack.append(op)
}
else if let operand =
NSNumberFormatter().numberFromString(opSymbol)?.doubleValue {
newOpStack.append(.Operand(operand))
}
}
opStack = newOpStack
}
}
View
⻑⾧長⽅方形 Touch事件畫圖
var superview: UIView? { get }
var subviews: [AnyObject] { get }
UIWindow: 最底層的Viewindex愈⾼高在愈上層
sv Optional(<UIWindow: 0x7fae6b2823b0; frame = (0 0; 320 568); gestureRecognizers = <NSArray:
0x7fae6b289be0>; layer = <UIWindowLayer: 0x7fae6b294790>>)
空⽩白View Controller的superView
Navigation Controller的superView
sv Optional(<UIViewControllerWrapperView: 0x7f8103779fb0; frame = (0 0; 320 568); autoresize
= RM+BM; layer = <CALayer: 0x7f8103780f40>>)
sv Optional(<UINavigationTransitionView: 0x7f810376e3c0; frame = (0 0; 320 568);
clipsToBounds = YES; autoresize = W+H; layer = <CALayer: 0x7f810376d7a0>>)
sv Optional(<UILayoutContainerView: 0x7f8103419250; frame = (0 0; 320 568); autoresize = W+H;
gestureRecognizers = <NSArray: 0x7f8103776020>; layer = <CALayer: 0x7f810341b530>>)
sv Optional(<UIWindow: 0x7f8103562eb0; frame = (0 0; 320 568); gestureRecognizers = <NSArray:
0x7f81035636b0>; layer = <UIWindowLayer: 0x7f810354ec30>>)
畫⾯面上的UI元件可以存取到
Window
ex: self.button.window
⼀一般⼀一個App只有⼀一個window
View
從storyboard建⽴立
從程式加⼊入或移除,利⽤用addSubview(aView: UIView),
removeFromSuperview()
View Controller有個view property,連結到其控制的view
初始view
init(frame: CGRect)
從程式建⽴立view
init(coder: NSCoder)
可從這裡初始storyboard或xib建⽴立的view
override init(frame: CGRect) {
super.init(frame: frame)
}
覆寫designated initializer要加上override,

覆寫convenience initializer不⽤用加override
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
⼀一旦定義了init(frame: CGRect),required init(coder aDecoder: NSCoder) 也要定義
若先定義了required init(coder aDecoder: NSCoder) ,init(frame: CGRect)則不⼀一定要定義
防⽌止絕技失傳的
required initializer
SuperBaby⾃自⼰己定義designated initializer,
不再繼承init( )
防⽌止絕技失傳的
required initializer
防⽌止絕技失傳的
required initializer
func awakeFromNib()
初始storyboard上元件的另⼀一個⽅方法
在init(coder: NSCoder)後被呼叫
定義⻑⾧長⽅方形的元素
CGFloat
struct CGPoint {
var x: CGFloat
var y: CGFloat
init()
init(x: CGFloat, y: CGFloat)
}
struct CGSize {
var width: CGFloat
var height: CGFloat
init()
init(width: CGFloat, height: CGFloat)
}
float不能直接指派給CGFloat
var number1:Float = 5.1
var number2:CGFloat = 3.2
number2 = CGFloat(number1)
number1 = Float(number2)
定義⻑⾧長⽅方形的元素
struct CGRect {
var origin: CGPoint
var size: CGSize
init()
init(origin: CGPoint, size: CGSize)
}
let rect = CGRect(x: 10, y: 10, width: 100, height: 100)
CGRect的property & method
var minX: CGFloat { get }
var midX: CGFloat { get }
var maxX: CGFloat { get }
var minY: CGFloat { get }
var midY: CGFloat { get }
var maxY: CGFloat { get }
func intersects(rect: CGRect) -> Bool
mutating func intersect(withRect: CGRect)
func contains(rect: CGRect) -> Bool
func contains(point: CGPoint) -> Bool
座標系統
origin: 左上座標
x -> 愈向右愈⼤大
y -> 愈向下愈⼤大
單位points,不是pixel
retina : 2x, 2*2
retina HD: 3x, 3*3, iPhone 6 plus
frame & bounds
frame:定位 bounds:繪製元件
frame & bounds
let yellowView = UIView(frame: CGRect(x: 50, y: 50, width: 150, height: 150))
yellowView.backgroundColor = UIColor.yellowColor()
self.view.addSubview(yellowView)
let blueView = UIView(frame: CGRect(x: 50, y: 50, width: 150, height: 150))
blueView.backgroundColor = UIColor(red: 0, green: 0, blue: 1, alpha: 0.5)
self.view.addSubview(blueView)
println("frame (blueView.frame) bounds (blueView.bounds) center 
(blueView.center)")
blueView.bounds = CGRect(x: 0, y: 0, width: 300, height: 300)
println("frame (blueView.frame) bounds (blueView.bounds) center 
(blueView.center)")
blueView.frame = CGRect(x: 50, y: 50, width: 150, height: 150)
println("frame (blueView.frame) bounds (blueView.bounds) center 
(blueView.center)")
let angel = CGFloat(M_PI/4)
let transform = CGAffineTransformMakeRotation(angel)
blueView.transform = transform
println("frame (blueView.frame) bounds (blueView.bounds) center 
(blueView.center)")
360度: M_PI * 2
旋轉後的touch
只有bounds區塊是touch範圍
建⽴立View
從storyboard
從程式
從Identity Inspector設定物件的類別
繪製View
override func drawRect(rect: CGRect) {
// Drawing code
}
func setNeedsDisplay()
func setNeedsDisplayInRect(rect: CGRect)
觸發重新繪製
不要直接呼叫drawRect
func drawRect(rect: CGRect)
利⽤用Core Graphics
UIGraphicsGetCurrentContext()
利⽤用UIBezierPath
以Core Graphics為基礎
繪製三⾓角形
UIColor的set()同時設定fill & stroke
UIBezierPath
let roundRect = UIBezierPath(roundedRect: aCGRect, cornerRadius: aCGFloat)
let oval = UIBezierPath(ovalInRect: aCGRect)
UIColor
self.view.backgroundColor = UIColor.blueColor()
let image = UIImage(named: "book")
self.view.backgroundColor = UIColor(patternImage: image!)
self.view.backgroundColor =
UIColor.yellowColor().colorWithAlphaComponent(0.5)
alpha : (透明 )0 ~ 1 (不透明 )
self.view.alpha = 0.5
self.view.hidden = true
影響subView的透明度
不影響subView的透明度
字型
字型
let font = UIFont.preferredFontForTextStyle(UIFontTextStyleBody)
App內容
let font = UIFont.systemFontOfSize(20)
button等元件的⽂文字
let font = UIFont.boldSystemFontOfSize(20)
let font = UIFont(name: "Papyrus", size: 20)
字型
iOS內建font
http://iosfonts.com
加⼊入第三⽅方字型
ttf,otf
http://codewithchris.com/common-mistakes-with-adding-
custom-fonts-to-your-ios-app/
⽂文字
let text = NSAttributedString(“hello")
text.drawAtPoint(aCGPoint)
let mutableText = NSMutableAttributedString("some string")
func setAttributes(attributes: Dictionary, range: NSRange)
func addAttributes(attributes: Dictionary, range: NSRange)
NSForegroundColorAttributeName : UIColor
NSStrokeWidthAttributeName : CGFloat
NSFontAttributeName : UIFont
UILabel
NSMutableAttributedString
let attrMessage = NSMutableAttributedString(string:"天⻑⾧長地久有沒
有")
let font = UIFont.boldSystemFontOfSize(24)
attrMessage.addAttribute(NSFontAttributeName, value: font,
range: NSMakeRange(0,
attrMessage.length))
attrMessage.addAttribute(NSForegroundColorAttributeName,
value: UIColor.blueColor(), range: NSMakeRange(0, 4))
attrMessage.addAttribute(NSForegroundColorAttributeName,
value:UIColor.blackColor(), range: NSMakeRange(4,
attrMessage.length-4))
self.label.attributedText = attrMessage
1個label即可搞定
Image
UIImageView & UIImage
Images.xcassets
let image: UIImage? = UIImage(named: “foo”)
optional
let image: UIImage? = UIImage(contentsOfFile: aString)
let image: UIImage? = UIImage(data: anNSData)
UIGraphicsBeginImageContext
程式繪製
ex: App畫⾯面截圖
Image
let image: UIImage = ...
image.drawAtPoint(aCGPoint) // the upper left corner of the
image put at aCGPoint
image.drawInRect(aCGRect) // scales the image to fit
aCGRect
image.drawAsPatternInRect(aCGRect) // tiles the image into
aCGRect
contentMode
Image View的content mode
content mode redraw的影響:

Standford Happiness App Demo
Happiness App Demo
⾃自訂controller
Identity Inspector
設定第⼀一個畫⾯面的
controller
也可以點選arrow移動
Reset to Suggested
Constraints
ctrl + shift + 點選觸控版
顯⽰示點選位置的UI元件清單
convertPoint
func convertPoint(point: CGPoint, fromView view: UIView?) ->
CGPoint
將參數fromView中的point座標,轉換為呼叫者view的座標
let point = redView.convertPoint(redView.center,
fromView: self.view)
println("point (redView.center) (point)")
point (100.0, 100.0) (50.0, 50.0)
因為Content Mode為ScaleToFill,
當bounds改變時,
⾃自動縮放原來的image
笑臉變型問題
Redraw
設為Redraw時,
bounds改變時重新繪製,
呼叫drawRect
定義常數的⽅方法
private struct Scaling {
static let FaceRadiusToEyeRadiusRatio:CGFloat = 10
static let FaceRadiusToEyeOffsetRatio:CGFloat = 3
static let FaceRadiusToEyeSeparationRatio:CGFloat = 1.5
static let FaceRadiusToMouthWidthRatio:CGFloat = 1
static let FaceRadiusToMouthHeightRatio:CGFloat = 3
static let FaceRadiusToMouthOffsetRatio:CGFloat = 3
}

More Related Content

What's hot

openFrameworks 007 - 3D
openFrameworks 007 - 3DopenFrameworks 007 - 3D
openFrameworks 007 - 3Droxlu
 
Create xo game in android studio
Create xo game in android studioCreate xo game in android studio
Create xo game in android studioMahmoodGhaemMaghami
 
LLVM Backend の紹介
LLVM Backend の紹介LLVM Backend の紹介
LLVM Backend の紹介Akira Maruoka
 
Anomalies in X-Ray Engine
Anomalies in X-Ray EngineAnomalies in X-Ray Engine
Anomalies in X-Ray EnginePVS-Studio
 
스위프트를 여행하는 히치하이커를 위한 스타일 안내
스위프트를 여행하는 히치하이커를 위한 스타일 안내스위프트를 여행하는 히치하이커를 위한 스타일 안내
스위프트를 여행하는 히치하이커를 위한 스타일 안내Jung Kim
 
Simulator customizing & testing for Xcode 9
Simulator customizing & testing for Xcode 9Simulator customizing & testing for Xcode 9
Simulator customizing & testing for Xcode 9Bongwon Lee
 
openFrameworks 007 - graphics
openFrameworks 007 - graphicsopenFrameworks 007 - graphics
openFrameworks 007 - graphicsroxlu
 
Creating custom views
Creating custom viewsCreating custom views
Creating custom viewsMu Chun Wang
 
20180721 code defragment
20180721 code defragment20180721 code defragment
20180721 code defragmentChiwon Song
 
Unbreakable: The Craft of Code
Unbreakable: The Craft of CodeUnbreakable: The Craft of Code
Unbreakable: The Craft of CodeJoe Morgan
 
openFrameworks – パーティクルを動かす、静的配列と動的配列 - 多摩美メディアアートII
openFrameworks – パーティクルを動かす、静的配列と動的配列 - 多摩美メディアアートIIopenFrameworks – パーティクルを動かす、静的配列と動的配列 - 多摩美メディアアートII
openFrameworks – パーティクルを動かす、静的配列と動的配列 - 多摩美メディアアートIIAtsushi Tadokoro
 
Developer Experience i TypeScript. Najbardziej ikoniczne duo
Developer Experience i TypeScript. Najbardziej ikoniczne duoDeveloper Experience i TypeScript. Najbardziej ikoniczne duo
Developer Experience i TypeScript. Najbardziej ikoniczne duoThe Software House
 
openFrameworks 007 - video
openFrameworks 007 - videoopenFrameworks 007 - video
openFrameworks 007 - videoroxlu
 
From java to kotlin beyond alt+shift+cmd+k - Droidcon italy
From java to kotlin beyond alt+shift+cmd+k - Droidcon italyFrom java to kotlin beyond alt+shift+cmd+k - Droidcon italy
From java to kotlin beyond alt+shift+cmd+k - Droidcon italyFabio Collini
 
ES6 patterns in the wild
ES6 patterns in the wildES6 patterns in the wild
ES6 patterns in the wildJoe Morgan
 
TRAFFIC CODE MATLAB Function varargouttraffic code
TRAFFIC CODE MATLAB Function varargouttraffic codeTRAFFIC CODE MATLAB Function varargouttraffic code
TRAFFIC CODE MATLAB Function varargouttraffic codeYograj Ghodekar
 

What's hot (20)

openFrameworks 007 - 3D
openFrameworks 007 - 3DopenFrameworks 007 - 3D
openFrameworks 007 - 3D
 
Create xo game in android studio
Create xo game in android studioCreate xo game in android studio
Create xo game in android studio
 
LLVM Backend の紹介
LLVM Backend の紹介LLVM Backend の紹介
LLVM Backend の紹介
 
Anomalies in X-Ray Engine
Anomalies in X-Ray EngineAnomalies in X-Ray Engine
Anomalies in X-Ray Engine
 
스위프트를 여행하는 히치하이커를 위한 스타일 안내
스위프트를 여행하는 히치하이커를 위한 스타일 안내스위프트를 여행하는 히치하이커를 위한 스타일 안내
스위프트를 여행하는 히치하이커를 위한 스타일 안내
 
Simulator customizing & testing for Xcode 9
Simulator customizing & testing for Xcode 9Simulator customizing & testing for Xcode 9
Simulator customizing & testing for Xcode 9
 
openFrameworks 007 - graphics
openFrameworks 007 - graphicsopenFrameworks 007 - graphics
openFrameworks 007 - graphics
 
OpenXR 0.90 Overview Guide
OpenXR 0.90 Overview GuideOpenXR 0.90 Overview Guide
OpenXR 0.90 Overview Guide
 
Creating custom views
Creating custom viewsCreating custom views
Creating custom views
 
Of class2
Of class2Of class2
Of class2
 
20180721 code defragment
20180721 code defragment20180721 code defragment
20180721 code defragment
 
Unbreakable: The Craft of Code
Unbreakable: The Craft of CodeUnbreakable: The Craft of Code
Unbreakable: The Craft of Code
 
openFrameworks – パーティクルを動かす、静的配列と動的配列 - 多摩美メディアアートII
openFrameworks – パーティクルを動かす、静的配列と動的配列 - 多摩美メディアアートIIopenFrameworks – パーティクルを動かす、静的配列と動的配列 - 多摩美メディアアートII
openFrameworks – パーティクルを動かす、静的配列と動的配列 - 多摩美メディアアートII
 
Developer Experience i TypeScript. Najbardziej ikoniczne duo
Developer Experience i TypeScript. Najbardziej ikoniczne duoDeveloper Experience i TypeScript. Najbardziej ikoniczne duo
Developer Experience i TypeScript. Najbardziej ikoniczne duo
 
openFrameworks 007 - video
openFrameworks 007 - videoopenFrameworks 007 - video
openFrameworks 007 - video
 
Ocr code
Ocr codeOcr code
Ocr code
 
From java to kotlin beyond alt+shift+cmd+k - Droidcon italy
From java to kotlin beyond alt+shift+cmd+k - Droidcon italyFrom java to kotlin beyond alt+shift+cmd+k - Droidcon italy
From java to kotlin beyond alt+shift+cmd+k - Droidcon italy
 
ES6 patterns in the wild
ES6 patterns in the wildES6 patterns in the wild
ES6 patterns in the wild
 
TRAFFIC CODE MATLAB Function varargouttraffic code
TRAFFIC CODE MATLAB Function varargouttraffic codeTRAFFIC CODE MATLAB Function varargouttraffic code
TRAFFIC CODE MATLAB Function varargouttraffic code
 
Exceptional exceptions
Exceptional exceptionsExceptional exceptions
Exceptional exceptions
 

Viewers also liked

Standford 2015 week5: 1.View Controller Lifecycle, Autolayout 2. Scroll View ...
Standford 2015 week5: 1.View Controller Lifecycle, Autolayout 2. Scroll View ...Standford 2015 week5: 1.View Controller Lifecycle, Autolayout 2. Scroll View ...
Standford 2015 week5: 1.View Controller Lifecycle, Autolayout 2. Scroll View ...彼得潘 Pan
 
第一次程式親密接觸
第一次程式親密接觸第一次程式親密接觸
第一次程式親密接觸彼得潘 Pan
 
Standford 2015 week8
Standford 2015 week8Standford 2015 week8
Standford 2015 week8彼得潘 Pan
 
打造你的第一個iPhone APP
打造你的第一個iPhone APP打造你的第一個iPhone APP
打造你的第一個iPhone APP彼得潘 Pan
 
Standford 2015 iOS讀書會 week1: 1.Logistics , iOS 8 Overview 2. More Xcode and S...
Standford 2015 iOS讀書會 week1: 1.Logistics , iOS 8 Overview 2. More Xcode and S...Standford 2015 iOS讀書會 week1: 1.Logistics , iOS 8 Overview 2. More Xcode and S...
Standford 2015 iOS讀書會 week1: 1.Logistics , iOS 8 Overview 2. More Xcode and S...彼得潘 Pan
 
Standford 2015 iOS讀書會 week2: 1. Applying MVC 2. More Swift and Foundation Fra...
Standford 2015 iOS讀書會 week2: 1. Applying MVC 2. More Swift and Foundation Fra...Standford 2015 iOS讀書會 week2: 1. Applying MVC 2. More Swift and Foundation Fra...
Standford 2015 iOS讀書會 week2: 1. Applying MVC 2. More Swift and Foundation Fra...彼得潘 Pan
 
打造你的第一個 iOS App
打造你的第一個 iOS App  打造你的第一個 iOS App
打造你的第一個 iOS App 彼得潘 Pan
 
你的程式開發初體驗 (以Swift為例)
你的程式開發初體驗 (以Swift為例)你的程式開發初體驗 (以Swift為例)
你的程式開發初體驗 (以Swift為例)彼得潘 Pan
 
如何變成iOS App開發魔法師
如何變成iOS App開發魔法師如何變成iOS App開發魔法師
如何變成iOS App開發魔法師彼得潘 Pan
 
不能承受的感動 - iOS App實機測試
不能承受的感動 - iOS App實機測試不能承受的感動 - iOS App實機測試
不能承受的感動 - iOS App實機測試彼得潘 Pan
 
利用 iOS App 技術創業的 13 個方法
利用 iOS App 技術創業的 13 個方法利用 iOS App 技術創業的 13 個方法
利用 iOS App 技術創業的 13 個方法彼得潘 Pan
 
iOS Coding Best Practices
iOS Coding Best PracticesiOS Coding Best Practices
iOS Coding Best PracticesJean-Luc David
 

Viewers also liked (13)

Standford 2015 week5: 1.View Controller Lifecycle, Autolayout 2. Scroll View ...
Standford 2015 week5: 1.View Controller Lifecycle, Autolayout 2. Scroll View ...Standford 2015 week5: 1.View Controller Lifecycle, Autolayout 2. Scroll View ...
Standford 2015 week5: 1.View Controller Lifecycle, Autolayout 2. Scroll View ...
 
第一次程式親密接觸
第一次程式親密接觸第一次程式親密接觸
第一次程式親密接觸
 
為愛打造App
為愛打造App為愛打造App
為愛打造App
 
Standford 2015 week8
Standford 2015 week8Standford 2015 week8
Standford 2015 week8
 
打造你的第一個iPhone APP
打造你的第一個iPhone APP打造你的第一個iPhone APP
打造你的第一個iPhone APP
 
Standford 2015 iOS讀書會 week1: 1.Logistics , iOS 8 Overview 2. More Xcode and S...
Standford 2015 iOS讀書會 week1: 1.Logistics , iOS 8 Overview 2. More Xcode and S...Standford 2015 iOS讀書會 week1: 1.Logistics , iOS 8 Overview 2. More Xcode and S...
Standford 2015 iOS讀書會 week1: 1.Logistics , iOS 8 Overview 2. More Xcode and S...
 
Standford 2015 iOS讀書會 week2: 1. Applying MVC 2. More Swift and Foundation Fra...
Standford 2015 iOS讀書會 week2: 1. Applying MVC 2. More Swift and Foundation Fra...Standford 2015 iOS讀書會 week2: 1. Applying MVC 2. More Swift and Foundation Fra...
Standford 2015 iOS讀書會 week2: 1. Applying MVC 2. More Swift and Foundation Fra...
 
打造你的第一個 iOS App
打造你的第一個 iOS App  打造你的第一個 iOS App
打造你的第一個 iOS App
 
你的程式開發初體驗 (以Swift為例)
你的程式開發初體驗 (以Swift為例)你的程式開發初體驗 (以Swift為例)
你的程式開發初體驗 (以Swift為例)
 
如何變成iOS App開發魔法師
如何變成iOS App開發魔法師如何變成iOS App開發魔法師
如何變成iOS App開發魔法師
 
不能承受的感動 - iOS App實機測試
不能承受的感動 - iOS App實機測試不能承受的感動 - iOS App實機測試
不能承受的感動 - iOS App實機測試
 
利用 iOS App 技術創業的 13 個方法
利用 iOS App 技術創業的 13 個方法利用 iOS App 技術創業的 13 個方法
利用 iOS App 技術創業的 13 個方法
 
iOS Coding Best Practices
iOS Coding Best PracticesiOS Coding Best Practices
iOS Coding Best Practices
 

Similar to Standford 2015 week3: Objective-C Compatibility, Property List, Views

Massimo Artizzu - The tricks of Houdini: a magic wand for the future of CSS -...
Massimo Artizzu - The tricks of Houdini: a magic wand for the future of CSS -...Massimo Artizzu - The tricks of Houdini: a magic wand for the future of CSS -...
Massimo Artizzu - The tricks of Houdini: a magic wand for the future of CSS -...Codemotion
 
Александр Зимин – Анимация как средство самовыражения
Александр Зимин – Анимация как средство самовыраженияАлександр Зимин – Анимация как средство самовыражения
Александр Зимин – Анимация как средство самовыраженияCocoaHeads
 
Intro to computer vision in .net
Intro to computer vision in .netIntro to computer vision in .net
Intro to computer vision in .netStephen Lorello
 
Hidden Gems in Swift
Hidden Gems in SwiftHidden Gems in Swift
Hidden Gems in SwiftNetguru
 
Idioms in swift 2016 05c
Idioms in swift 2016 05cIdioms in swift 2016 05c
Idioms in swift 2016 05cKaz Yoshikawa
 
Exploring Canvas
Exploring CanvasExploring Canvas
Exploring CanvasKevin Hoyt
 
SVCC 2013 D3.js Presentation (10/05/2013)
SVCC 2013 D3.js Presentation (10/05/2013)SVCC 2013 D3.js Presentation (10/05/2013)
SVCC 2013 D3.js Presentation (10/05/2013)Oswald Campesato
 
Migrating Objective-C to Swift
Migrating Objective-C to SwiftMigrating Objective-C to Swift
Migrating Objective-C to SwiftElmar Kretzer
 
CocoaHeads Toulouse - Guillaume Cerquant - UIView
CocoaHeads Toulouse - Guillaume Cerquant - UIViewCocoaHeads Toulouse - Guillaume Cerquant - UIView
CocoaHeads Toulouse - Guillaume Cerquant - UIViewCocoaHeads France
 
Exploring Canvas
Exploring CanvasExploring Canvas
Exploring CanvasKevin Hoyt
 
Самые вкусные баги из игрового кода: как ошибаются наши коллеги-программисты ...
Самые вкусные баги из игрового кода: как ошибаются наши коллеги-программисты ...Самые вкусные баги из игрового кода: как ошибаются наши коллеги-программисты ...
Самые вкусные баги из игрового кода: как ошибаются наши коллеги-программисты ...DevGAMM Conference
 
29-kashyap-mask-detaction.pptx
29-kashyap-mask-detaction.pptx29-kashyap-mask-detaction.pptx
29-kashyap-mask-detaction.pptxKASHYAPPATHAK7
 
How to build a html5 websites.v1
How to build a html5 websites.v1How to build a html5 websites.v1
How to build a html5 websites.v1Bitla Software
 
Aaron Bedra - Effective Software Security Teams
Aaron Bedra - Effective Software Security TeamsAaron Bedra - Effective Software Security Teams
Aaron Bedra - Effective Software Security Teamscentralohioissa
 
The Ring programming language version 1.2 book - Part 32 of 84
The Ring programming language version 1.2 book - Part 32 of 84The Ring programming language version 1.2 book - Part 32 of 84
The Ring programming language version 1.2 book - Part 32 of 84Mahmoud Samir Fayed
 
The Ring programming language version 1.7 book - Part 48 of 196
The Ring programming language version 1.7 book - Part 48 of 196The Ring programming language version 1.7 book - Part 48 of 196
The Ring programming language version 1.7 book - Part 48 of 196Mahmoud Samir Fayed
 
Prescribing RX Responsibly
Prescribing RX ResponsiblyPrescribing RX Responsibly
Prescribing RX ResponsiblyNareg Khoshafian
 

Similar to Standford 2015 week3: Objective-C Compatibility, Property List, Views (20)

Massimo Artizzu - The tricks of Houdini: a magic wand for the future of CSS -...
Massimo Artizzu - The tricks of Houdini: a magic wand for the future of CSS -...Massimo Artizzu - The tricks of Houdini: a magic wand for the future of CSS -...
Massimo Artizzu - The tricks of Houdini: a magic wand for the future of CSS -...
 
Css5 canvas
Css5 canvasCss5 canvas
Css5 canvas
 
Александр Зимин – Анимация как средство самовыражения
Александр Зимин – Анимация как средство самовыраженияАлександр Зимин – Анимация как средство самовыражения
Александр Зимин – Анимация как средство самовыражения
 
Intro to computer vision in .net
Intro to computer vision in .netIntro to computer vision in .net
Intro to computer vision in .net
 
Hidden Gems in Swift
Hidden Gems in SwiftHidden Gems in Swift
Hidden Gems in Swift
 
Idioms in swift 2016 05c
Idioms in swift 2016 05cIdioms in swift 2016 05c
Idioms in swift 2016 05c
 
Exploring Canvas
Exploring CanvasExploring Canvas
Exploring Canvas
 
Svcc 2013-d3
Svcc 2013-d3Svcc 2013-d3
Svcc 2013-d3
 
SVCC 2013 D3.js Presentation (10/05/2013)
SVCC 2013 D3.js Presentation (10/05/2013)SVCC 2013 D3.js Presentation (10/05/2013)
SVCC 2013 D3.js Presentation (10/05/2013)
 
Migrating Objective-C to Swift
Migrating Objective-C to SwiftMigrating Objective-C to Swift
Migrating Objective-C to Swift
 
CocoaHeads Toulouse - Guillaume Cerquant - UIView
CocoaHeads Toulouse - Guillaume Cerquant - UIViewCocoaHeads Toulouse - Guillaume Cerquant - UIView
CocoaHeads Toulouse - Guillaume Cerquant - UIView
 
Exploring Canvas
Exploring CanvasExploring Canvas
Exploring Canvas
 
program logbook 2
program logbook 2program logbook 2
program logbook 2
 
Самые вкусные баги из игрового кода: как ошибаются наши коллеги-программисты ...
Самые вкусные баги из игрового кода: как ошибаются наши коллеги-программисты ...Самые вкусные баги из игрового кода: как ошибаются наши коллеги-программисты ...
Самые вкусные баги из игрового кода: как ошибаются наши коллеги-программисты ...
 
29-kashyap-mask-detaction.pptx
29-kashyap-mask-detaction.pptx29-kashyap-mask-detaction.pptx
29-kashyap-mask-detaction.pptx
 
How to build a html5 websites.v1
How to build a html5 websites.v1How to build a html5 websites.v1
How to build a html5 websites.v1
 
Aaron Bedra - Effective Software Security Teams
Aaron Bedra - Effective Software Security TeamsAaron Bedra - Effective Software Security Teams
Aaron Bedra - Effective Software Security Teams
 
The Ring programming language version 1.2 book - Part 32 of 84
The Ring programming language version 1.2 book - Part 32 of 84The Ring programming language version 1.2 book - Part 32 of 84
The Ring programming language version 1.2 book - Part 32 of 84
 
The Ring programming language version 1.7 book - Part 48 of 196
The Ring programming language version 1.7 book - Part 48 of 196The Ring programming language version 1.7 book - Part 48 of 196
The Ring programming language version 1.7 book - Part 48 of 196
 
Prescribing RX Responsibly
Prescribing RX ResponsiblyPrescribing RX Responsibly
Prescribing RX Responsibly
 

More from 彼得潘 Pan

創作 MusicKit 告白情歌
創作 MusicKit 告白情歌創作 MusicKit 告白情歌
創作 MusicKit 告白情歌彼得潘 Pan
 
如何變成 iOS App 開發魔法師 (1 小時)
如何變成 iOS App 開發魔法師 (1 小時)如何變成 iOS App 開發魔法師 (1 小時)
如何變成 iOS App 開發魔法師 (1 小時)彼得潘 Pan
 
如何變成 iOS App 開發魔法師
如何變成 iOS App 開發魔法師如何變成 iOS App 開發魔法師
如何變成 iOS App 開發魔法師彼得潘 Pan
 
Xcode 的 git 版本管理
Xcode 的 git 版本管理Xcode 的 git 版本管理
Xcode 的 git 版本管理彼得潘 Pan
 
消滅永生不死吸血鬼物件的 ARC
消滅永生不死吸血鬼物件的 ARC消滅永生不死吸血鬼物件的 ARC
消滅永生不死吸血鬼物件的 ARC彼得潘 Pan
 

More from 彼得潘 Pan (6)

創作 MusicKit 告白情歌
創作 MusicKit 告白情歌創作 MusicKit 告白情歌
創作 MusicKit 告白情歌
 
如何變成 iOS App 開發魔法師 (1 小時)
如何變成 iOS App 開發魔法師 (1 小時)如何變成 iOS App 開發魔法師 (1 小時)
如何變成 iOS App 開發魔法師 (1 小時)
 
如何變成 iOS App 開發魔法師
如何變成 iOS App 開發魔法師如何變成 iOS App 開發魔法師
如何變成 iOS App 開發魔法師
 
Xcode 的 git 版本管理
Xcode 的 git 版本管理Xcode 的 git 版本管理
Xcode 的 git 版本管理
 
消滅永生不死吸血鬼物件的 ARC
消滅永生不死吸血鬼物件的 ARC消滅永生不死吸血鬼物件的 ARC
消滅永生不死吸血鬼物件的 ARC
 
iOS 7 SDK特訓班
iOS 7 SDK特訓班iOS 7 SDK特訓班
iOS 7 SDK特訓班
 

Recently uploaded

BDSM⚡Call Girls in Sector 71 Noida Escorts >༒8448380779 Escort Service
BDSM⚡Call Girls in Sector 71 Noida Escorts >༒8448380779 Escort ServiceBDSM⚡Call Girls in Sector 71 Noida Escorts >༒8448380779 Escort Service
BDSM⚡Call Girls in Sector 71 Noida Escorts >༒8448380779 Escort ServiceDelhi Call girls
 
CALL ON ➥8923113531 🔝Call Girls Saharaganj Lucknow best sexual service
CALL ON ➥8923113531 🔝Call Girls Saharaganj Lucknow best sexual serviceCALL ON ➥8923113531 🔝Call Girls Saharaganj Lucknow best sexual service
CALL ON ➥8923113531 🔝Call Girls Saharaganj Lucknow best sexual serviceanilsa9823
 
CALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best Night Fun service
CALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best Night Fun serviceCALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best Night Fun service
CALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best Night Fun serviceanilsa9823
 
Call US Pooja 9892124323 ✓Call Girls In Mira Road ( Mumbai ) secure service,
Call US Pooja 9892124323 ✓Call Girls In Mira Road ( Mumbai ) secure service,Call US Pooja 9892124323 ✓Call Girls In Mira Road ( Mumbai ) secure service,
Call US Pooja 9892124323 ✓Call Girls In Mira Road ( Mumbai ) secure service,Pooja Nehwal
 
Powerful Love Spells in Arkansas, AR (310) 882-6330 Bring Back Lost Lover
Powerful Love Spells in Arkansas, AR (310) 882-6330 Bring Back Lost LoverPowerful Love Spells in Arkansas, AR (310) 882-6330 Bring Back Lost Lover
Powerful Love Spells in Arkansas, AR (310) 882-6330 Bring Back Lost LoverPsychicRuben LoveSpells
 
FULL ENJOY - 9999218229 Call Girls in {Mahipalpur}| Delhi NCR
FULL ENJOY - 9999218229 Call Girls in {Mahipalpur}| Delhi NCRFULL ENJOY - 9999218229 Call Girls in {Mahipalpur}| Delhi NCR
FULL ENJOY - 9999218229 Call Girls in {Mahipalpur}| Delhi NCRnishacall1
 
9892124323 | Book Call Girls in Juhu and escort services 24x7
9892124323 | Book Call Girls in Juhu and escort services 24x79892124323 | Book Call Girls in Juhu and escort services 24x7
9892124323 | Book Call Girls in Juhu and escort services 24x7Pooja Nehwal
 

Recently uploaded (7)

BDSM⚡Call Girls in Sector 71 Noida Escorts >༒8448380779 Escort Service
BDSM⚡Call Girls in Sector 71 Noida Escorts >༒8448380779 Escort ServiceBDSM⚡Call Girls in Sector 71 Noida Escorts >༒8448380779 Escort Service
BDSM⚡Call Girls in Sector 71 Noida Escorts >༒8448380779 Escort Service
 
CALL ON ➥8923113531 🔝Call Girls Saharaganj Lucknow best sexual service
CALL ON ➥8923113531 🔝Call Girls Saharaganj Lucknow best sexual serviceCALL ON ➥8923113531 🔝Call Girls Saharaganj Lucknow best sexual service
CALL ON ➥8923113531 🔝Call Girls Saharaganj Lucknow best sexual service
 
CALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best Night Fun service
CALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best Night Fun serviceCALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best Night Fun service
CALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best Night Fun service
 
Call US Pooja 9892124323 ✓Call Girls In Mira Road ( Mumbai ) secure service,
Call US Pooja 9892124323 ✓Call Girls In Mira Road ( Mumbai ) secure service,Call US Pooja 9892124323 ✓Call Girls In Mira Road ( Mumbai ) secure service,
Call US Pooja 9892124323 ✓Call Girls In Mira Road ( Mumbai ) secure service,
 
Powerful Love Spells in Arkansas, AR (310) 882-6330 Bring Back Lost Lover
Powerful Love Spells in Arkansas, AR (310) 882-6330 Bring Back Lost LoverPowerful Love Spells in Arkansas, AR (310) 882-6330 Bring Back Lost Lover
Powerful Love Spells in Arkansas, AR (310) 882-6330 Bring Back Lost Lover
 
FULL ENJOY - 9999218229 Call Girls in {Mahipalpur}| Delhi NCR
FULL ENJOY - 9999218229 Call Girls in {Mahipalpur}| Delhi NCRFULL ENJOY - 9999218229 Call Girls in {Mahipalpur}| Delhi NCR
FULL ENJOY - 9999218229 Call Girls in {Mahipalpur}| Delhi NCR
 
9892124323 | Book Call Girls in Juhu and escort services 24x7
9892124323 | Book Call Girls in Juhu and escort services 24x79892124323 | Book Call Girls in Juhu and escort services 24x7
9892124323 | Book Call Girls in Juhu and escort services 24x7
 

Standford 2015 week3: Objective-C Compatibility, Property List, Views