iOS開發筆記

 

添加同一個控件屢次到父控件,最終只會添加一個該控件html

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -ios

TableView中設置backgroundView,設置ImageView出不來?c++

由於target爲7,設置圖片只有8才能夠git

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -程序員

1.url編碼github

ios中http請求遇到漢字的時候,須要轉化成UTF-8,用到的方法是:swift

NSString * encodingString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];緩存

2.url解碼安全

請求後,返回的數據,如何顯示的是這樣的格式:%3A%2F%2F,此時須要咱們進行UTF-8解碼,用到的方法是:服務器

NSString *str = [model.album_name stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

dataSourceArray和reloadData都要在主線程中完成

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

*** Assertion failure in -[UITableView _dequeueReusableViewOfType:withIdentifier:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit_Sim/UIKit-3512.30.14/UITableView.m:6532

解決:由於使用的tableViewCell的xib綁定了identifier,若是註冊時候不跟xib保持一致就會報錯,或者是代碼哪裏寫錯了,仔細檢查代碼。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

後面帶有UI_APPEARANE_SELECTOR的方法,均可以經過appearance統一設置

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

IQKeyboardManager

鍵盤在切換textfield的時候出現順序有誤,跟添加textfield控件順序有關,調整順序便可解決

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

獲取子View所在控制器

- (UIViewController *)viewController

{

    for (UIView* next = [self superview]; next; next = next.superview) {

        UIResponder *nextResponder = [next nextResponder];

        if ([nextResponder isKindOfClass:[UIViewController class]]) {

            return (UIViewController *)nextResponder;

        }

    }

    return nil;

}

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

This file is set to build for a version older than the project deployment target. Functionality may be limited.

解決方法:

選中xib 的文件,在 Builds for 中修改  Project Deployment Target

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

library not found for . . .

解決:.a文件未上傳到服務器

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

libc++abi.dylib: terminate_handler unexpectedly threw an exception

2016.01.23

遇到了這個狀況,發現是由於我從xib裏拖出來的屬性,被我改了名字致使

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

App installation failed

This application's application-identifier entitlement does not match that of the installed application. These values must match for an upgrade to be allowed.

解決:

iPhone上已經裝了包標識符同樣的 App,刪掉再運行。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

開發注意:

若是你建了一個類,好比:NCQRCodeViewController

那麼你就不能在建立NCQRCodeView(包含xib)這樣的類,不然會崩潰,緣由是由於NCQRCodeViewController會先去找NCQRCodeView.xib,納尼!就錯在這兒了。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

ios9後打開百度、高德地圖須要如下配置

在info.plist添加白名單

<key>LSApplicationQueriesSchemes</key>

<array>

     <string>baidumap</string>

     <string>iosamap</string>

</array>

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

設置狀態欄樣式

1 修改info.plist文件,讓UIApplication設置樣式

添加 View controller-based status bar appearance  並設置爲 NO

2 設置樣式

在appdelegate中application.statusBarStyle = UIStatusBarStyleLightContent;

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

Provisioning profile is expiring warning

~/Library/MobileDevice/Provisioning Profiles/

刪除掉全部的profile在從新下載

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

directory not found for option '-L

解決方法: 

修改路徑:選擇項目名稱----->Targets----->Build Settings----->Search Paths----->Library Search Paths

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

==15481==ERROR: AddressSanitizer: heap-buffer-overflow

edit scheme…->Run->Diagnostics->取消 Enable Address Sanitizer

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

Scale:拉伸圖片

Aspect:圖片長寬的比例,保持圖形的長寬比,保持圖片不變形。

 

Aspect Fill:在保持長寬比的前提下,縮放圖片,使圖片充滿容器。

Aspect Fit:在保持長寬比的前提下,縮放圖片,使得圖片在容器內完整顯示出來。

Scale to Fill: 縮放圖片,使圖片充滿容器。圖片未必保持長寬比例協調,有可能會拉伸至變形。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

桌面圖標通知

    // 註冊推送, 用於iOS8以及iOS8以後的系統

    if ([application respondsToSelector:@selector(registerUserNotificationSettings:)]) {

        UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert) categories:nil];

        [application registerUserNotificationSettings:settings];

    }

 

application.applicationIconBadgeNumber = 1;

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

The identity used to sign the executable is no longer valid.

步驟:

  1. 打開Xcode配置(Xcode -> Preferences...)
  2. 選擇Accounts頁面,選中你的Apple ID,點右下方的「View Detail...」按鈕
  3. 點擊左下角的刷新按鈕,等待刷新完成,點「Done」按鈕,關閉Xcode配置窗口
  4. 從新編譯運行項目,若出現修復窗口,一路點「Fix Issue」按鈕

 

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

設備的provis文件地址

/Users/mashangyouqian/Library/MobileDevice/Provisioning Profiles

 

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

 

This application is modifying the autolayout engine from a background thread, which can lead to engine corruption and weird crashes.  This will cause an exception in a future release

把須要更新UI的放在的主線程就行了

 

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

The identity used to sign the executable is no longer valid

刪掉~/Library/MobileDevice/Provisioning Profiles/ 下全部文件, 在從新下載

下載:Xcode->Preference...->AppleID->ViewDetails->DownloadAll

 

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

-(void)viewWillDisappear:(BOOL)animated {

    [super viewWillDisappear:animated];

    // 開啓系統返回手勢

    if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {

        self.navigationController.interactivePopGestureRecognizer.enabled = YES;

    }

}

- (void)viewDidAppear:(BOOL)animated {

    [super viewDidAppear:animated];

    // 禁用系統返回手勢

    if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {

        self.navigationController.interactivePopGestureRecognizer.enabled = NO;

    }

}

 

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

#pragma mark - tap和didSelect衝突解決

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch

{

    if ([NSStringFromClass([touch.view class]) isEqualToString:@"UITableViewCellContentView"]) {

        // 若是返回NO,則gesture recognizer會忽略此觸摸事件

        return NO;

    }

    return YES;

}

 

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

CUICatalog: Invalid asset name supplied: (null)

緣由imageNamed爲空

 

 

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

iOS項目工程,添加一個c文件,編譯報錯

解決方案:

將#import用包裹起來

 

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

svn 提交 is out of date

update

 

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

給 App 瘦身的另外一個手段是提交 Bitcode 給 Apple,而不是最終的二進制。Bitcode 是 LLVM 的中間碼,在編譯器更新時,Apple 能夠用你以前提交的 Bitcode 進行優化,這樣你就沒必要在編譯器更新後再次提交你的 app,也能享受到編譯器改進所帶來的好處。Bitcode 支持在新項目中是默認開啓的,沒有特別理由的話,你也不須要將它特地關掉。

 

視頻 app 的畫中畫模式相對簡單一些,若是你使用 AVPlayerLayer 來播放視頻的話,那什麼都不用作就已經支持了。但若是你以前選擇的方案是 MPMoviePlayerViewController 的話,你可能也須要儘早遷移到 AVKit 的框架下來,由於 Media Player 將在 iOS 9 被標記爲 deprecated 並再也不繼續維護。

 

滑動覆蓋和分割視圖的 app 會使用 iOS 8 引入的 Size Class 中的 Compact Width 和 Regular Height 的設定,配合上 AutoLayout 來進行佈局。

 

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

通知只在主線程發送。

在init中註冊,在dealloc中註銷。

ghthouse是一個很好的錯誤追蹤工具。OmniOutliner,我在這上面能夠找到一堆事情去作。

若是你崩潰了,最好使用殭屍Zombies工具。

真實的代碼質量遠比別人怎麼看我更重要。

 

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

The operation couldn’t be completed

退出Xcode重啓

 

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

VVDocumenter-Xcode失效問題解決(若是這麼弄都不行, 就刪掉重來就OK)

 

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist file.

在info.plist中添加

<key>NSAppTransportSecurity</key>

<dict>

    <key>NSAllowsArbitraryLoads</key>

    <true/>

</dict>

 

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

iOS - is missing from working copy

解決方案:

1.打開終端

2.cd 到警告所提示的文件夾下

3.執行命令svn rm --force 丟失文件的名稱

4.回車

 

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

批量更新Xcode插件

find ~/Library/Application\ Support/Developer/Shared/Xcode/Plug-ins -name Info.plist -maxdepth 3 | xargs -I{} defaults write {} DVTPlugInCompatibilityUUIDs -array-add `defaults read /Applications/Xcode.app/Contents/Info DVTPlugInCompatibilityUUID`

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  

懶加載的好處

一、直接使用便可,不用關心他怎麼建立

二、保證他不空

三、業務邏輯清晰

 

UIPopoverController 詳見02-UIPopoverController.pptx

 

layoutSubviews,若是不是根據本身的尺寸來算子控件的尺寸,那麼該方法就沒有做用

 

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

Presenting view controllers on detached view controllers is discouraged <MyChargerViewController: 0x7fa84a4d4840>.

解決:

AppDelegate *delegate = (AppDelegate *)[UIApplication sharedApplication].delegate;

    [delegate.window.rootViewController presentViewController:self.loginNav animated:YES completion:nil];

 

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

Unbalanced calls to begin/end appearance transitions for <TabBarController: 0x7fa84a515d00>.

解決:

進行視圖跳轉時,可能會遇到上面的警告日誌,好比在loadView、viewDidLoad、viewWillAppear中,使用下面的代碼:

AppDelegate *delegate = (AppDelegate *)[UIApplication sharedApplication].delegate;

    [delegate.window.rootViewController presentViewController:self.loginNav animated:YES completion:nil];

解決辦法:

在viewDidAppear中執行上述代碼便可;

 

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

 

在使用MJRefresh時返回可能會崩潰, 緣由是在返回時須要在dealloc裏執行[self.header free];[self.footer free]

 

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

找的時候能夠經過在app運行時打印[NSBundle mainBundle]路徑和NSHomeDirectory()發現具體路徑。

 

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

對scrollView進行autolayout佈局很差搞,使用tableviewcell替代較好

 

在cell的contentView裏使用autolayout佈局,最後一個佈局不能使用尺寸佈局

 

label的autolayout佈局只須要設定位置和寬度就能夠,高度系統幫咱們算,也就意味着不用在使用bounding去計算高度了

 

插件路徑:~/Library/Application Support/Developer/Shared/Xcode/Plug-ins

 

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

 

若是是其餘格式轉爲mp3格式,該文件不能播放

wav:kAudioFormatLinearPCM

aac:kAudioFormatMPEG4AAC

caf:kAudioFormatLinearPCM、kAudioFormatAppleIMA四、kAudioFormatMPEG4AAC

m4a:kAudioFormatAppleLossless

本身錄製的aac能夠播放,安卓發的aac播放不了

本身錄製的wac能夠轉成amr,可是不能播,轉回wav能播,可是安卓發的amr轉不了wav

安卓發送的amr、aac文件不能加載

 

 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

若是tableview沒有控制器,cell不要顯示在狀態欄下面:self.tableView.contentInset = UIEdgeInsetsMake(20.0f, 0.0f, 0.0f, 0.0f);

 

Tableview底部不要顯示沒有內容的cell:self.tableView.tableFooterView = [[UIView alloc] init];

 

得到導航欄高度?控制器不要滲透在導航欄下面:self.edgesForExtendedLayout=UIRectEdgeNone;

 

打開Mac隱藏文件命令:defaults write com.apple.finder AppleShowAllFiles -bool true

關閉Mac隱藏文件命令:defaults write com.apple.finder AppleShowAllFiles -bool false

 

功能代碼 在code4app找 或 在下載次數裏找完整項目

完整項目 在github找

 

 

導航欄改不了 使用kvc:[self setValue:[[CusNavigationBar alloc] init] forkeyPath:@「navigationBar」];

 

adjustsImageWhenHighlighted//設置高亮的時候不要讓圖標變色

 

若是設置了select圖片,在高亮狀態下不會顯示,這時覆蓋setHighlight

 

Default-568@2x.png若是沒有放在LaunchImage是不會自動加載的

 

 

 

Reflector 設備投影軟件

 

/*

http://www.cocoachina.com/ios/20150130/11076.html

當舊的 iPhone 5 程序運行在 iPhone 6 上面,假如沒有通過適配,舊程序自動等比放大,鋪滿新手機,舊程序也能夠正常運行。這種方案可算是自動適配。但由於舊程序拉伸了,總體看起來有點虛,也不能更好利用大屏空間。

 

當須要開發者手動適配的時候,跟 iPhone 4 過渡到 iPhone 5 同樣,在新程序中,指定一張新的啓動圖片。當指定了啓動圖,屏幕分辨率就已經變成應有的大小,這時候利用 AutoLayout 進行佈局,同一份代碼,就能夠支持多個機型。新手機的屏幕更大,有更多的虛擬點,能夠顯示更多的內容。

 

值得注意一點是,iPhone 6 Plus。它的寬高是 414 × 736 個點,3x 模式,理想上來講,應該有 1242 × 2208 像素。但 iPhone 6 Plus 的實際像素是 1080 × 1920,是比理想值要少一點的。iPhone 6 Plus 的處理方式是將程序總體稍微縮小一點。分辨率很高,這點區別,實際上也看不出來。

*/

 

遠程推送流程

推送是基於蘋果的APNs服務器的,是由於若是用戶把app關了,咱們公司的服務器會與咱們的app失去溝通,而蘋果的APNs服務器始終與咱們的設備保持長鏈接,那這樣咱們就只有藉助蘋果的APNs服務器完成推送

1.首先要得到設備的deviceToken

2.而後把deviceToken發給公司的服務器

3.由服務器,把deviceToken和推送的內容,交給蘋果的APNs服務器

4.蘋果的APNs服務器根據deviceToken,他就知道由哪個應用推東西給哪個設備

 

命令行衝突

(p)手動解決

(e)撤銷更新操做,回去修改代碼,至關於什麼也沒作

(mc)個人覆蓋掉服務器的

(tc)服務器覆蓋掉個人

(df)查看衝突

 

衝突解決方案:

1.df查看衝突,

2.p手動解決(會產生3個文件供查看,服務器前一個版本,服務器最新的版本,個人版本),解決衝突

3.resolved 文件,告訴服務器解決了衝突

 

回退

revert 只能對沒有提交到服務器的代碼恢復

解決回退已經提交的代碼:

更新上一個版本,把剛提交的代碼文件拷出來,在次更新到最新版本,把拷出來的代碼在拷進去,在提交更新

 

 

 dispatch_once是線程安全的

200 OK

400 客戶端語法錯誤,服務器沒法解析

404 路徑錯誤

500 服務器錯誤

 

charles下載地址:http://www.charlesproxy.com/download/

 

 

tmp : 不會備份,系統隨時會被刪除

Documents :會備份到iTunes

Library :preferences 會備份到iTunes

Library :caches 不會備份,不會被系統刪除

 

多線程文件下載思路:

1首先建立一個等大小的空文件

2開多條線程分別去下載某一塊,使用NSFileHandle插入

 

http支持斷點下載,不支持斷點上傳

tcp/ip基於斷點上傳,基於socket

 

 

同步/異步決定了是否開啓新的線程,同步在主線程執行任務,異步在子線程執行任務(特例:若是是主隊列不會開啓子線程)。異步是具有開線程的能力

串行/併發決定了執行任務的方式,串行是一個一個的執行任務,併發是同時執行任務。

 

凡是函數名帶有create/copy/new/retain等字眼,都須要在不須要的時候進行release,若是在arc環境下release時報錯,就不用寫了。

 

主隊列無論用同步仍是異步都不會開線程

不能使用同步執行主隊列任務,會致使任務沒法往下執行

 

 

1.iPhone5分辨率320x568,像素640x1136,@2x

2.iPhone6分辨率375x667,像素750x1334,@2x

3.iPhone6 Plus分辨率414x736,像素1242x2208,@3x,(注意,在這個分辨率下渲染後,圖像等比下降pixel分辨率至1080p(1080x1920)

 

 

 

Debug:調試版本,程序員用,會啓動更多的服務來監控錯誤,速度比較慢

Release:發佈版本,用戶用,去掉那些繁瑣的監控服務,運行速度快,節省內存

 

發佈版本以前,在運行右邊的項目名稱->editScheme->run->info->Build Configuration 改成release測試一遍。靜態庫最好用release版本

 

內存分析工具

靜態分析:不用運行程序分析

動態分析運行程序時分析

 

swift學習博客:www.cnblogs.com/yangfaxian/p/3765081.html

工具:

1crashlytics崩潰報告 

唐巧http://www.devtang.com/blog/2013/07/24/use-crashlytics/

2.github

3.simpholders快速打開應用沙盒

4.stackoverflow

 

音樂後臺運行

1.appDelegate.m

- (void)applicationDidEnterBackground:(UIApplication *)application

{

    // 開啓後臺任務,讓程序保持運行狀態

    [application beginBackgroundTaskWithExpirationHandler:nil];

}

2.Info.plist

Required background modes ->item = App plays audio or streams audio/video using AirPlay

3. 設置音頻會話類型

    AVAudioSession *session = [AVAudioSession sharedInstance];

    [session setCategory:AVAudioSessionCategorySoloAmbient error:nil];

    [session setActive:YES error:nil];

 

 

 

聯合主鍵

id name

1 jack

1 jim

這樣是能夠的

 

select * from t_food f, t_food_type t where f.food_type_id = t.id and t.name = ‘魯菜’;

select * from t_food f where f.food_type_id = (select t.id from t_food_type where t.name = ‘魯菜’);

 

 

 

binary是二進制數據

MJExension 中 模型轉字典的keyvalues若是屬性是nil,就不轉了

 

1.用戶業務—> UserTool

2.加載用戶我的信息—> userInfoWithParam:success:failure:

3.封裝請求參數—> UserInfoParam

4.封裝請求結果—> UserInfoResult

 

基本數據類型比對象性能高

請求參數用對象

返回用基本數據類型

 

添加異常斷點,就是在哪裏崩掉了就在哪裏打個斷點,點擊左側倒數第二個圖標,點+選「add exception breakpoint」

 

 

按鈕的title只要改動,該按鈕的寬度就須要調整。重寫setTitle方法,計算寬度。

 

-568h只支持Default-568h@2x.png

unassigned:不可用

 

 

 

設置cell的frame:重寫setFrame方法,[super setFrame:frame]以前設置cell的frame

 

設置imageView的高亮圖片:imageView.highlightedImage

 

微博時間處理:

1.今天

1分鐘之內:剛剛

一個小時之內&至少1分鐘:1分鐘前

至少一個小時前:1小時前

2.昨天:昨天 12:00

3.前天或更早:05-09 12:00

4.非本年:2014-05-09 12:00

 

 

 

AirServer:真機投影

 

SDWebImage:假如在cell上顯示圖片,本身開線程去下載圖片,會有很是很是多的細節要處理,爲了減去這些沒必要要的麻煩,異步下載這個圖片,咱們一般用一個框架叫 SDWebImage。

 SDWebImage好處:1本地緩存,減省用戶流量,2異步下載,3避免圖片顯示錯誤

 

AFNetworking:網絡服務框架

 

KVC:會將字典全部key-value賦值給模型對應的屬性

 

git管理已經建立好的項目

1.打開終端切換到項目:cd 項目路徑

2.使用git進行初始化:git init 

3.把項目代碼加到git裏:git add .

4.提交代碼到git裏:git commit -m '初始化’ 

註釋: -m表明所有 '’表明註釋

 

 

返回一個不須要系統自動渲染的圖片,也就是使用原始圖片

[image imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]

 

 

 

imageView的圖片是放在次層上顯示的

 

ping 127.0.0.1 檢測本地網卡是否正常

ping 192.168.1.105 檢測網線是否正常

 

 

設置狀態欄樣式

1 修改info.plist文件,讓UIApplication設置樣式

添加 View controller-based status bar appearance  並設置爲 NO

2 設置樣式

在appdelegate中application.statusBarStyle = UIStatusBarStyleLightContent;

 

 

啓動圖片決定了窗口的大小

iOS7 有retain3.5 4.0英寸

iOS6 有retain3.5 4.0英寸 非retain3.5英寸

 

若是不用storyboard 【tableview dequeu… forIndexPath:] forIndexPath:就不用寫了

 

 

事件的完整處理過程

1.先講事件對象由上往下傳遞(由父控件傳遞給子控件),找到最合適的控件來處理這個事件。

2.調用最合適控件的touches方法。

3.若是調用了[super touches...]就會將事件順着響應者鏈條往上傳遞,傳遞給上一個響應者

4.接着就會調用上一個響應者的touches方法

 

上一個響應者:

1.若是當前這個view是控制器view,那麼控制器就是當前這個view的上一個響應者

2.若是當前這個view不是控制器view,那麼當前這個view的父控件就是上一個響應者

 

什麼是響應者鏈條

響應者鏈條是由多個響應者對象鏈接起來的鏈條

什麼是響應者:能處理事件的對象

利用響應者鏈條,能讓多個控件處理同一個觸摸事件

怎麼利用鏈條往上傳遞?上一個響應者

 

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

ios中remove references和move to trash的區別?remove references 只是刪除引用 工程文件夾裏面仍是有這個文件的 move to trash 把文件從工程文件夾裏扔進垃圾箱裏了 .

 

快速修改本文件中全部的屬性名技巧: 選中屬性名後右擊選中refactor -> rename

 

IOS中屬性名不能以new開頭

 

Xcode 中 iOS SDK 和 iOS Deployment Target 的設置: Base SDK 指的是,當前編譯所用的SDK 版本; OS Deployment Target 指的是,編譯後的 app 可在 終端的哪一個 版本上運行。

 

 

寫delegate的時候類型應該爲weak弱引用,以免循環引用,當delegate對象不存在後,咱們寫的delegate也就沒有存在乎義了天然是須要銷燬的。@property (weak, nonatomic) id<MXCustomTabBarDelegate> delegate;

 

用XCode的Analyze能夠分析到哪裏有內存泄露。分析內存泄露不能把全部的內存泄露查出來,有的內存泄露是在運行時,用戶操做時才產生的。那就須要用到Instruments了。

相關文章
相關標籤/搜索