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: 僅加載圖片