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: 仅加载图片
网友评论