NSArray:不可变数组 NSMuttableArray:NSArraiany的子类,可变数组
//惰性实例化
-(NSMuttableArray *)cards{ };//如果cards的初始化是在-(void)addcard: atTop 方法中的话,那么每一次调用此方法的时候,都会初始化self.cards ,这样造成了一定的垃圾,因此,在cards的getter()方法中,判断cards是否为空,为空就实例化,不为空直接返回。
_cards=[[NSMutableArray alloc] init]; //alloc:在堆中分配内存;init:用于初始化内存,让_cards成为一个合理化的数组。
这样在每次调用self.cards时,_cards就不会为空,但至少是个空数组。
//求取一个随机数
unsigsned index=arc4random( )% x; x:一个整数 //c库函数
这里需要考虑数组元素为空的情况:[self.cards count]==0;等于0时,数组中已经没有元素,所以,self.cards[index] 会报错:数组越界,所有完善后如下图:
+(NSArray *)validSuits{ };
+修饰的方法是类方法,意味着是将方法发送给类,而不是实例对象,所以不能用任何实例变量
类方法作用:1、创建事物 2、工具方法。
类方法的调用:[类名 类方法名];—〉[PlayingCard validSuits];