日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

IOS 小技巧

發(fā)布時間:2025/3/20 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 IOS 小技巧 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

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?
  • NSNumber?*myNumber,?*floatNubmer;??
  • ??
  • //?long?value??
  • myNumber?=?[NSNumber?numberWithLong:0xabcdef];??
  • NSLog(@"%lx",[myNumber?longValue]);??????????//?輸出:abcdef??
  • ??
  • //?char?value??
  • myNumber?=?[NSNumber?numberWithChar:'X'];??
  • NSLog(@"%c",?[myNumber?charValue]);??????????//?輸出:X??
  • ??
  • //?float?value??
  • floatNubmer?=?[NSNumber?numberWithFloat:100.00];??
  • NSLog(@"%g",[floatNubmer?floatValue]);???????//?輸出:100??

  • 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é)

    以上是生活随笔為你收集整理的IOS 小技巧的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。