zoukankan      html  css  js  c++  java
  • IOS面试题--003

    1、    描述应用程序的启动顺序。
    willFinishLaunchingWithOptions
    didFinishLaunchingWithOptions
    applicationDidBecomeActive
    当电话过来了
    applicationWillResignActive//取消活跃状态
    电话结束或者取消.变为活跃状态
    点home
    取消活跃状态进到后台
    applicationDidEnterBackground
    从后台挂起后再次进入,先
    applicationWillEnterForeGround
    变为活跃状态

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

    会引起循环引用。
    这里delegate我们只是想得到实现了它delegate方法的对象,然后拿到这个对象的指针就可以了,我们不期望去改变它或者做别的什么操作,所以我们只要用assign拿到它的指针就可以了。
    而用retain的话,计数器加1。我们有可能在别的地方期望释放掉delegate这个对象,然后通过一些判断比如说它是否已经被释放,做一些操作。但是实际上它retainCount还是1,没有被释放掉,
    两者相互持有.RC永远不会变成0;dealloc不会执行,两者都不会释放.

    3、    使用UITableView时候必须要实现的几种方法?
    -(NSInteger)tableView:(UITableView*)tableView numberOfRowsInSection:(NSInteger)section;
    -(UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;


    4、    写一个便利构造器。
    -(id)initWithName(NSString *)name age(int)age sex(NSString *)sex
    {

    self = [super init];

    if (self){

        [self setName:name];

        [self setAge:age];
        [self setSex:sex];
    }
        return self;
    }

    +(id)initWithName(NSString *)name age(int)age sex(NSString *)sex
    {
      Person *p = [[Person alloc]initWithName:name age:age sex:sex];
        return [p autorelease];
    }


    5、UIImage初始化一张图片有几种方法?简述各自的优缺点。
    imageNamed:系统会先检查系统缓存中是否有该名字的Image,如果有的话,则直接返回,如果没有,则先加载图像到缓存,然后再返回。
    initWithContentsOfFile:系统不会检查系统缓存,而直接从文件系统中加载并返回。
    imageWithCGImage:scale:orientation 当scale=1的时候图像为原始大小,orientation制定绘制图像的方向。    截图使用


    6、    回答person的retainCount值,并解释为什么
    Person * per = [[Person alloc] init];
    self.person = per;

    RC= 2;
    per.retainCount = 1 ,
    set方法调用retain
    setter方法引用计数再+1

    7、    这段代码有什么问题吗:
    @implementation Person
    - (void)setAge:(int)newAge {
    self.age = newAge;
    }
    @end

    self.age在左边也是相当于setter方法,这就导致了死循环


    8、    这段代码有什么问题,如何修改
    for (int i = 0; i < someLargeNumber; i++) {
    @autoreleasePool{NSString *string = @”Abc”;
    string = [string lowercaseString];
    string = [string stringByAppendingString:@"xyz"];
    NSLog(@“%@”, string);
    }}
    内存泄露.方法自带的自动释放池来不及释放.
    在for循环中,自己添加内存池,产生一个释放一个
    上面的自动释放池是我手动添加的

    9、    截取字符串”20|http://www.baidu.com”中,”|”字符前面和后面的数据,分别输出它们。
    NSString *str = @“20|http://www.baidu.com”;
    NSArray*arr=[str componentsSeparatedByString:@“|”];
    NSLog(@“%@%@”,[arr objectAtIndex:0],[arr objectAtIndex:1]);

    10、    用obj-c写一个冒泡排序
    NSMutableArray *arr = [NSMutableArray arrayWithCapacity:10];
        for (int i = 0; i <10; i++) {
            [arr addObject:[NSNumber numberWithInt:arc4random()%1000]];
        }
        NSLog(@"====%@",arr);
        
        for (int i = 0; i < arr.count -1; i++){
            for(int j = 0 ;j < arr.count - i - 1; j++){
                NSNumber* num1 = [arr objectAtIndex:j];
                NSNumber* num2 = [arr objectAtIndex:j+1];
                if( [num1 compare:num2]==NSOrderedDescending){
                    [arr exchangeObjectAtIndex:j withObjectAtIndex:j+1];
                }
            }
        }
        NSLog(@"------%@",arr);



  • 相关阅读:
    phpmyadmin和网页上面的乱码问题
    整理: Android HAL
    warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]-给char* 形参 传入 宏定义字符串
    ubuntu 输入法莫名其妙变繁体
    linux内核版本号添加字符/为何有时会自动添加“+”号以及怎么去掉
    Unable to handle kernel NULL pointer dereference at virtual address 00000000
    Ubuntu 18.04 安装 Samba 服务器及配置
    linux查看版本信息
    图解:电压掉电监测电路如何实现检测工作?
    精密全波整流+一阶RC滤波器检测市电电压
  • 原文地址:https://www.cnblogs.com/xukunhenwuliao/p/3576187.html
Copyright © 2011-2022 走看看