IOS 小技巧
IOS 小技巧
1. 使用@property和@synthesize聲明一個成員變量,給其賦值是時要在前面加上"self.",以便調(diào)用成員變量的setmember方法。?? ? ?直接調(diào)用成員變量并且給其賦值:member=[NSString stringWithFormat:@””];將不執(zhí)行setmember 方法。
? ? ?使用self調(diào)用成員變量并且給其賦值:self.member=[NSString stringWithFormat:@””];將執(zhí)行setmember方法。
2.延時函數(shù): [NSThread sleepForTimeInterval:3];
? ? ?[self performSelector:@selector(machineBallAction) withObject:nil afterDelay:0];
3.實現(xiàn)隨機(jī)數(shù):srandom(time(NULL));
4. #pragma mark -
? ? ??#pragma mark Initialization
? ? ?它們告訴Xcode編譯器,要在編輯器窗格頂部的方法和函數(shù)彈出菜單中將代碼分隔開;
注意
? ? ?#pragma mark – 的“-”后面不能有空格。
? ? ?如果你的標(biāo)志沒有出現(xiàn)在彈出菜單中,比如沒有分隔線出現(xiàn),請在Xcode菜單 “Preferences..”中的 “Code Sense”選項取消選中”Sort listalphabetically”即可。
5. ?我們通過發(fā)送消息給對象出發(fā)特定動作;對象發(fā)送某些變化的時候通過回調(diào)函數(shù)(callback)通知我們。對象在特定事件發(fā)生的時候,就會調(diào)用對應(yīng)的回調(diào)函數(shù),觸發(fā)業(yè)務(wù)邏輯。
? ? ?回調(diào)函數(shù)通過所謂的代理(Delegation)來實現(xiàn).
? ? ?delegate使用方法:
? ? ?@property (assign) <id>xxxDelegate delegate;
? ? ?正確的使用方法是使用assign屬性而不是retain。
? ? ?之所以對于delegate這類對象使用assign而不是用retain是為了防止循環(huán)retain(retain loop)。
? ? ?具體原因請移至:http://www.cnblogs.com/kimimaro/archive/2011/09/05/2167576.html
6. 編程習(xí)慣:定義Bool類型值時,@property(nonatomic,getter=isSoundOn) BOOL soundOn;
7.手動創(chuàng)建內(nèi)存自動釋放池:
? ? ? ?NSAutoreleasePool?*pool = [[NSAutoreleasePoolalloc]init];
? ? ? ?// TODO
? ? ? ?// 向?qū)ο蟀l(fā)送一條autorelese消息時,就將該對象加入到自己手動創(chuàng)建的內(nèi)存釋放池中。在此方法結(jié)束時調(diào)用[pool?release],將釋放添加到該內(nèi)存池的所有對象.
? ? ? ?[pool?release];
? ? ? ?//?如若在自動釋放池pool 調(diào)用release方法之后,某對象的retainCount不為0,該對象將繼續(xù)保持可用。
8.任何基本數(shù)據(jù)類型(包括char數(shù)據(jù)類型),可以通過使用NSNumber類根據(jù)這些數(shù)據(jù)類型來創(chuàng)建對象。
? ? ? ?
[cpp]?view plaincopyprint?9. 當(dāng)把某一個對象以AddObject或者初始化的形式加入到Array,Dictionary中時,該對象retainCount將+1。
? ? ?當(dāng)把某一個對象以remover的形式從Array,Dictionary移除時,該對象retainCount將-1。
? ? ?當(dāng)使用copy 和mutableCopy 產(chǎn)生數(shù)組副本時,數(shù)組中每個元素的保持計數(shù)將+1。
10. 異常:exc_bad_access.
? ? ? ?引用對象已經(jīng)釋放,即“魔鬼引用”。與VS中的“未將引用的對象應(yīng)用到對象的實例”類似。
11. 更新UITableView數(shù)據(jù)問題:
? ? ? ? 采用Sqlite3輕量級數(shù)據(jù)庫來存儲數(shù)據(jù),通過調(diào)試發(fā)現(xiàn),數(shù)據(jù)庫中數(shù)據(jù)已更新,但UITableView并沒有更新。
? ? ? ? 解決方法:performSelectorOnMainThread:@selector(reloaddata) withObject:nil waitUntilDone:YES
? ? ? ? ? ? ? ? ?但datasource并沒有數(shù)據(jù),需要重新加載數(shù)據(jù)。
轉(zhuǎn)載于:https://www.cnblogs.com/csj007523/archive/2012/08/22/2650863.html
總結(jié)
- 上一篇: sqlserver 实现伪序列
- 下一篇: 批量离线下载迅雷快传资源