最近知识点 1
? ?今天是个好日子,入住新地方,深夜发帖纪念一下^^
? ? 前段时间面试,有些知识点后知后觉,总结一二。
?
1.delegate和notification的区别?
? ? 之前看文档的main difference,跟我以前想的差不多,它们只是功能上的区别,一对一和一对多:
- (void)logTitle { NSLog(@"title %@",title);}- (void)testTitle { a = [[ClassA alloc] init]; NSString *str = [[NSString alloc] initWithFormat:@"%d",888]; a.title = str; [str release]; title = a.title; [a release]; [self logTitle]; [self logTitle]; //[self performSelector:@selector(logTitle) withObject:nil afterDelay:0];}
? ? ?如上,ClassB的testTitle使用A对象,A内部自定义title的set/get,get是简单返回title变量,当[a release];之后,a会dealloc,从而title被release,此时B调logTitle就会bad_access(调两次是因为title release后并没有立即释放,调第二次才error,跟输出两次retainCount类似,第一次还能输出1,第二次error,其中原因未明),因为B中只是简单把A返回的title赋值给B中的变量。要解决这个问题,要么B把title retain一次,要么用文档的方法,getter返回[[title retain] autorelease]。
?
? ? ?至此,OK^^