iOS 面试题(五)

  1. 描述应用程序的启动顺序
   (1) 程序进入main函数创建UIApplication实例和UIApplication代理实例
   (2)在UIApplication代理实例中重写启动方式,设置根视图ViewController
     (3)在第一个ViewController中添加控件,实现应用程序界面
2   为什么很多内置类如UITableViewControl的delegate属性都是assign而不是retain?请举例说明。
  • 因为retain会导致循环索引导致内存泄露,

    并且此类型的内存泄露无法被Instrument发现,极难调试

     

     比如 :对象A创建并引用对象B,对象B创建并引用对象C,对象C创建并引用到对象B ,这个时候对象B的引用计数是2 ,而C的引用计数是1,当A不用B的时候,释放B的所有权,这个时候C还引用B所以B不会释放,引用计数为1;因为B也引用着对象C,B不释放,那么C就不释放,所以他们的引用计数都为1,并且永远不会被释放,所以形成了循环引用

3  使用UITableView时候必须要实现的几种方法
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section;
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView;
 
4     写一个便利构造器方法
   + (id)studentWithName:(NSString *)name andAge:(NSInter)age{
   Student *student = [[Student alloc]initWithName:name andAge:age];

   return [student autorelease];

   }
5  UIImage初始化一张图片有几种方法?简述各自的优缺点。

1 imageNamed  是UIImage的类方法  系统先检查缓存中是否存在该名字的图片,如果存在直接返回,如果系统缓存中不存在该名字的图像,则会先加载到缓存,再返回对象 

这种机制试用于那种频繁用到界面贴图的加载,若在短时间内频繁加载一些一次性的图像的话,最好不要使用这种方法
2  imageWithContentsOfFile 和intWithContentsOfFile 方法  与前一个方法相同都是从文件系统加载图像,但是不会经过系统缓存,直接加载并返回

3 imageWithCGImage:scale:orientation方法 该方法使用CGImage创建image,在创建的时候可以指定图片与原尺寸的倍数(scale参数)orientation指定新的图像的绘制方向

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值