每天一点iOS知识回顾5

1.ViewController 的alloc,loadView, viewDidLoad,viewWillAppear,viewDidUnload,dealloc、init分别是在什么时候调用的?在自定义ViewController的时候这几个函数里面应该做什么工作?

Alloc 申请内存空间的时候调用. 初始化当前的ViewController
Init视图初始化的时候,赋一些程序的初始值
LoadView加载视图的时候调用  self.view != nil的时候,执行loadview,加载一些自己的视图
ViewDidLoad视图已经加载的时候调用(网络数据之类的,刷新表之类)(添加通知)
ViewWillAppear视图将要出现的时候(tabbar切换)
废弃方法:ViewDidUnload视图已经卸载(内存不足)(数据释放掉)(移除通知)现在是disd receive memory waring
Dealloc视图已经销毁的时候(self.view = =nil)自己拥有的实例变量释放掉
第三页

2.描述应用程序的启动顺序。

总结程序启动的过程如下:
程序入口main函数创建UIApplication实例和UIApplicationDelegate实例。
在UIApplication代理实例中重写启动方法,设置第一视图ViewController。
在第一ViewController中添加控件,实现应用程序界面( UI展现)。

3.为什么很多内置类如UITableViewControl的delegate属性都是assign而不是retain?请举例说明。

为了避免循环饮用释放不掉的问题。
例子:对象a创建并引用了对象b.对象b创建并引用了对象c.对象c创建并引用了对象b.这时候b和c的引用计数分别是2和1。当a不再使用b,调用release释放对b的所有权,因为c还引用了b,所以b的引用计数为1,b不会被释放。b不释放,c的引用计数就是1,c也不会被释放。从此,b和c永远留在内存中。或者:Student * str=[];
Teacher *teacher=[[Teacher alloc] init];
Student * student=[[Student alloc] init];
teacher.delegate=student;
student.delegate= teacher;
在teacher中dealloc会release当前的Delegate,就会触发student对象release,继而也会导致student执行dealloc,在student中也会release自己的delegate,产生循环了。

4.使用UITableView时候必须要实现的几种方法?

-(NSInteger)tableView:(UITableView*)tableViewnumberOfRowsInSection:(NSInteger)section; 这个方法返回每个分区的行数
-(UITableViewCell*)tableView:(UITableView*)tableViewcellForRowAtIndexPath:(NSIndexPath)indexPath;这个方法返回我们调用的每一个单元格

5.写一个便利构造器。

+(id)Person{
Person *person=[Person alloc]init];
Return [person autorelease];

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值