• 碎片化知识整理


    @property (strong,nonatomic)NSMutableArray *cards;

    @end

    @implementation Deck

    -(NSMutableArray *)cards

    {

        if (!_cards){_cards=[[NSMutableArray alloc]init];

            

            

        }

        

        

        return _cards;

    }

    惰性初始化 惰性初始能提高内存使用效率

    -(void)addCard:(Card *)card atTop:(BOOL)atTop

    {

        if (atTop) {

            [self.cards insertObject:card atIndex:0];

            

        }else

        {

            [self.cards addObject:card];

    }

    }  

    [self.cards insertObject:card atIndex:0] insertObject ...  atIndex..   是在可变数组中插入一个对象,放在下标为 “atIndex:。。”的地方 消息的接受者NSMutableArray,传入参数为元素(id) 和  NSUIntege,没有返回对象;

    [self.cards addObject:card];   addObject:  在可变数组后增加一个对象,(位置是在数组的末尾) 消息接受者NSMutableArray,传入参数:元素(id),没有返回对象

    -(Card *)drawRandomCard

    {

        Card * rondomCard =nil;

        if ([self.cards count]) {

            unsigned index=arc4random() %[self.cards count];

            rondomCard=self.cards[index];

            [self.cards removeObjectAtIndex:index];

        }

        return rondomCard ;

    }

    [self.cards count] 求数组元素个数   消息接受对象是NSArray和子类对象 返回对象为number,没有传入参数

     a=arc4random()%x   求x范围类随机一个整数前提是x不能为0   函数

    [self.cards removeObjectAtIndex:index]; removeObjectAtIndex:number  剔除可变数组中下标为number的元素。 传入参数为USUInteger 消息的接受者为NSMutableArray,没有返回对象

    -(NSString *)conetens

    {

        NSArray *rankStrings= [PlayingCard rankString];

        return [rankStrings[self.rank] stringByAppendingString:self.suit];

        

    }

    [rankStrings[self.rank] stringByAppendingString:self.suit]; stringByAppendingString 是两个字符串合并成一个新的字符串 返回为NSString 接受对象为NSString 传入参数为NSString;

    -(void)setSuit:(NSString *)suit

    {

        if ([[PlayingCard validSuits] containsObject:suit]) {

            _suit=suit;

        }

    }

    [[PlayingCard validSuits] containsObject:suit] containsObject  检查对象是否包含在数组中  消息接受者为NSArray 传入参数为id 返回为 BOOL

    -(NSString *)suit

    {

        return  _suit ? _suit:@"?";

    }

      _suit ? _suit:@"?"就等于

    if(_suit){

     _suit}else

    {@"?"}

    @implementation PlayingCardDeck

    -(instancetype)init

    {

        self =[super init];

        if (self) {

            for (NSString *suit in [PlayingCard validSuits]) {

                for (NSUInteger rank=1; rank<=[PlayingCard maxRank]; rank++) {

                    PlayingCard *card =[[PlayingCard alloc]init];

                    card.rank =rank;

                    card.suit =suit;

                    [self addCard:card];

                }

            }

        }

        return self;

    }

    @end

        instancetype 表示的是返回和消息的接受者为同一类型;

        super 关键字是直接实现超类中的方法;

      

    -(instancetype)init

    {

        self =[super init];

        if (self) {....}

    return self;

    }是标准的重载的init方法模板,这个方法首先会调用父类的初始化方法。执行父类的初始化方法,使得继承的实例变量能正常初始化,必须将父类init方法的执行结果赋值给self,因为初始化过程改变了对象在内存中的位置(意味着引用将要改变)。

    初始化成功,返回值将是非空,通过IF语句可以验证,可以....的代码块位置放入自定义的初始化代码。通常可以在这个位置创建并初始化实例变量。ps 其实还是不是很明白希望后面敲到代码会明白。

    - (void)viewDidLoad {

        [super viewDidLoad];

        // Do any additional setup after loading the view, typically from a nib.

    }

    - (void)didReceiveMemoryWarning {

        [super didReceiveMemoryWarning];

        // Dispose of any resources that can be recreated.

    }

    视图的生命周期。后面讲解

    #import "ViewController.h"

    @interface ViewController ()

    @property (weak, nonatomic) IBOutlet UILabel *flipsLabel;

    @property (nonatomic) int flipCount;

    @end

    -(void)setFlipCount:(int)flipCount

    {

        _flipCount =flipCount;

        self.flipsLabel.text=[NSString stringWithFormat:@"Flip:%d",self. flipCount];

        NSLog(@"%d",self.flipCount);

    }

     IBoutlet表示view 的UILabel 联接到controller上,*flipsLabel的属性改变view的UILabel也会跟着相应的改变 

    [NSString stringWithFormat:@"Flip:%d",self. flipCount]; 创建一个新的字符串 @"Flip:%d",self. flipCount“  self. flipCount将代替%d出现在字符串内容中。 消息接受对象NSString(注意此方法为类方法,对象接受者为类 非实例) 传入对象 元素(id),返回为新的NSString实例;

    #import "ViewController.h"

    @interface ViewController ()

    @property (weak, nonatomic) IBOutlet UILabel *flipsLabel;

    @property (nonatomic) int flipCount;

    @end

    - (IBAction)touchCardButton:(UIButton *)sender {

        //UIImage *cardImage =[UIImage imageNamed:@"back"];

        if([sender.currentTitle length]){ [sender setBackgroundImage:[UIImage imageNamed:@"back"] forState:UIControlStateNormal];

        [sender setTitle:@"" forState:UIControlStateNormal];

        }else

        {

            [sender setBackgroundImage:[UIImage imageNamed:@"front"] forState:UIControlStateNormal];

            [sender setTitle:@"A♠︎" forState:UIControlStateNormal];

        }

        self.flipCount++;

    }

    IBAction 是用户交互View中动作所引发的一系列方法(产生的结果,比如用户按BUTTON按钮,会弹出另一个对话框,就需引用IBAction)

    [sender.currentTitle length] sender.currentTitle 是UIButton的元素属性,getter UIButton 中TItle的内容,得到一个字符串。

    length方法是表示字符串字母个数, 消息接受者为字符串,没有参数 ,返回为NSUInteger 

    [UIImage imageNamed:@"back"] 创造图片 图片名位"back",(首先要导入图片文件夹 改名字为 back 图片就再代码中应用)

    [sender setBackgroundImage:[UIImage imageNamed:@"back"] forState:UIControlStateNormal 设置UIButton 背景图片,

    并设置状态(规则 forState  一般都是UIControlStateNormal )  消息接受者为UIButton  传入参数为 UImage 和state  没有返回值

  • 相关阅读:
    hive on tez 异常
    mysql 集群异常
    Linux abrt-hook-ccpp使用CPU和内存太多,导致其他ambari server 服务启动时报内存溢出
    Ambari 配置kerberos以后,,启动hiveserver2异常
    spring-data-jpa更新数据InvalidDataAccessApiUsageException:Executing an update/delete query
    mac软件思维导图(2020-10-11)
    Error: Invalid or corrupt jarfile
    springboot使用xml配置dubbo读取yml占位符
    ElasticSearch批量写入时遇到EsRejectedExecutionException
    ZYNQ Linux 移植:包含petalinux移植和手动移植debian9
  • 原文地址:https://www.cnblogs.com/ppbrunt/p/4827762.html
Copyright © 2020-2023  润新知