首先,关于NSInteger和int的使用方式,这些使用完全是风格的个人风格的事。
数组的使用注意事项[objectAtIndex:firstObject]这样取出的对象,即使数组是空的,返回也是nil;如果是[objectAtIndex:0]或者arr[0]使用下标也称为语法糖🍬,如果数组是空的,会使程序崩溃。
指定初始化(Designated initializer) 像demo中那样
/* Designated initializer */
- (instancetype)initWithCardCount:(NSUInteger)cardCount
usingDeck:(Deck *)deck;
使用者再调用系统的init方法将不生成实例,所以只能使用我们声明好的指定初始化方法来创建实例。
- (instancetype)init
{
return nil;
}
在.h方法文件中,如果有一个只读的属性readonly,外界不能修改,只能读取
@property (nonatomic,readonly) NSInteger score;
在.m中私有修改,重新修改修饰符为readwrite 这个也是默认的修饰符
@interface CardMatchingGame ()
@property (nonatomic,readwrite) NSInteger score;
@end
这样操作后,就可以在.m中私有的修改和赋值了
通过xib或者storyboard和外界建立IBOutletCollection时,属性修饰符是strong,因为在视图里有一个strong pointer指向着控件本身,但是数组本身没有被任何对象持有
@property (strong, nonatomic) IBOutletCollection(UIButton) NSArray *cardButtons;