美文网首页
Object-C_问题记录

Object-C_问题记录

作者: 陈胜华 | 来源:发表于2016-09-19 16:28 被阅读18次

    import和include的区别 ?

    • 当我们在代码中使用两次#include的时候会报错:因为#include相当于拷贝头文件中的声明内容,所以会报重复定义的错误
    • 但是使用两次#import的话,不会报错,所以他可以解决重复导入的问题,他会做一次判断,如果已经导入一次就不导入了

    setter/getter方法出现死循环原因 ?

    @implementation Person
    
    - (void)setAge:(NSInteger)age{
        //这里要注意,如果我们定义的全局变量是age而不是_age的话
        //这里不能用age = age进行赋值
        //但是也不能使用self.age = age,因为self.age等价于[self setAge:age]这样就会出现死循环了
        //所以我们在定义全局变量的时候一般都会加上一个下划线以便区分
        _age = age;
        NSLog(@"setAge is Execute");
    }
    - (NSInteger) age{
        NSLog(@"getAge is Execute");
        return _age;
    }
    @end
    

    经常犯的一个错误:unrecognized selector sent to instance 0xXXXXX?

    • 原因:在xxx.h中定义了xxxMethod方法,但是没有在xxx.m中进行实现,在main.m中进行调用就报了这个错误,但是编译的时候是没有报错的。

    isKindOfClass和isMemberOfClass方法区别 ?

    Person *rose = [[Person alloc] init];
    //判断rose是否属于Person类创建的
    BOOL isBelongTo = [rose isMemberOfClass:[Person class]];//返回YES
    BOOL isBelongTo = [rose isMemberOfClass:[NSObject class]];//返回NO
    
    //判断一个类是不是某个类的子类/父类
    BOOL isBelongTo = [rose isKindOfClass:[Person classs]];//返回YES
    BOOL isBelongTo = [rose isKindOfClass:[NSObject class]];//返回YES 
    

    了解 imageNamed: 与 imageWithContentsOfFile:的差异

    • imageNamed: 适用于会重复加载的小图片,因为系统会自动缓存加载的图片
    • imageWithContentsOfFile: 仅加载图片

    相关文章

      网友评论

          本文标题:Object-C_问题记录

          本文链接:https://www.haomeiwen.com/subject/kmgsettx.html