ios開發(fā)碎記錄

ios開發(fā)碎知識點(diǎn)

前言.

整理好久的了,最近很少開發(fā)ios了,再不發(fā)估計(jì)ios就廢了

??ios日常開發(fā)中,有必要記錄一下零碎的知識點(diǎn),在此,也記錄一下,開放出來,慢慢完善,期待您的反饋。

1 調(diào)用系統(tǒng)相機(jī),文字語言類型設(shè)置

capture.png

2 界面卡頓,防止vc被push多次

自定義導(dǎo)航欄控制器

//FIXME:這樣做防止主界面卡頓時(shí),導(dǎo)致一個(gè)ViewController被push多次、

- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated {
    if (self.childViewControllers.count > 0) {
        if ([[self.childViewControllers lastObject] isKindOfClass:[viewController class]]) {
            return;
        }
    }
    
    [super pushViewController:viewController animated:animated];
}

3 數(shù)組拷貝 & 字符串拷貝的區(qū)別

NSMutableArray *array = [NSMutableArray arrayWithObject:element];
NSMutableArray *mutableCopyArray = [array mutableCopy];
[mutableCopyArray[0] addObject:@2];
    
NSMutableArray *element = [NSMutableArray arrayWithObject:@1];
NSMutableArray *array = [NSMutableArray arrayWithObject:element];
NSMutableArray *mutableCopyArray = [array mutableCopy];
[mutableCopyArray[0] addObject:@2];    
    

問題:
為什么當(dāng)array內(nèi)的內(nèi)容是數(shù)組的時(shí)候,mutableCopyArray 和 array的內(nèi)容一起改變,但是array的內(nèi)容是字符串的時(shí)候,內(nèi)容是單獨(dú)改變的

答:
因?yàn)樽址@種對象比較特殊,oc把字符串存在常量內(nèi)存區(qū)域,意味著內(nèi)容相同的字符串,內(nèi)存地址都是相同的,你可以試試,即使copy也沒用。

所以,當(dāng)你改了一個(gè)array中的字符串元素,實(shí)際上并不是改變改指針下的字符串值,而是改變了容器這個(gè)元素的指針

4清除緩存和cookie

/**清除緩存和cookie*/
- (void)cleanCacheAndCookie{
    //清除cookies
    NSHTTPCookie *cookie;
    NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
    for (cookie in [storage cookies]){
        [storage deleteCookie:cookie];
    }
    //清除UIWebView的緩存
    [[NSURLCache sharedURLCache] removeAllCachedResponses];
    NSURLCache * cache = [NSURLCache sharedURLCache];
    [cache removeAllCachedResponses];
    [cache setDiskCapacity:0];
    [cache setMemoryCapacity:0];
}

5 runtime Associate方法關(guān)聯(lián)的對象,需要在主對象dealloc的時(shí)候釋放么

assign和weak的區(qū)別在于weak能再修飾對象釋放時(shí)自動(dòng)將指針置空,assign不會(huì),那用OBJC_ASSOCIATION_ASSIGN修飾的對象是屬于weak和還是assign

如何手動(dòng)實(shí)現(xiàn)weak屬性的方式,大概實(shí)現(xiàn)是通過associate一個(gè)中間變量,在這個(gè)變量dealloc的時(shí)候?qū)?weak指針 置空。如果這種方式是正確的話,那是不是說 OBJC_ASSOCIATION_ASSIGN 修飾的assiciate對象 在主對象dealloc的時(shí)候需要講它的指針置空呢

OBJC_ASSOCIATION_ASSIGN 還真的必須配合手動(dòng) 設(shè)置 nil 使用,要不在屬性施放后,調(diào)用會(huì)exc_bad

6 導(dǎo)航棧中控制器的’復(fù)用‘異常

[a, b, c] > push A 新實(shí)例 a1 > [a, b, c, a1]

Pushing the same view controller instance more than once is not supported
不允許:不支持壓棧相同控制器實(shí)例

[a, b, c] 導(dǎo)航數(shù)組操作將a實(shí)例再添加到導(dǎo)航數(shù)組 > [a, b, c, a]

All view controllers in a navigation controller must be distinct

不允許:導(dǎo)航控制器中的子控制器必須是唯一的

7 顯示html格式文本 并修改默認(rèn)的藍(lán)色和下劃線

NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithData:[contentStr dataUsingEncoding:NSUnicodeStringEncoding] options:@{ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType } documentAttributes:nil error:nil];

后續(xù)。。。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 賣地與賣淫 政府賣地 小姐賣淫 都是插入 都是牟利 一為合法 一為違規(guī) 都有快感 都掙快錢 一是轉(zhuǎn)嫁給所有人 特別...
    我是人人閱讀 151評論 0 0

友情鏈接更多精彩內(nèi)容