内存管理:copy,拷贝的时候不会对引用计数器作出任何改变,要遵循NSCopying协议,实现NSCopying协议中的方法。因为是拷贝,所以定义的成员属性是等于self->成员属性。
用assign也不会加1;
NSString类型的retainCount为-1 (NSString 存储的内容是变量(不可以被改变));
内存管理ARC:(不用空间就释放掉)
strong-----强引用,强指针--作用:有强指针指向之后,就不会把内存自动释放
weak-------弱引用,弱指针--作用:会释放掉,然后指向空
线程安全管理:
@property(nomatic)不加线程锁(一般使用不加线程锁)性能高
@property(atomic) 加线程锁,性能差
oc框架类库:
Foundation(字符串,容器, NSData)
NSString ---不可变
NSMutableString--可变
NSString *str1=@"hello";
NSString *str=[NSString stringWithString:str1];// 赋值其他NSString对象给一个对象
NSLog(@"%@",str);
NSString *str2=[[NSString alloc]initWithFormat:@"%s","hello" ];
//计算长度
NSLog(@"%lu",[str2 length]);
//追加字符串
NSString *str3=[str2 stringByAppendingString:@"oc"];
NSLog(@"%@",str3);
//str2里面的值是不会改变的,改变的只是str3的值
//删除----NSString是只读的,不可修改。所以不可能删除里面的个别的字符
NSMutableString *mustr=[[NSMutableString alloc]initWithFormat:@"1234"];
NSLog(@"%@",mustr);
NSRange range=NSMakeRange(0, 2);//第一个参数是从哪个位置开始,第二个参数是长度,从0开始
[mustr deleteCharactersInRange:range];//删除
NSLog(@"%@",mustr);
[mustr appendString:@"hello"];// 追加
NSLog(@"%@",mustr);
[mustr setString:@"5-6-7-8"];// 替换
NSLog(@"%@",mustr);
//比较
if ([mustr compare:@"5678"]==NSOrderedSame) {
NSLog(@"same");
}else{
NSLog(@"not same");
}
//查找 并进行替换
NSRange range1=[mustr rangeOfString:@"-"];// 查找
while (range1.length!=0) {
[mustr replaceCharactersInRange:range1 withString:@"."];//替换
range1=[mustr rangeOfString:@"-"];
}
NSLog(@"%@",mustr);
结果:
2015-11-19 14:38:19.674 Foundation框架-- NSString NSMutableString[1347:90606] hello
2015-11-19 14:38:19.674 Foundation框架-- NSString NSMutableString[1347:90606] 5
2015-11-19 14:38:19.675 Foundation框架-- NSString NSMutableString[1347:90606] hellooc
2015-11-19 14:38:19.675 Foundation框架-- NSString NSMutableString[1347:90606] 1234
2015-11-19 14:38:19.675 Foundation框架-- NSString NSMutableString[1347:90606] 34
2015-11-19 14:38:19.675 Foundation框架-- NSString NSMutableString[1347:90606] 34hello
2015-11-19 14:38:19.675 Foundation框架-- NSString NSMutableString[1347:90606] 5-6-7-8
2015-11-19 14:38:19.675 Foundation框架-- NSString NSMutableString[1347:90606] not same
2015-11-19 14:38:19.675 Foundation框架-- NSString NSMutableString[1347:90606] 5.6.7.8
以特殊字符分割字符串然后输出
string是:Application is foundation iphoneis foundation mac
NSArray *array=[string componentsSeparatedByString:@" "];
for (int i=0; i<array.count; i++) {
NSLog(@"%@",array[i]);
}
结果:
2015-11-19 15:45:12.550 Foundation框架-- NSString NSMutableString[1629:107125] Applications
2015-11-19 15:45:12.551 Foundation框架-- NSString NSMutableString[1629:107125] is
2015-11-19 15:45:12.551 Foundation框架-- NSString NSMutableString[1629:107125] foundation
2015-11-19 15:45:12.551 Foundation框架-- NSString NSMutableString[1629:107125] iphone
NSArray---- 用于固定的数据
NSMutableArray------用于不确定的数据
NSMutableArray *array=[[NSMutableArray alloc]init];
[array addObject:@"aaa"];
[array addObject:@"bbb"];
[array addObject:@"ccc"];
[array addObject:@"hehe"];
//要想输出汉字就要重写方法: - (NSString *)descriptionWithLocale:(id)locale
NSLog(@"%@",array);
[array addObjectsFromArray:array];//把一个数组添加到另一个数组
//[array removeObject:@"aaa"];//删除数组中的元素
[array removeObject:@"aaa" inRange:NSMakeRange(3,3)];//删除指定位置的元素,第一个参数是位置,位置从零开始,第二个参数是长度,要查找的长度,就是在第二个参数的长度范围内查找
NSLog(@"%@",array);
//查找再删除
NSUInteger integer=[array indexOfObject:@"bbb" inRange:NSMakeRange(4, 3)];
[array removeObjectAtIndex:integer];
NSLog(@"%@",array);
NSNumber -----使用NSNumber对象来创建和初始化不同类型的数字对象
学生管理系统:学生信息(保存,查询,删除,添加,修改),学生成绩(能查询,修改,显示)