1.nonatomic (非线性) 同该属性一同的getter 和setter 不是线性安全的,你不能有两线程,同时尝试设置该属性
2.self 消息的接受者自己,首先的理解什么是消息的接受者自己 [car1 play] car1表示消息的接受者 self.speed 表示是car1.speed, 问题来了,为什么不直接用car1.speed,因在创建Car 类的时候 你是无法知道你Car类创造的实例的名字,所有当Car类方法中要用到本来自己的属性值,就用self 代替自己。
3.a+=b a=a+b
4.a-=b a=a-b
5.a/=b-c a=a/(a-c)
6.for (变量 in 数组)
{
循环主体
};
int main(int argc, char * argv[]) {
@autoreleasepool {
NSArray *array=@[@"a",@"t",@"c"];
for (NSString * string in array) {
NSLog(@"%@",string);
}
}
}
测试结果 :
2015-09-21 10:29:27.149 NSArray[2056:122815] a
2015-09-21 10:29:27.152 NSArray[2056:122815] t
2015-09-21 10:29:27.152 NSArray[2056:122815] c
当执行for 循环时,它会先将数组的第一个元素赋值给指定的变量,并执行循环主体,然后将第二个元素赋值给变量,并执行循环主体,这样一直持续下去,直到数组的所有元素都已赋给变量。
写了一点简单的类 Card
#import <Foundation/Foundation.h>
@interface Card : NSObject
@property (nonatomic,strong)NSString *conetens;
@property (nonatomic,getter=isMatched)BOOL match;
@property (nonatomic,getter=isChosen)BOOL chose;
-(int)match:(NSArray *) othercards;
@end
@implementation Card
-(int)match:(NSArray *)othercards
{
int score=0;
for (Card *card in othercards) {
if ([card.conetens isEqualToString:self.conetens]) {
score=1;
}
}
return score;
}
@end
理解isEqualToString方法 ,对比两字符串,得出一个BOOL的结果。