Markdown一下&課程地址
Markdown語法速覽,開始使用簡書來記錄學(xué)習(xí)iOS的歷程及一些小想法與大伙分享衡奥。
課程地址:斯坦福大學(xué)公開課:iOS7應(yīng)用開發(fā)
題記
敲完Stanford公開課(iOS7)1-3課達(dá)到的目的:快速熟悉OC的一些基本語法、Xcode的使用以及思考在游戲里面MVC的用法。
MVC架構(gòu)圖解
Paste_Image.png
- 視圖(View) :用戶界面(可視UI)
- 模型(Model): 業(yè)務(wù)模型(業(yè)務(wù)處理邏輯)
- 控制器(Controller): 確保Model和View的同步榛搔,一旦Model改變,View應(yīng)該同步更新
開始游戲
效果圖 :
Paste_Image.png
游戲拆解(Model)
Paste_Image.png
通過這五個(gè)類學(xué)習(xí)OC的面向?qū)ο罄^承等屬性煌往,這里主要說下封裝了游戲邏輯的CardMatchingGame類:
#import <Foundation/Foundation.h>
#import "Deck.h"
#import "Card.h"
//設(shè)計(jì)一個(gè)類封裝游戲的邏輯
@interface CardMatchingGame : NSObject
//初始化封裝類CardMathingGame 參數(shù)指定游戲的牌數(shù) 和牌堆
- (instancetype)initWithCardCount:(NSUInteger)count usingDeck:(Deck *)deck;
//通過下標(biāo)選中牌
- (void)chooseCardAtIndex:(NSUInteger)index;
//通過下標(biāo)返回一張牌
- (Card *)cardAtIndex:(NSUInteger)index;
@property (nonatomic,readonly) NSInteger score;
@end
學(xué)習(xí)以及總結(jié)以后新建類的時(shí)候哪些公開API祈纯,哪些要封裝好即可(孰能生巧,要多敲代碼)楣号。
這里說下自定義初始化器
//自定義初始化方法(為什么要self = [super self]?先這樣寫(蘋果這樣要求))
- (instancetype)initWithCardCount:(NSUInteger)count usingDeck:(Deck *)deck{
self = [super init];
if (self){
for (int i = 0; i < count; i++) {
Card *card = [deck drawRandowCard];
if (card){
[self.cards addObject:card];
}else {
self = nil;
break;
}
}
}
return self;
}
類實(shí)例化有的時(shí)候就要求對象做一些特殊處理,這就需要設(shè)計(jì)指定初始化器最易,因?yàn)樵嫉某跏蓟椒?(instancetype)init方法是無法讓實(shí)例對象持有有效的數(shù)據(jù)(自帶的方法初始化后,基本數(shù)據(jù)類型屬性=0炫狱;對象屬性默認(rèn)為nil)藻懒。
最后
不能也不要做溫水煮青蛙,現(xiàn)在開始自學(xué)下iOS视译。如能小成嬉荆,也算多了一份技能,這里以我比較喜歡的偶像之一酷含,大家共勉鄙早!
Instagram的創(chuàng)始人凱文·賽斯特倫
Demo地址