2 xcode 5

_cards实例变量最开始是0,因为所有objective-C中的所有实例变量都从0开始,包括指针

也就是说它没有指向任何东西,没有数组

[self.cards addObject:card];程序不会崩溃,但也不会做任何事情,因为你可以将信息传给nil

在堆中分配一个数组,并指向它

- (NSMutableArray *)cards

{

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

return _cards;

}

在堆中分配空间,并赋值给实例变量,alloc分配内存,init初始化内存,让它成为一个合理的数组

惰性实例化,就是我们惰性地等到最后一秒再实例化

arcRandom()     mod取余

方括号[ ]是数组访问的标准语法 self.cards[index] = [self.cards objectAtIndex:index];

objectAtIndexSubScript

%[self.cards count]  如果为0的话,会产生错误,注意这一点

数组是空数组的话,则下标0处没有对象,会产生数组下标越界错误

初始化你想得到的默认值,然后设置,然后返回,如果不幸失败的话,它会返回合适的默认值,这是一种编程风格

只是在局部使用时,不要使用NSNumber,NSNumber通常是为了将其传递给方法

Unicode对这四种花色都有相应字符

NSUinteger 对于iPhone5s来说是64位无符号整型

%@ 代表一个对象 [NSString stringWithFormat:@"%d%@", self.rank, self.suit];

NSArray *rankString = @[@"?", @"A", @"2", ..., @"J", @"Q", @"K"];

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

我们这门课中碰到的字符串都是字符串对象,而不是 const char*

@的作用是让字符串成为字符串对象

当同时实现setter和getter时,@synthesize

简洁性和易理解性,比性能重要10倍

+方法是一个类方法,这意味着你将它发送给类,而不是实例对象self

适用于两类,一是创建东西

调用方法[类名 类方法]

instancetype 将会返回一个消息发送对象一样的类型  return self;

调用父类初始化器对self赋值 self = [super init];

一般我们会检验父类的init返回,确保它能被初始化,因为任何初始化器无法初始化自身的时候,它会返回nil,这让所有人知道,你的任意子类,或任何人尝试分配和初始化你,你无法创建一个结构良好的对象。这将确保我的父类在我调用init时,如果无法初始化自身,我就不用尝试初始化自己

init没有参数,也可以有参数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值