iOS開發(fā)知識(shí)點(diǎn)

get請(qǐng)求和post請(qǐng)求

提交用戶的隱私數(shù)據(jù)一定要使用POST請(qǐng)求,相對(duì)于POST請(qǐng)求而言倘屹,GET請(qǐng)求的所有參數(shù)都直接暴露在URL中骂倘,請(qǐng)求的URL一般都會(huì)記錄在服務(wù)器的訪問日志中睡陪,而服務(wù)器的訪問日志是黑客攻擊的主要對(duì)象之一掺涛。
這里所說的用戶隱私數(shù)據(jù)一般來說是指登錄密碼庭敦,銀行賬號(hào)等等。

URL不允許寫中文怎么辦

可以通過轉(zhuǎn)碼的方式進(jìn)行解決

urlStr= [urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

如何判斷一個(gè)實(shí)例是否屬于特定的子類型

可以使用類型操作符(is)來進(jìn)行判斷薪缆,如果實(shí)例屬于那個(gè)子類型秧廉,類型操作符返回true,反則的話返回false

let str = "abcdef"
if str is String 
{
        print("string")
}
else
{
        print("noString")
}

遍歷所有的cell

for(NSIndexPath *cellIndex in [self.tableView indexPathsForVisibleRows])
TableViewCell *otherCell = [self.tableView cellForRowAtIndexPath:cellIndex];

棧和堆的理解

管理方式:
對(duì)于棧來講拣帽,是由編譯器自動(dòng)管理疼电,無需我們手工控制;對(duì)于堆來說诞外,釋放工作由程序員控制澜沟,容易產(chǎn)生memory leak。
申請(qǐng)大邢恳辍:
棧:在Windows下,棧是向低地址擴(kuò)展的數(shù)據(jù)結(jié)構(gòu),是一塊連續(xù)的內(nèi)存的區(qū)域刊苍。這句話的意思是棧頂?shù)牡刂泛蜅5淖畲笕萘渴窍到y(tǒng)預(yù)先規(guī)定好的既们,在WINDOWS下,棧的大小是2M(也有的說是1M正什,總之是一個(gè)編譯時(shí)就確定的常數(shù))啥纸,如果申請(qǐng)的空間超過棧的剩余空間時(shí),將提示overflow婴氮。因此斯棒,能從棧獲得的空間較小盾致。
堆:堆是向高地址擴(kuò)展的數(shù)據(jù)結(jié)構(gòu),是不連續(xù)的內(nèi)存區(qū)域荣暮。這是由于系統(tǒng)是用鏈表來存儲(chǔ)的空閑內(nèi)存地址的庭惜,自然是不連續(xù)的,而鏈表的遍歷方向是由低地址向高地址穗酥。堆的大小受限于計(jì)算機(jī)系統(tǒng)中有效的虛擬內(nèi)存护赊。由此可見,堆獲得的空間比較靈活砾跃,也比較大骏啰。
碎片問題:
對(duì)于堆來講,頻繁的new/delete勢(shì)必會(huì)造成內(nèi)存空間的不連續(xù)抽高,從而造成大量的碎片判耕,使程序效率降低。對(duì)于棧來講翘骂,則不會(huì)存在這個(gè)問題祈秕,因?yàn)闂J窍冗M(jìn)后出的隊(duì)列,他們是如此的一一對(duì)應(yīng)雏胃,以至于永遠(yuǎn)都不可能有一個(gè)內(nèi)存塊從棧中間彈出
分配方式:
堆都是動(dòng)態(tài)分配的请毛,沒有靜態(tài)分配的堆。棧有2種分配方式:靜態(tài)分配和動(dòng)態(tài)分配瞭亮。靜態(tài)分配是編譯器完成的方仿,比如局部變量的分配。動(dòng)態(tài)分配由alloca函數(shù)進(jìn)行分配统翩,但是棧的動(dòng)態(tài)分配和堆是不同的仙蚜,他的動(dòng)態(tài)分配是由編譯器進(jìn)行釋放,無需我們手工實(shí)現(xiàn)厂汗。
分配效率:
棧是機(jī)器系統(tǒng)提供的數(shù)據(jù)結(jié)構(gòu)委粉,計(jì)算機(jī)會(huì)在底層對(duì)棧提供支持:分配專門的寄存器存放棧的地址,壓棧出棧都有專門的指令執(zhí)行娶桦,這就決定了棧的效率比較高贾节。堆則是C/C++函數(shù)庫(kù)提供的,它的機(jī)制是很復(fù)雜的衷畦。

簡(jiǎn)而言之栗涂,操作系統(tǒng)使用stack 段中的指針值訪問heap 段中的對(duì)象。如果stack 對(duì)象的指針沒有了祈争,則heap 中的對(duì)象就不能訪問斤程。這也是內(nèi)存泄露的原因。

assign得到的b是棧和堆都跟a相同
retain得到的b是在棧上重新開了一個(gè)地址菩混,和a共同管理在堆上的內(nèi)容
copy得到的b是棧和堆都開辟新的地址忿墅。

guard的使用

//檢查身份證扁藕,如果身份證沒帶,則不能進(jìn)入考場(chǎng)
guard let id = person["id"]else
{
    print("沒有身份證疚脐,不能進(jìn)入考場(chǎng)")
    return
}
//身份證和準(zhǔn)考證齊全亿柑,方可進(jìn)入考場(chǎng)
      print("您的身份證號(hào)為:\(id),準(zhǔn)考證號(hào)為:\(examNumber)亮曹。請(qǐng)進(jìn)入考場(chǎng)!")

這里值得注意的是橄杨,id和examNumber可以在guard語句之外使用,也就是說當(dāng)guard對(duì)其表達(dá)式進(jìn)行驗(yàn)證后照卦,id和examNumber可在整個(gè)方法的作用域中使用式矫,并且是解包后的。

tableview左側(cè)空白處理

在ios7中役耕,UITableViewCell左側(cè)會(huì)有默認(rèn)15像素的空白采转。這時(shí)候,設(shè)置setSeparatorInset:UIEdgeInsetsZero 能將空白去掉瞬痘。
但是在ios8中故慈,設(shè)置setSeparatorInset:UIEdgeInsetsZero 已經(jīng)不起作用了。下面是解決辦法
首先在viewDidLoad方法加入以下代碼:

 if ([self.tableView respondsToSelector:@selector(setSeparatorInset:)]) {
[self.tableView setSeparatorInset:UIEdgeInsetsZero];
}
if ([self.tableView respondsToSelector:@selector(setLayoutMargins:)]) {
[self.tableView setLayoutMargins:UIEdgeInsetsZero];
}

然后在UITableView的代理方法中加入以下代碼

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
if ([cell respondsToSelector:@selector(setSeparatorInset:)]) {
[cell setSeparatorInset:UIEdgeInsetsZero];
}
if ([cell respondsToSelector:@selector(setLayoutMargins:)]) {
[cell setLayoutMargins:UIEdgeInsetsZero];
}
}

UIView的clipsToBounds和CALayer的的masksToBounds之間的關(guān)系??

clipsToBounds
是指視圖上的子視圖,如果超出父視圖的部分就截取掉,
masksToBounds
卻是指視圖的圖層上的子圖層,如果超出父圖層的部分就截取掉

圖像的拉伸方法

- (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:

關(guān)于GCD的一些常用方法

// 創(chuàng)建目標(biāo)隊(duì)列
let workingQueue = dispatch_queue_create("my_queue", nil)

// 派發(fā)到剛創(chuàng)建的隊(duì)列中框全,GCD 會(huì)負(fù)責(zé)進(jìn)行線程調(diào)度
dispatch_async(workingQueue) {
    // 在 workingQueue 中異步進(jìn)行
    print("努力工作")
    NSThread.sleepForTimeInterval(2)  // 模擬兩秒的執(zhí)行時(shí)間

    dispatch_async(dispatch_get_main_queue()) {
        // 返回到主線程更新 UI
        print("結(jié)束工作察绷,更新 UI")
    }
}

多線程單例

dispatch_once_t必須是全局或static變量
//靜態(tài)變量,保證只有一份實(shí)例津辩,才能確保只執(zhí)行一次
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
   //單例代碼 
});

關(guān)于時(shí)間的一些宏

#define NSEC_PER_SEC 1000000000ull
#define USEC_PER_SEC 1000000ull
#define NSEC_PER_USEC 1000ull

NSEC:納秒拆撼。
USEC:微秒。
SEC:秒
PER:每

    1   NSEC_PER_SEC喘沿,每秒有多少納秒闸度。
    2   USEC_PER_SEC,每秒有多少毫秒蚜印。(注意是指在納秒的基礎(chǔ)上)
    3   NSEC_PER_USEC莺禁,每毫秒有多少納秒。

mac使用技巧

在Mac下想知道某個(gè)目錄下各個(gè)文件和子目錄各占多少空間窄赋,不需要一個(gè)一個(gè)去查看哟冬。打開終端,在該目錄下輸入:du -sh *寝凌,結(jié)果是啥柒傻,你們?cè)囋嚲椭懒?/p>

很多剛開始使用Mac的用戶,一般都知道Spotlight功能较木,快速定位和檢索文件。事實(shí)上用這個(gè)功能還可以快速打開程序青柄。通過ctrl+space呼出伐债,輸入通訊或cont预侯,都可以找到通訊錄這個(gè)程序,回車即可打開

shift+command+3:全屏幕截圖峰锁;shift+command+4:通過鼠標(biāo)選取截圖萎馅。

1、Mac的原生輸入法
我在Mac下曾經(jīng)使用過很多輸入法虹蒋,包括FIT糜芳、搜狗、QQ魄衅、QIM等峭竣,這是因?yàn)镸ac的原生輸入法太不給力了。但是OS X升級(jí)到Mountain Lion之后晃虫,原生輸入法有了很大的改進(jìn)皆撩,慢慢的,現(xiàn)在最常用的變成了原生輸入法哲银,今天就為大家介紹一些Mac輸入法的操作技巧
中英文混合輸入扛吞,輸入中文的時(shí)候,打開caps lock鍵荆责,可以直接輸入英文滥比,關(guān)掉又切換回中文
選詞,通過-+號(hào)可以切換字或詞做院,通過[]可以展開候選詞列表并進(jìn)行切換
打開輸入法偏好設(shè)置盲泛,可以設(shè)置自動(dòng)校正模糊音
用 ' 可以進(jìn)行手動(dòng)分詞,比如fang'an(方案)
適用shift + 6可以輸入表情符號(hào)山憨,比如(☆_☆)凸-

2查乒、Safari的標(biāo)簽
當(dāng)你想在新的標(biāo)簽頁打開網(wǎng)頁時(shí),只需要按住command鍵郁竟,點(diǎn)擊鏈接即可
使用 Multi-Touch 手勢(shì)在標(biāo)簽頁中切換玛迄。在觸控板上,雙指開合即可顯示你打開的標(biāo)簽頁棚亩。在標(biāo)簽視圖中蓖议,雙指輕掃可瀏覽不同標(biāo)簽頁
通過shift+command+左右方向鍵,可以快速在Safari中打開的標(biāo)簽中進(jìn)行切換讥蟆。

設(shè)置全局打印

#ifdef DEBUG
#define DMLog(...)NSLog(@"%s%@",__PRETTY_FUNCTION__,[NSString stringWithFormat:__VA_ARGS__])
#else
#define DMLog(...) do { } while (0)
#endif

讓Xcode的控制臺(tái)支持LLDB類型的打印

  1. touch ~/.lldbinit
  2. echo display @import UIKit >> ~/.lldbinit
  3. echo target stop-hook add -o "target stop-hook disable" >> ~/.lldbinit
    刪除
    其實(shí)很簡(jiǎn)答, 看第一條命令touch ~/.lldbinit 就是在根目錄下創(chuàng)建了一個(gè)隱藏文件.lldbinit , 然后刪除這個(gè)文件就搞定啦. 打開終端然后, 在終端輸入 :
    rm ~/.lldbinit 命令即可

讓程序在后臺(tái)長(zhǎng)久運(yùn)行的示例代碼:

// AppDelegate.h 文件
@property (assign, nonatomic) UIBackgroundTaskIdentifier backgroundUpdateTask;

// AppDelegate.m 文件
- (void)applicationDidEnterBackground:(UIApplication *)application
{
    [self beingBackgroundUpdateTask];
    // 在這里加上你需要長(zhǎng)久運(yùn)行的代碼
    [self endBackgroundUpdateTask];
}

- (void)beingBackgroundUpdateTask
{
    self.backgroundUpdateTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
        [self endBackgroundUpdateTask];
    }];
}

- (void)endBackgroundUpdateTask
{
    [[UIApplication sharedApplication] endBackgroundTask: self.backgroundUpdateTask];
    self.backgroundUpdateTask = UIBackgroundTaskInvalid;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末勒虾,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子瘸彤,更是在濱河造成了極大的恐慌修然,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異愕宋,居然都是意外死亡玻靡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門中贝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來囤捻,“玉大人,你說我怎么就攤上這事邻寿⌒粒” “怎么了?”我有些...
    開封第一講書人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵绣否,是天一觀的道長(zhǎng)誊涯。 經(jīng)常有香客問我,道長(zhǎng)枝秤,這世上最難降的妖魔是什么醋拧? 我笑而不...
    開封第一講書人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮淀弹,結(jié)果婚禮上丹壕,老公的妹妹穿的比我還像新娘。我一直安慰自己薇溃,他們只是感情好菌赖,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著沐序,像睡著了一般琉用。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上策幼,一...
    開封第一講書人閱讀 51,443評(píng)論 1 302
  • 那天邑时,我揣著相機(jī)與錄音,去河邊找鬼特姐。 笑死晶丘,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的唐含。 我是一名探鬼主播浅浮,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼捷枯!你這毒婦竟也來了滚秩?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤淮捆,失蹤者是張志新(化名)和其女友劉穎郁油,沒想到半個(gè)月后本股,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡已艰,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年痊末,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蚕苇。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片哩掺。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖涩笤,靈堂內(nèi)的尸體忽然破棺而出嚼吞,到底是詐尸還是另有隱情,我是刑警寧澤蹬碧,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布舱禽,位于F島的核電站,受9級(jí)特大地震影響恩沽,放射性物質(zhì)發(fā)生泄漏誊稚。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一罗心、第九天 我趴在偏房一處隱蔽的房頂上張望里伯。 院中可真熱鬧,春花似錦渤闷、人聲如沸疾瓮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽狼电。三九已至,卻和暖如春弦蹂,著一層夾襖步出監(jiān)牢的瞬間肩碟,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工凸椿, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留削祈,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓削饵,卻偏偏與公主長(zhǎng)得像岩瘦,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子窿撬,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354

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

  • 從三月份找實(shí)習(xí)到現(xiàn)在启昧,面了一些公司,掛了不少劈伴,但最終還是拿到小米密末、百度握爷、阿里、京東严里、新浪新啼、CVTE、樂視家的研發(fā)崗...
    時(shí)芥藍(lán)閱讀 42,246評(píng)論 11 349
  • *面試心聲:其實(shí)這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個(gè)offer,總結(jié)起來就是把...
    Dove_iOS閱讀 27,140評(píng)論 30 470
  • __block和__weak修飾符的區(qū)別其實(shí)是挺明顯的:1.__block不管是ARC還是MRC模式下都可以使用刹碾,...
    LZM輪回閱讀 3,310評(píng)論 0 6
  • 1.iOS中的多線程 iOS中的多線程燥撞,是Cocoa框架下的多線程,通過Cocoa的封裝迷帜,可以讓我們更方便的使用線...
    4b5317535aa5閱讀 395評(píng)論 0 0
  • 網(wǎng)絡(luò)階段# 應(yīng)用程序如何連接互聯(lián)網(wǎng)## 1物舒、基于HTTP協(xié)議 HTTP:超文本傳輸協(xié)議(Hyper-Text Ma...
    未完成1307閱讀 289評(píng)論 0 1