iOS注意點(diǎn)

  • 子控件的x始終與保持父控件寬度一半保持一致:

  • 使用拖拽約束的方法,動(dòng)態(tài)改變約束;

  • 使用masonry,
    make.left.equalTo(superView).with.offset(superView.frame.size.width * 0.2);

  • MacOS 10.12安全與隱私?jīng)]有允許任何來源的app選項(xiàng)解決辦法
    MacOS 10.12之后系統(tǒng)偏好設(shè)置-安全&隱私下面去除了允許安裝任何來源,導(dǎo)致很多軟件運(yùn)行不了,解決方法:打開終端,輸入以下命令
    sudo spctl --master-disable

  • 枚舉enum 建議使用 NS_ENUM 和 NS_OPTIONS 宏來定義枚舉類型

  • 數(shù)據(jù)類型的正確使用

int -> NSInteger  
unsigned -> NSUInteger  
float -> CGFloat  
動(dòng)畫時(shí)間 -> NSTimeInterval
  • 無論是 MVC 模式還是 MVVM 模式,業(yè)務(wù)邏輯都不應(yīng)當(dāng)寫在 Model 里:MVC 應(yīng)在 C,MVVM 應(yīng)在 VM。
  • 由于字符串值可能會(huì)改變,所以要把字符串相關(guān)屬性的“內(nèi)存管理語義”聲明為 copy 。
  • 禁止默認(rèn)的手勢滑動(dòng)返回
- (void)viewWillAppear:(BOOL)animated
{
      [super viewWillAppear:animated];  
      //屏蔽右滑返回手勢
      self.navigationController.interactivePopGestureRecognizer.enabled = NO;
}

- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
    self.navigationController.interactivePopGestureRecognizer.enabled = YES;
}
  • 字符串UTF-8解碼編碼
    iOS中對字符串進(jìn)行UTF-8編碼:輸出str字符串的UTF-8格式
    [str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    解碼:把str字符串以UTF-8規(guī)則進(jìn)行解碼
    [str stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
  • UIWebView
// 清除cookies
NSHTTPCookie *cookie;
NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
for (cookie in [storage cookies]) { [storage deleteCookie:cookie];}
// 清除UIWebView的緩存
[[NSURLCachesharedURLCache] removeAllCachedResponses];
  • null的處理
    [string isKindOfClass:[NSNull class]];
    數(shù)組不允許是nil,其他情況例如setText:可以是nil
    null都不允許,可以用上面的方法排除;
  • arc環(huán)境下編譯非arc
    -fno-objc-arc
  • 隨機(jī)數(shù):
    arc4random( ) 會(huì)生成任意正整數(shù)和0
    arc4random_uniform(100) 會(huì)生成0~99的整數(shù) (包括0和99,但是沒有100)
  • 打電話
    三種方式:
    1>@“tel://10010”; openURL,缺點(diǎn)但是不會(huì)回到應(yīng)用
    2>@“telprompt://10010”; openURL,缺點(diǎn)是私有API,所以可能不會(huì)被審核通過
    3>添加webView loadRequest,要注意其中webview沒有frame
  • 發(fā)短信
    1>@“sms://10010” openURL
    2>#import<MessageUI/MessageUI.h]] >
  • 發(fā)郵件
    1>@“mailto://10010@qq.com” openURL
    2>控制器
  • 為應(yīng)用評分
    注意一定要有Apple ID
NSString*appid =@"725296055";       
NSString*str = [NSStringstringWithFormat:@"itms-apps://itunes.apple.com/cn/app/id%@?mt=8", appid];
// 或者也可以寫http://
NSURL*url = [NSURL URLWithString:str];
[[UIApplicationsharedApplication]openURL:url];
  • 對數(shù)組中每一個(gè)對象都執(zhí)行同樣的操作有兩種方法:
    一種是遍歷數(shù)組,拿到所有的對象,進(jìn)行操作;
    還有一種是[array makeObjectsPerformSelector:@selsetor() withObject:…];
  • 計(jì)時(shí)器的方法,如果刷新的比較慢,通常是NSTimer,但是如果在很短的時(shí)間里面調(diào)用很多次方法,用CADisplayLink,一秒內(nèi)刷新60次
// 新建定時(shí)器
CADisplayLink*link = [CADisplayLinkdisplayLinkWithTarget:self selector:@selector(update)];
[link addToRunLoop: [NSRunLoop mainRunLoop]forMode:NSDefaultRunLoopMode];
self.link= link;
// CADisplayLink 作為成員變量的時(shí)候?qū)傩詤?shù)strong
// 取消定時(shí)器:
[self.link invalidate];
self.link=nil;
  • 顯示/隱藏Mac隱藏文件命令如下:
    顯示Mac隱藏文件的命令:defaults write com.apple.finder AppleShowAllFiles -bool true
    隱藏Mac隱藏文件的命令:defaults write com.apple.finder AppleShowAllFiles -bool false
  • Tabbar的默認(rèn)高度是49
    //設(shè)定Tabbar的點(diǎn)擊后的顏色
    [[UITabBar appearance] setTintColor:[UIColor redColor]];
    //設(shè)定Tabbar的顏色
    [[UITabBar appearance] setBarTintColor:[UIColor whiteColor]];
  • 自定義了leftBarbuttonItem左滑返回手勢失效了怎么辦
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithImage:img style:UIBarButtonItemStylePlain target:self action:@selector(onBack:)];
self.navigationController.interactivePopGestureRecognizer.delegate = (id<UIGestureRecognizerDelegate>)self;
  • ScrollView莫名其妙不能在viewController劃到頂怎么辦
    self.automaticallyAdjustsScrollViewInsets = YES;
  • 如果要使用靜態(tài)單元格,則需要storyboard的UITableViewController
  • 根據(jù)URL創(chuàng)建 NSURLRequest 請求
NSURLRequest *request = [[NSURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:60];
//參數(shù)cachePolicy表示緩存策略,枚舉類型,值有以下幾種:
NSURLRequestUseProtocolCachePolicy = 0 NSURLRequest默認(rèn)的cache policy,使用Protocol協(xié)議定義。是最能保持一致性的協(xié)議。
NSURLRequestReloadIgnoringCacheData = 1 忽略緩存直接從原始地址下載
NSURLRequestReturnCacheDataElseLoad = 2  只有在cache中不存在data時(shí)才從原始地址下載
NSURLRequestReturnCacheDataDontLoad = 3  只使用cache數(shù)據(jù),如果不存在cache,請求失敗;次策略用于沒有建立網(wǎng)絡(luò)連接離線模式;
NSURLRequestReloadIgnoringLocalAndRemoteCacheData = 4,  忽略本地和遠(yuǎn)程的緩存數(shù)據(jù),直接從原始地址下載,與NSURLRequestReloadIgnoringCacheData類似。
NSURLRequestReloadRevalidatingCacheData = 5  驗(yàn)證本地?cái)?shù)據(jù)與遠(yuǎn)程數(shù)據(jù)是否相同,如果不同則下載遠(yuǎn)程數(shù)據(jù),否則使用本地?cái)?shù)據(jù)。
  • 一個(gè)視圖可以有很多個(gè)手勢,但是一個(gè)手勢只能添加到一個(gè)視圖,如果需要添加到另一個(gè)視圖中,需要再新建一個(gè)手勢;并且一個(gè)view是可以添加多個(gè)手勢,但是默認(rèn)只有一個(gè)有效,要使多個(gè)手勢有效,要實(shí)現(xiàn)手勢代理方法,遵守協(xié)議<UIGestureRecognizerDelegate>,并且每個(gè)手勢都要設(shè)置代理gesture.delegate = self;
/** *  是否允許多個(gè)手勢識(shí)別器同時(shí)有效 *  Simultaneously : 同時(shí)地 */
 - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer
shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{ 
   return YES;
}
  • 非arc文件和arc文件共存
    將非arc文件在arc環(huán)境下共存:
    標(biāo)記非arc文件:-fno-objc-arc
    將arc文件在非arc環(huán)境下共存:
    標(biāo)記arc文件:-f-objc-arc
  • 隨機(jī)顏色
int r = arc4random_uniform(255+1); // 表示生成0~255的隨機(jī)整數(shù)     
UIColor*color = [UIColor colorWithRed:(r)/255.0 green:(r)/255.0 blue:(r)/255.0 alpha:1.0];
  • 圖層抖動(dòng)
CAKeyframeAnimation *shake = [CAKeyframeAnimation  animation];
shake.keyPath = @“transform.translation.x”
shake.duration = 0.15;
CGFloat delta = 10;
shake.values = @[@0, @( - delta), @0, @(delta)];
shake.repeatCount = 2;
[self.view.layer addAnimation: shake forKey:nil];
  • 區(qū)分BundleVersion和BundleShortVersionString


    區(qū)分BundleVersion和BundleShortVersionString .gif

    CFBundleVersion
    CFBundleShortVersionString

  • iOS啟動(dòng)和關(guān)閉狀態(tài)欄網(wǎng)絡(luò)請求標(biāo)志
[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];// 啟動(dòng)狀態(tài)欄網(wǎng)絡(luò)請求指示  
[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];// 關(guān)閉狀態(tài)來網(wǎng)絡(luò)請求指示
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • *面試心聲:其實(shí)這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個(gè)offer,總結(jié)起來就是把...
    Dove_iOS閱讀 27,608評論 30 472
  • 1、改變 UITextField 占位文字 顏色和去掉底部白框 [_userName setValue:[UICo...
    i_MT閱讀 1,178評論 0 2
  • 前言: 以下內(nèi)容是作者在實(shí)際開發(fā)中所總結(jié)的,主要列舉了一些實(shí)用小技巧,也希望在實(shí)際開發(fā)中能夠幫到你。 設(shè)置控件的圓...
    暗香有獨(dú)閱讀 1,466評論 6 33
  • 一刻一輩子 初識(shí) 那天是我們第一次說話,但短短幾分鐘的時(shí)間讓我這個(gè)半年都不記得班上一個(gè)男生的我記住了你,那個(gè)年代男...
    長弓心悅閱讀 258評論 0 0
  • “穿過縣界長長的隧道,便是雪國”…… 那個(gè)如浮萍般云游四方的老先生是否已前往那片詩意雪國? 雪國沒有悲傷,沒有寒冷...
    趣讀書吧閱讀 1,294評論 0 13

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