1.属性的内部实现原理:
assign
retain
copy
2.dealloc释放实例变量
dealloc 的方法 是为了setter方法里面 其实没有释放的实例变量
- (void)dealloc{
[_name release];
[_gender release];
[super dealloc];}
3.便利构造器方法
代码:
+ (instancetype)personWithName:(NSString *)name age:(NSInteger)age
gender:(NSString *)gender{
Person *p = [[Person alloc]initWithName:name age:age gender:gender];
// [p release];// 写在上面再return,p变成了野指针
return [p autorelease];// BingGo正解 MRC
// [p release];// 写在下面,先return,内存泄漏}
4.collection内存管理
1⃣️:
Person *p1 = [[Person alloc]init];
NSMutableArray *mArr1 =[NSMutableArray array];
// 将对象加入容器中
[mArr1 addObject:p1];
// p1 会被retain
NSLog(@"%lu",[p1 retainCount]);
2⃣️:
// 将对象移除容器
[mArr1 removeObject:p1];
// p1 会被release
NSLog(@"%lu",[p1 retainCount]);
[p1 release];
p1 = nil;
5多态:父类指针可以指向子类对象
NSString *str = [[NSMutableString alloc]init];// 子类对象,父类指针可以指向 NSLog(@"%@",[str className]); // 在编译时 NSString // 在运行时 NSMutableSting
// NSCFString
?意:
( 1 ):
/* 与ARC相比多了.m中的 1⃣️:- (void)dealloc{ [_name release]; [_num release]; [super dealloc];} 和main.m中的 2⃣️:[s1 release]; [s2 release]; s1 = nil;
s2 = nil;*/
(2):
NSMutableString *ms = @"123".mutableCopy;