小知識點的整理

1、設(shè)置白色狀態(tài)欄

狀態(tài)欄的設(shè)置

2、登陸頁面textfield的處理

3、ipad的橫豎屏適配


豎屏


橫屏

1:mainviewcontroller中

2、單獨定義一個協(xié)議,選裝時調(diào)用


3、旁邊的tabbar


4、dock中有iconView tabbar ?bottomMenu



4、為什么我每次獲取的屏幕高度都是480寬度都是320

1.不添加相應(yīng)圖片的話,審核過不了.

例如"As of May 1, all new iPhone apps and app updates submitted must support the 4-inch display on iPhone 5. All apps must include a launch image of the appropriate size. Learn more about iPhone 5 support by reviewing the iOS Human Interface Guidelines."

2.只有480的話,屏幕上下自動補黑條.

3.原理:

由于5,5s上市時,需要兼容之前版本的App,同時要減少適配的開發(fā)成本.最后就出了唯一的一個判斷標(biāo)準(zhǔn):如果有相應(yīng)設(shè)備尺寸的開機(jī)圖,系統(tǒng)就當(dāng)你這個App針對新設(shè)備做過適配,否則就按照480x320來算.

后來出了6,6p就沿用了同樣的適配規(guī)則.

5、autorelease什么時候會自動釋放,如何控制不讓他釋放


在Iphone項目中,大家會看到一個默認(rèn)的Autorelease pool,程序開始時創(chuàng)建,程序退出時銷毀,按照對Autorelease的理解,豈不是所有autorelease pool里的對象在程序退出時才release, 這樣跟內(nèi)存泄露有什么區(qū)別?

答案是,對于每一個Runloop, 系統(tǒng)會隱式創(chuàng)建一個Autorelease pool,這樣所有的release pool會構(gòu)成一個象CallStack一樣的一個棧式結(jié)構(gòu),在每一個Runloop結(jié)束時,當(dāng)前棧頂?shù)腁utorelease pool會被銷毀,這樣這個pool里的每個Object會被release。

那什么是一個Runloop呢? 一個UI事件,Timer call, delegate call, 都會是一個新的Runloop。

一般異步執(zhí)行的代碼都需要重新創(chuàng)建autorelease pool,對于在主線程中執(zhí)行的非UI事件部分的 autorelease 會在什么時候釋放呢?

The autoreleased objects will be deallocated when, the closest enclosing autorelease pool on the stack of the thread on which the -autorelease message has been sent, gets drained or released.

6、給UIImageView 設(shè)置圓角

originalView.layer.masksToBounds=YES;//方法告訴layer將位于它之下的layer都遮蓋住

7、用加載的storyboard創(chuàng)建控制器

8 、通過GestureRecognizer實現(xiàn)點擊任意區(qū)域隱藏鍵盤

基本思想如下:

1. 在ViewController載入的時候,將鍵盤顯示和消失的Notification添加到self.view里。

2. 分別在鍵盤顯示和消失時添加和刪除TapGestureRecognizer

- (void)viewDidLoad {

[superviewDidLoad];

[selfsetKeyBoardAutoHidden];

}

- (void)setKeyBoardAutoHidden{

NSNotificationCenter*notificationCenter?=?[NSNotificationCenterdefaultCenter];

//SingleTap?Gesture

UITapGestureRecognizer*singleTapGesture?=?[[UITapGestureRecognizeralloc]initWithTarget:selfaction:@selector(backgroundTapDismissKeyboard:)];

NSOperationQueue*mainQueue?=?[NSOperationQueuemainQueue];

//UIKeyboardWillShowNotification

[notificationCenteraddObserverForName:UIKeyboardWillShowNotificationobject:nilqueue:mainQueueusingBlock:^(NSNotification*note)?{

[self.viewaddGestureRecognizer:singleTapGesture];

}];

//UIKeyboardWillHideNotification

[notificationCenteraddObserverForName:UIKeyboardWillHideNotificationobject:nilqueue:mainQueueusingBlock:^(NSNotification*note)?{

[self.view ?addGestureRecognizer:singleTapGesture];

}];

}

-?(void)backgroundTapDismissKeyboard:(UIGestureRecognizer*)?gestureRecognizer{

//將self.view里所有的subview的first?responder?都resign掉

[self.viewendEditing:YES];

}

11,NavigationBar中通過code方式對背景顏色和title字體顏色更改


12、NSCoding解釋 initWithCoder: encodeWithCoder


對于輕量級的數(shù)據(jù)要求,NSCoding因其簡單而成為一種比較合適的方式。 NSCoding是一個你需要在數(shù)據(jù)類上要實現(xiàn)的協(xié)議以支持?jǐn)?shù)據(jù)類和數(shù)據(jù)流間的編碼和解碼。數(shù)據(jù)流可以持久化到硬盤。

是類對象本身數(shù)據(jù)的寫入到本地文件。

我 們需要實現(xiàn)兩個方法: encodeWithCoder和initWithEncoder。encodeWithCoder就是編碼,initWithCoder就是解碼。 encodeWithCoder方法傳入的是一個NSCoder對象,實現(xiàn)的時候我們就可以調(diào)用encodeObject、encodeFloat、 encodeInt等各種方法并通過指定鍵值進(jìn)行編碼。

13、數(shù)組里面存儲CGRect

存:[self.bottomLineFrameArr addObject:[NSValue valueWithCGRect:bottomRect]];

?。簊elf.bottomLineView.frame = [self.bottomLineFramesArrayM[0] CGRectValue];

14、野指針的錯誤

野指針的錯誤unrecognized selector sent to instance

15、id類型與instancetype類型

instancetype 與 id 不一樣, instancetype 只能在方法聲明中作為返回類型使用。

使用 instancetype ,編譯器將正確的推斷出 +personWithName: 是 Person 的一個實例。

16、類方法和實例方法

實例方法是— 類開頭是+?

實例方法是建立實例才有的方法,實例方法是用實例對象訪問

類方法是直接可以使用類引用,不需要實例化就可以使用的方法,一般在項目中類方法都是設(shè)置為工具類使用的

類方法的對象是類而不是實例,通常創(chuàng)建對象或者工具類。

在實例方法里,根據(jù)繼承原理發(fā)送消息給self和super其實都是發(fā)送給self

在類方法里面self是其他的類的類方法,在類方法中給self發(fā)送消息只能發(fā)類方法self是類super也是

什么時候用類方法,要創(chuàng)建一個實例時候獲取一個共享實例,或者獲取關(guān)于類的一些共有信息

17.tableview的第一個headerView設(shè)置標(biāo)題不走

因為tableviewheader的高度高度沒有設(shè)置

18. TableView如何刷新指定的cell 或section

//一個section刷新

NSIndexSet *indexSet=[[NSIndexSet alloc]initWithIndex:2];

[tableview reloadSections:indexSet withRowAnimation:UITableViewRowAnimationAutomatic];

//一個cell刷新

NSIndexPath *indexPath=[NSIndexPath indexPathForRow:3 inSection:0];

[tableView reloadRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath,nil] withRowAnimation:UITableViewRowAnimationNone];


19.創(chuàng)建分類的方法


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

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

  • 37.cocoa內(nèi)存管理規(guī)則 1)當(dāng)你使用new,alloc或copy方法創(chuàng)建一個對象時,該對象的保留計數(shù)器值為1...
    如風(fēng)家的秘密閱讀 955評論 0 4
  • 1.OC里用到集合類是什么? 基本類型為:NSArray,NSSet以及NSDictionary 可變類型為:NS...
    輕皺眉頭淺憂思閱讀 1,476評論 0 3
  • 對于從事 iOS 開發(fā)人員來說,所有的人都會答出【runtime 是運行時】什么情況下用runtime?大部分人能...
    夢夜繁星閱讀 3,804評論 7 64
  • 1,NSObject中description屬性的意義,它可以重寫嗎?答案:每當(dāng) NSLog(@"")函數(shù)中出現(xiàn) ...
    eightzg閱讀 4,336評論 2 19
  • 初讀李尚龍的書,滿滿的雞湯濃香撲鼻,可是細(xì)細(xì)品讀下來,也會笑笑自嘲這不就是自己嗎?舉例充分說明。 第一 你是否經(jīng)常...
    寸心悟閱讀 2,353評論 17 86

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