Object-C 常用知識點(一)

以下是實際開發(fā)中用到的知識點,但是又想不起來,需要之注意的知識點



#pragma mark --isKindOfClass與isMemberOfClass

isKindOfClass 是對于繼承來講的 Teacher : Person : NSObject

teacher 是Teacher疮茄、Person、NSObject類或其子類

isMemberOfClass 是對于該類(Teacher)的成員來講的 判斷是不是由該類創(chuàng)建出來的

teacher 是Teacher類的成員,由Teacher類創(chuàng)建的 判斷的內(nèi)容更加精確抵代。

isSubclassOfClass 使用和isKindOfClass差不多/只不過一個是類方法,一個是對象方法



#pragma mark --?super刁憋、superClass采驻、class的區(qū)別

class:獲取方法調(diào)用者類名

superclass:獲取方法調(diào)用者的父類類名

super:編譯修飾符,不是指針,指向父類的 "標(biāo)志",

本質(zhì)還是拿到當(dāng)前對象去調(diào)用父類的方法

注意:super并不是拿到父類對象去調(diào)用父類方法



#pragma mark -- removeFromSuperview

// 移除contentView上所有的子控件

[self.contentView.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];



#pragma mark --?isEqual、==恕沫、isEqualToString

isEqual與==是一樣的 比較內(nèi)存地址

isEqualToString 比較對象的內(nèi)容

可以重寫對象的isEqual方法來欺騙系統(tǒng),通常用來完成從數(shù)組中刪除某個對象不能實現(xiàn) (對象一樣但是內(nèi)存地址不一樣)

也可以通過比較內(nèi)存是否一樣進行刪除的操作 --->重寫更符合封裝的原則

[persons removeObject:person]; 這樣返回YES的時候才會去刪除該對象均驶,返回NO認(rèn)為數(shù)組中沒有該對象昏兆,肯定不會刪除

在person.m中實現(xiàn)下面的方法

- (BOOL)isEqual:(id)object

{//系統(tǒng)默認(rèn)

//return self == object;

//當(dāng)一個人的name和年齡一樣的時候就認(rèn)為是同一個人

return [self.name isEqualToString:other.name] && [self.age isEqualToString:other.age];

}

#pragma mark --?nil? Nil? NULL? NSNull

nil:指向oc中對象的空指針 對象是空的 對象是存在的

Nil:指向oc中類的空指針 類是空的

NULL:指向其他類型的空指針,如一個c類型的內(nèi)存指針 還不是一個對象

NSNull:在集合對象中妇穴,表示空值的對象

1爬虱、NULL表示這個字符串不指向任何的東西,如果這時候你調(diào)用它的方法腾它,那么就會出現(xiàn)空指針異常跑筝。

2、""表示它指向一個長度為0的字符串瞒滴,這時候調(diào)用它的方法是安全的曲梗。

3、NULL不是對象妓忍,""是對象虏两,所以NULL沒有分配空間,""分配了空間

*******結(jié)論********

在OC/C++中世剖,nil可以調(diào)用任何的方法定罢,都不會報錯

NULL 表示地址是0

nil是指針指向NULL的空對象 nil是一個對象,但是是一個空對象

若obj為nil:

[obj message]將返回NO,而不是NSException

若obj為NSNull:

[obj message]將拋出異常NSException

#pragma mark --?NSDictionary

字典里面添加另外一個字典

[dictionaryM addEntriesFromDictionary: newDictionary];

判斷字典里面是否包含某一個key

if ([[dicitionary allKeys] containsObject:key])

#pragma mark --?NSString

判斷一個字符串是否為空旁瘫,首先就要確保他不是null(不是空對象),然后再判斷他的長度(是一個對象后再判斷長度)祖凫。

if(string != NULL && string.length != 0) {字符串里面才有東西}

if([string isKindOfClass:[NSNull Class]] || string.length == 0) {字符串為空}

控制臺打印的NSNumber和NSString是一樣的,需要注意!!!!!

#pragma mark --?自定義代碼塊存放路徑

在Finder文件夾command + Shift + G

~/Library/Developer/Xcode/UserData/CodeSnippets

換新電腦,直接替換文件夾中的內(nèi)容即可酬凳。

#pragma mark --?Xcode中的快捷鍵

停用斷點 command+control+\

當(dāng)前行插入斷點 command+\

當(dāng)前行啟用斷點 command+option+\

最小化 command+m

全部最小化 command+option+m

網(wǎng)絡(luò): command + Shift + C

強制重新啟動Mac control+command+右上角

便簽/Xcode的控制臺輸出 command+shift+Y

展示文件的真實位置 command+shift+J

打開emoji表情鍵盤 command + control + 空格

顯示隱藏文件 ?shift + Command + .

類文件之間的跳轉(zhuǎn) Ctrl + Command + 上箭頭 / 下箭頭

折疊代碼 command + option(Alt) + 左箭頭/右箭頭

退回 command + Ctrl + 左箭頭/右箭頭

當(dāng)前文件中全部選中當(dāng)前單詞 Ctrl + Command + E

命令行輸入 find . -name "*.m" | xargs wc -l 查找當(dāng)前路徑下的所有.m文件行數(shù)

#pragma mark --?網(wǎng)絡(luò)安全協(xié)議

URL的基本格式:協(xié)議://主機地址/路徑

不同的協(xié)議:代表不同的資源查找方式惠况,資源傳輸方式 http file mailto FTP

主機地址:存放資源的主機的IP地址

路徑:資源在主機中的具體位置

NSAppTransportSecurity

NSAllowsArbitraryLoads

#pragma mark --?window

//這樣獲得的窗口是目前顯示在屏幕最上面的窗口 取出來的可能不是keywindow 因為:鍵盤也是一個窗口(window)

UIWindow * window = [[UIApplication sharedApplication].windows lastObject];

UIWindow * window = [UIApplication sharedApplication].keyWindow; 通常用這個

#pragma mark --?static

C語言中的static

a. 修飾局部變量.

b. 修飾全局變量.

c. 修飾函數(shù).

Object-C中的static關(guān)鍵字.

a. static不能修飾屬性 也不能修飾方法.

b. static可以修飾方法中的局部變量.

如果方法中的局部變量被static修飾,那么這個變量就會被變成靜態(tài)變量.

存儲在常量區(qū) 當(dāng)方法執(zhí)行完畢之后 不會回收 下次再執(zhí)行這個方法的時候 直接使用 而不會再聲明了.

#pragma mark --?內(nèi)存中的五大區(qū)域

棧: 局部變量. 當(dāng)局部變量的作用域被執(zhí)行完畢之后,這個局部變量就會被系統(tǒng)立即回收.

堆: OC對象.使用C函數(shù)申請的空間.

BSS段: 未初始化的全局變量、靜態(tài)變量. 一旦初始化就回收 并轉(zhuǎn)存到數(shù)據(jù)段之中.

數(shù)據(jù)段: 已經(jīng)初始化的全局變量宁仔、靜態(tài)變量. 直到程序結(jié)束的時候才會被回收.

代碼段: 代碼. 程序結(jié)束的時候,系統(tǒng)會自動回收存儲在代碼段中的數(shù)據(jù).

棧稠屠、BSS段、數(shù)據(jù)段、代碼段存儲在它們中的數(shù)據(jù)的回收,是由系統(tǒng)自動完成的.不需要我們干預(yù).

#pragma mark --?單個對象的內(nèi)存泄露.

1).什么叫做內(nèi)存泄露?

指對象沒有被回收,該回收的時候而沒有被回收,一直駐留在內(nèi)存之中直到程序結(jié)束.

2).單個對象發(fā)生內(nèi)存泄露的原因.

-> 有對象的創(chuàng)建,沒有匹配的release

-> retain與release不匹配.

-> 在不恰當(dāng)?shù)臅r候,指針賦值為nil

-> 在方法中不當(dāng)使用retain.

3).如何做到單個對象被正確釋放

-> 有對象的創(chuàng)建就要有對象的release完箩。

-> 有多少個retain就要有多少個release赐俗。

-> 不要輕易的為1個指針賦值為nil 除非指針是1個野指針.

-> 在方法中不要輕易的為參數(shù)retain

#pragma mark - 枚舉

//枚舉的定義

typedef NS_ENUM(NSUInteger, ActionEnum) {

ActionEnumTop = 1 << 0,

ActionEnumBottom = 1 << 1,

ActionEnumLeft = 1 << 2,

ActionEnumRight = 1 << 3,

};

//調(diào)用

[self matchAction:ActionEnumTop | ActionEnumBottom];

//方法的處理

- (void)matchAction:(ActionEnum)actionEnum

{

NSLog(@"%ld", actionEnum);

if ((actionEnum & ActionEnumTop) == ActionEnumTop) {

NSLog(@"ActionEnumTop");

}

if ((actionEnum & ActionEnumBottom) == ActionEnumBottom) {

NSLog(@"ActionEnumBottom");

}

if ((actionEnum & ActionEnumLeft) == ActionEnumLeft) {

NSLog(@"ActionEnumLeft");

}

if ((actionEnum & ActionEnumRight) == ActionEnumRight) {

NSLog(@"ActionEnumRight");

}

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市弊知,隨后出現(xiàn)的幾起案子阻逮,更是在濱河造成了極大的恐慌,老刑警劉巖秩彤,帶你破解...
    沈念sama閱讀 218,607評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件叔扼,死亡現(xiàn)場離奇詭異,居然都是意外死亡漫雷,警方通過查閱死者的電腦和手機瓜富,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來降盹,“玉大人与柑,你說我怎么就攤上這事⌒罨担” “怎么了价捧?”我有些...
    開封第一講書人閱讀 164,960評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長涡戳。 經(jīng)常有香客問我结蟋,道長,這世上最難降的妖魔是什么渔彰? 我笑而不...
    開封第一講書人閱讀 58,750評論 1 294
  • 正文 為了忘掉前任嵌屎,我火速辦了婚禮,結(jié)果婚禮上恍涂,老公的妹妹穿的比我還像新娘宝惰。我一直安慰自己,他們只是感情好再沧,可當(dāng)我...
    茶點故事閱讀 67,764評論 6 392
  • 文/花漫 我一把揭開白布掌测。 她就那樣靜靜地躺著,像睡著了一般产园。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上夜郁,一...
    開封第一講書人閱讀 51,604評論 1 305
  • 那天什燕,我揣著相機與錄音,去河邊找鬼竞端。 笑死屎即,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播技俐,決...
    沈念sama閱讀 40,347評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼乘陪,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了雕擂?” 一聲冷哼從身側(cè)響起啡邑,我...
    開封第一講書人閱讀 39,253評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎井赌,沒想到半個月后谤逼,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,702評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡仇穗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,893評論 3 336
  • 正文 我和宋清朗相戀三年流部,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片纹坐。...
    茶點故事閱讀 40,015評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡枝冀,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出耘子,到底是詐尸還是另有隱情果漾,我是刑警寧澤,帶...
    沈念sama閱讀 35,734評論 5 346
  • 正文 年R本政府宣布拴还,位于F島的核電站跨晴,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏片林。R本人自食惡果不足惜端盆,卻給世界環(huán)境...
    茶點故事閱讀 41,352評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望费封。 院中可真熱鬧焕妙,春花似錦、人聲如沸弓摘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,934評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽韧献。三九已至末患,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間锤窑,已是汗流浹背璧针。 一陣腳步聲響...
    開封第一講書人閱讀 33,052評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留渊啰,地道東北人探橱。 一個月前我還...
    沈念sama閱讀 48,216評論 3 371
  • 正文 我出身青樓申屹,卻偏偏與公主長得像,于是被迫代替她去往敵國和親隧膏。 傳聞我的和親對象是個殘疾皇子哗讥,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,969評論 2 355

推薦閱讀更多精彩內(nèi)容