Object-C_问题记录

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: 仅加载图片
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.OC里用到集合类是什么? 基本类型为:NSArray,NSSet以及NSDictionary 可变类型为:NS...
    轻皱眉头浅忧思阅读 1,402评论 0 3
  • 1、请看下面一段代码,请问访问a,b,c 3种类型变量的效率从高到低依次是 (B) A. cbaB. abcC. ...
    AlanGe阅读 4,996评论 0 7
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,457评论 25 709
  • 七夕,于我而言不是中国式的情人节,而是你的生日。 今天,于我而言是对你道生日快乐的第10个年头。 与你于我,是最珍...
    仙人掌不仙阅读 200评论 0 0
  • 编写Android.mk中的LOCAL_SRC_FILES的终极技巧 :http://blog.csdn.net...
    Aberstin阅读 128评论 0 0