zoukankan      html  css  js  c++  java
  • IOS7:学习笔记2

    一、Deck类

    .h文件

     1 #import <Foundation/Foundation.h>
     2 #import "Card.h"
     3 
     4 @interface Deck : NSObject
     5 
     6 //atTop是方法名的一部分
     7 //addCard有两个参数,参数穿插在方法名间
     8 -(void)addCard:(Card *)card atTop:(BOOL)atTop;
     9 
    10 //addCard方法的重载,用重载的方式实现可选参数
    11 -(void)addCard:(Card *)card;
    12 
    13 -(Card *)drawRandomCard;
    14 
    15 
    16 @end

    .m文件

     1 #import "Deck.h"
     2 
     3 @interface Deck()
     4 @property (strong,nonatomic) NSMutableArray *cards; //of Card
     5 @end
     6 
     7 @implementation Deck
     8 
     9 -(NSMutableArray *)cards
    10 {
    11     if (!_cards)
    12     {
    13         _cards=[[NSMutableArray alloc] init];
    14     }
    15     return _cards;
    16 }
    17 
    18 -(void)addCard:(Card *)card atTop:(BOOL)atTop
    19 {
    20     if (atTop) {
    21         [self.cards insertObject:card atIndex:0];
    22     }
    23     else
    24     {
    25         [self.cards addObject:card];
    26     }
    27 }
    28 
    29 -(void)addCard:(Card *)card
    30 {
    31     [self.cards addObject:card];
    32 }
    33 
    34 -(Card *)drawRandomCard
    35 {
    36     Card *randomCard=nil;
    37     
    38     if ([self.cards count]) {
    39         unsigned index=arc4random()%[self.cards count];
    40         randomCard=self.cards[index];
    41         [self.cards removeObjectAtIndex:index];
    42     }
    43     return randomCard;
    44 }
    45 
    46 @end

    PlayingCar类:

    .h文件:

     1 #import "Card.h"
     2 
     3 @interface PlayingCard : Card
     4 
     5 @property (strong,nonatomic) NSString *suit;
     6 @property (nonatomic) NSUInteger rank;
     7 
     8 //+号代表该方法是一个类方法,意味着将它发送给类,而不是对象的实例
     9 //类方法常被用于两种情况:
    10 //1.创建事物
    11 //2.工具方法
    12 +(NSArray *)validSuits;
    13 +(NSArray *)maxRank;
    14 
    15 
    16 @end

    .m文件:

    #import "PlayingCard.h"
    @implementation PlayingCard
    
    - (NSString *)contents
    {
        //这种方法不好,不被使用
        //return [NSString stringWithFormat:@"%d%@",self.rank,self.suit];
        NSArray *rankStrings=[PlayingCard rankStrings];
        return [rankStrings[self.rank] stringByAppendingString:self.suit];
    }
    
    //因为提供了setter和getter,要使用@synthesize
    @synthesize suit=_suit;//because we provide setter and getter
    
    
    
    -(void)setSuit:(NSString *)suit
    {
        if ([[PlayingCard validSuits] containsObject:suit]) {
            _suit = suit;
        }
    }
    
    -(NSString *)suit
    {
        return _suit?_suit:@"?";
    }
    
    +(NSArray *)validSuits
    {
        return @[@"♥︎",@"♦︎",@"♠︎",@"♣︎"];
    }
    
    +(NSArray *)rankStrings
    {
        return @[@"?",@"A",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",@"10",@"J",@"Q",@"K"];
    }
    
    @end
  • 相关阅读:
    VueJS
    Nacos 微服务注册发现配置中心
    精简自己20%的代码(异常的处理)
    lazarus 检测内存泄漏
    winsocket练习一 阻塞与select模型
    js原型链解析
    块元素 父子外边距现象
    行高的继承
    行内元素(文字)垂直平居中
    本地文件播放
  • 原文地址:https://www.cnblogs.com/hzz521/p/5095010.html
Copyright © 2011-2022 走看看