锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
//灝?/span>Foundation(NSDictionary銆?/span>NSData) 杞崲涓?/span>JSon鏍煎紡鐨?/span>NSData 鐢ㄦ潵鍙戦?/span>
//+ dataWithJSONObject:options:error:
//灝?/span>JSON鏍煎紡鐨?/span>Data杞崲涓?/span>Foundation(NSDictionary銆?/span>NSData) 鐢ㄦ潵瑙f瀽
//+ JSONObjectWithData:options:error:
code:
鐩綍
涓銆佸熀鏈蹇?/p>
1銆佷粈涔堟槸鐗堟湰鎺у埗
2銆佷粈涔堟槸 Subversion
3銆佺増鏈簱(repository)
浜屻佸畨瑁?/p>
1銆佸噯澶囧伐浣?/p>
2銆佸畨瑁?a title="鏈嶅姟鍣? target="_blank" style="text-decoration: none; color: #000000; cursor: pointer; ">鏈嶅姟鍣?/a>绔拰瀹㈡埛绔?/p>
3銆佸緩绔嬬増鏈簱(Repository)
4銆佽繍琛岀嫭绔嬫湇鍔″櫒
涓夈佸熀鏈厤緗?/p>
1銆侀厤緗敤鎴峰拰鏉冮檺
2銆佸垵濮嬪寲瀵煎叆
鍥涖佸熀鏈搷浣滄祦紼?/p>
1銆佸彇鍑?check out)
2銆佸瓨鍏?check in)/鎻愪氦(commit)
------------------------------------------------------------------鍒?鍓?綰?--------------------------------------------------------------
涓銆佸熀鏈蹇?/strong>
1銆佷粈涔堟槸鐗堟湰鎺у埗
綆鍗曠偣鏉ヨ錛岀増鏈帶鍒跺氨鏄暟鎹粨搴擄紝瀹冨彲浠ヨ褰曚綘瀵規(guī)枃浠剁殑姣忔鏇存敼銆傝繖鏍鳳紝灝辯畻浣犲湪鏄忓ぉ榛戝湴鐨勬敼浜嗗嚑涓湀鍚庤佹澘璇翠笉瑕佷簡錛岃繕鏄寜鐓ц繃鍘婚偅鏍鳳紝浣犱篃涓嶄細(xì)鎶撶媯錛岀畝鍗曠殑鎭㈠鐗堟湰鎿嶄綔灝辨悶瀹氫竴鍒囥?/p>
2銆佷粈涔堟槸 Subversion
Subversion鏄竴涓嚜鐢?寮婧愮増鏈帶鍒剁郴緇燂紝瀹冪鐞嗘枃浠跺拰鐩綍鍙互瓚呰秺鏃墮棿銆備竴緇勬枃浠跺瓨鏀懼湪涓績鐗堟湰搴擄紝榪欎釜鐗堟湰搴撳緢鍍忎竴涓櫘閫氱殑鏂囦歡鏈嶅姟鍣紝鍙槸瀹冨彲浠ヨ褰曟瘡涓嬈℃枃浠跺拰鐩綍鐨勪慨鏀癸紝榪欎究浣夸綘鍙互鍙栧緱鏁版嵁浠ュ墠鐨勭増鏈紝浠庤屽彲浠ユ鏌ユ墍浣滅殑鏇存敼銆備粠榪欎釜鏂歸潰鐪嬶紝璁稿浜烘妸鐗堟湰鎺у埗緋葷粺褰撲綔涓縐?#8220;鏃墮棿鏈哄櫒”銆?/p>
Subversion鍙互閫氳繃緗戠粶璁塊棶瀹冪殑鐗堟湰搴擄紝浠庤屼嬌鐢ㄦ埛鍙互鍦ㄤ笉鍚岀殑鐢?shù)鑴戜笂鋴社敤銆備竴瀹氱▼搴︿笂鍙互璇達(dá)紝鍏佽鐢ㄦ埛鍦ㄥ悇鑷殑鍦版柟淇敼鍚屼竴浠芥暟鎹槸淇冭繘鍗忎綔銆傝繘灞曞彲鑳介潪甯哥殑榪呴燂紝騫舵病鏈変竴涓墍鏈夌殑鏀瑰彉閮戒細(xì)鍙栧緱鏁堟灉鐨勯氶亾錛岀敱浜庢墍鏈夌殑宸ヤ綔閮芥湁鍘嗗彶鐗堟湰錛屼綘涓嶅繀鎷呭績鐢變簬澶卞幓鏌愪釜閫氶亾鑰屽獎鍝嶈川閲忥紝濡傛灉瀛樺湪涓嶆紜殑鏀瑰彉錛屽彧瑕佸彇娑堟敼鍙樸?/p>
涓浜涚増鏈帶鍒剁郴緇熶篃鏄?a title="杞歡" target="_blank" style="text-decoration: none; color: #000000; cursor: pointer; ">杞歡
閰嶇疆綆$悊(SCM)緋葷粺錛岃繖縐嶇郴緇熺粡榪囩壒瀹氱殑綺懼閥璁捐鏉ョ鐞嗘簮浠g爜錛屾湁璁稿鍏充簬杞歡寮鍙戠殑鐗規(guī)?#8212;鏈韓鐞嗚В緙栫▼璇█銆佹垨鑰呮彁渚涙瀯寤虹▼搴忕殑宸ュ叿銆傜劧鑰岋紝Subversion涓嶆槸榪欐牱涓涓郴緇燂紝瀹冩槸涓涓氱敤緋葷粺錛屽彲浠ョ鐞嗕換浣曠被鍨嬬殑鏂囦歡闆嗭紝瀵逛綘榪欏彲鑳芥槸婧愪唬鐮侊紝瀵瑰埆浜猴紝鍙兘鏄竴涓揣鐗╂姤浠峰崟鎴栬呮槸涔︾ǹ錛屾垨鑰呮槸鐢?shù)濯勫壀杈懡{夈?/p>3銆佺増鏈簱(repository)
Subversion 鐨勬牳蹇冨氨鏄?repository 錛屼腑鏂囩炕璇戞垚“鐗堟湰搴?#8221;銆傚氨鏄綅浜庢湇鍔″櫒绔紝緇熶竴綆$悊鍜屽偍瀛樻暟鎹殑鍦版柟銆?/p>
浜屻佸畨瑁?/strong>
Subversion鐨勮璁″寘鎷竴涓娊璞$殑緗戠粶灞傦紝榪欐剰鍛崇潃鐗堟湰搴撳彲浠ラ氳繃鍚勭鏈嶅姟鍣?/a>榪涚▼璁塊棶銆傜悊璁轟笂璁詫紝Subversion鍙互浣跨敤鏃犻檺鏁伴噺鐨勭綉緇滃崗璁疄鐜幫紝鐩墠瀹炶返涓瓨鍦ㄧ潃涓ょ鏈嶅姟鍣?/a>銆?/p> • SVNServer錛歴vnserve 鏄竴涓皬鐨?涔熷彨杞誨瀷鐨?銆佺嫭绔嬫湇鍔″櫒錛屼嬌鐢ㄨ嚜宸卞畾涔夌殑鍗忚鍜屽鎴風(fēng)銆?浣滆呮敞錛氫互涓嬬О榪欑鏈嶅姟鍣ㄤ負(fù)“svnserver鏈嶅姟鍣?#8221;銆? • ApacheSVN錛欰pache鏄渶嫻佽鐨剋eb鏈嶅姟鍣紝閫氳繃浣跨敤 mod_dav_svn 妯″潡錛孉pache鍙互璁塊棶鐗堟湰搴擄紝騫朵笖鍙互浣垮鎴風(fēng)浣跨敤HTTP鐨勬墿灞曞崗璁甒ebDAV/DeltaV榪涜璁塊棶銆?浣滆呮敞錛氫互涓嬬О榪欑鏈嶅姟鍣ㄤ負(fù)“ApacheSVN鏈嶅姟鍣?#8221;銆? 涓嬮潰浠嬬粛 SVNServer 鏈嶅姟鍣ㄧ殑瀹夎錛孉pacheSVN 鏈嶅姟鍣ㄧ殑瀹夎浣跨敤璇風(fēng)湅鎴戝啓鐨勩奡ubversion楂樼駭搴旂敤錛歋VN鐨勫縐嶈璇佹柟寮忋嬨?/p> 鐜 OS錛歐indows XP SP2 Web錛欰pache 2.2.6 SVN錛歴vn-win32-1.4.6 1銆佸噯澶囧伐浣溿?/p> (1)鑾峰彇 Subversion 鏈嶅姟鍣ㄧ▼搴忋?/p> 鍒板畼鏂圭綉绔?http://subversion.tigris.org/)涓嬭澆鏈鏂扮殑鏈嶅姟鍣ㄥ畨瑁呯▼搴忋傜洰鍓嶆渶鏂扮殑鏄?.4.6鐗堟湰錛屽叿浣撲笅杞藉湴鍧鍦細(xì)http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=8100&expandFolder=8100&folderID=91 錛屾敞鎰忔壘 for apache 2.2.x 鐗堟湰鐨勩?/p> (2)鑾峰彇 TortoiseSVN 瀹㈡埛绔▼搴忋?/p> 浠庡畼鏂圭綉绔?http://tortoisesvn.net/downloads 鑾峰彇鏈鏂扮殑 TortoiseSVN 銆俆ortoiseSVN 鏄竴涓鎴風(fēng)紼嬪簭錛岀敤鏉ヤ笌 subvers 鏈嶅姟鍣ㄧ閫氳銆係ubversion 鑷甫涓涓鎴風(fēng)紼嬪簭 svn.exe ,浣?TortoiseSVN 鏇村ソ鎿嶄綔錛屾彁楂樻晥鐜囥?/p> 2銆佸畨瑁呮湇鍔″櫒绔拰瀹㈡埛绔?/p> 棣栧厛瀹夎 Apache 2.2.6 錛屽叿浣撳畨瑁呮柟娉曞ぇ瀹跺弬鑰冪浉鍏寵祫鏂欙紝鎴栬呭弬鐪嬫垜鍐欑殑銆奧indows涓嬪畨瑁匒pache 2.2.x銆嬨?/p> 鍏舵瀹夎 Subversion(浠ヤ笅綆縐癝VN)鐨勬湇鍔″櫒绔拰瀹㈡埛绔備笅杞戒笅鏉ョ殑鏈嶅姟鍣ㄧ鏄釜 zip 鍘嬬緝鍖咃紝鐩存帴瑙e帇緙╁嵆鍙紝姣斿鎴戣В鍘嬪埌 E:\subversion 銆傚鎴風(fēng)瀹夎鏂囦歡鏄釜 exe 鍙墽琛屾枃浠訛紝鐩存帴榪愯鎸夋彁紺哄畨瑁呭嵆鍙紝瀹㈡埛绔畨瑁呭畬鎴愬悗鎻愮ず閲嶅惎銆?/p> 3銆佸緩绔嬬増鏈簱(Repository) 榪愯Subversion鏈嶅姟鍣ㄩ渶瑕侀鍏堣寤虹珛涓涓増鏈簱(Repository)銆傜増鏈簱鍙互鐪嬩綔鏄湇鍔″櫒涓婇泦涓瓨鏀懼拰綆$悊鏁版嵁鐨勫湴鏂廣?/p> 寮濮嬪緩绔嬬増鏈簱銆傞鍏堝緩绔?e:\svn 絀烘枃浠跺す浣滀負(fù)鎵鏈夌増鏈簱鐨勬牴鐩綍銆傜劧鍚庯紝榪涘叆鍛戒護(hù)琛屽茍鍒囨崲鍒皊ubversion鐨刡in鐩綍銆傝緭鍏ュ涓嬪懡浠わ細(xì) 姝ゅ懡浠ゅ湪 E:\svn 涓嬪緩绔嬩竴涓増鏈簱 repos1 銆俽epos1 涓嬮潰浼?xì)鑷姩鐢熸垚涓浜涙枃浠跺す鍜屾枃浠躲?/p> 鎴戜滑涔熷彲浠ヤ嬌鐢?TortoiseSVN 鍥懼艦鍖栫殑瀹屾垚榪欎竴姝ワ細(xì) 鍏堝緩绔嬬┖鐩綍 E:\svn\repos1 錛屾敞鎰忎竴瀹氭槸瑕佺┖鐨勩傜劧鍚庡湪 repos1 鏂囦歡澶逛笂“鍙抽敭->TortoiseSVN->Create Repository here...”錛岀劧鍚庡彲浠ラ夋嫨鐗堟湰搴撴ā寮忥紝榪欓噷浣跨敤榛樿鐨凢SFS鍗沖彲錛岀劧鍚庡氨鍒涘緩浜嗕竴緋誨垪鏂囦歡澶瑰拰鏂囦歡錛屽悓鍛戒護(hù)琛屽緩绔嬬殑涓鏍楓?/p> 4銆佽繍琛岀嫭绔嬫湇鍔″櫒 姝ゆ椂 subversion 鏈嶅姟榪樻病鏈夊紑濮嬶紝鍙槸閫氳繃瀹冪殑鍛戒護(hù)寤虹珛浜嗙増鏈簱銆傜戶緇湪鍒氭墠鐨勫懡浠ょ獥鍙h緭鍏ワ細(xì) svnserve 灝嗕細(xì)鍦ㄧ鍙?3690 絳夊緟璇鋒眰錛?-daemon(涓や釜鐭í綰?閫夐」鍛婅瘔 svnserve 浠ュ畧鎶よ繘紼嬫柟寮忚繍琛岋紝榪欐牱鍦ㄦ墜鍔ㄧ粓姝箣鍓嶄笉浼?xì)閫鍑恒傛敞鎰忎笉瑕佸叧闂懡浠よ紿楀彛錛屽叧闂獥鍙d細(xì)鎶?svnserve 鍋滄銆?/p> 涓轟簡楠岃瘉svnserve姝e父宸ヤ綔錛屼嬌鐢═ortoiseSVN -> Repo-browser 鏉ユ煡鐪嬬増鏈簱銆傚湪寮瑰嚭鐨?URL 瀵硅瘽妗嗕腑杈撳叆錛?nbsp; 鐐?OK 鎸夐挳鍚庡氨鍙互鐪嬭 repos1 鐗堟湰搴撶殑鐩綍鏍?wèi)缁撴瀯浜嗗Q屽彧涓嶈繃榪欐椂 repos1 鏄釜絀哄簱銆?/p> 浣犱篃鍙互浣跨敤--root閫夐」璁劇疆鏍逛綅緗潵闄愬埗鏈嶅姟鍣ㄧ殑璁塊棶鐩綍錛屼粠鑰屽鍔?a title="瀹夊叏" target="_blank" style="text-decoration: none; color: #000000; cursor: pointer; ">瀹夊叏
浠ュ墠闈㈢殑嫻嬭瘯浣滀負(fù)渚嬶紝svnserve 灝嗕細(xì)榪愯涓猴細(xì)
鐒跺悗TortoiseSVN涓殑鐗堟湰搴撴祻瑙堝櫒URL緙╁噺涓猴細(xì)
涓夈佸熀鏈厤緗?/strong>
SVNServer鏈嶅姟鍣?/a>瀹夎瀹屾垚鍚庯紝蹇呴』緇忚繃鍩烘湰閰嶇疆鎵嶈兘浣跨敤銆?/p> 1銆侀厤緗敤鎴峰拰鏉冮檺 鐢ㄦ枃鏈紪杈戝櫒鎵撳紑E:\svn\repos1\conf鐩綍錛屼慨鏀箂vnserve.conf錛?/p> 灝嗭細(xì) 鏀逛負(fù)錛?nbsp; 鍗沖幓鎺夊墠闈㈢殑 # 娉ㄩ噴絎︼紝娉ㄦ剰鍓嶉潰涓嶈兘鏈夌┖鏍箋?/p> 鐒跺悗淇敼鍚岀洰褰曠殑passwd鏂囦歡錛屽鍔犱竴涓笎鍙鳳細(xì) 灝嗭細(xì) 澧炲姞甯愬彿錛?/p> 2銆佸垵濮嬪寲瀵煎叆 涓嬮潰灝辨槸灝嗘垜浠殑鏁版嵁(欏圭洰)瀵煎叆鍒拌繖涓増鏈簱錛屼互鍚庡氨鐢辯増鏈簱綆$悊鎴戜滑鐨勬暟鎹傛垜浠殑浠諱綍鏀瑰姩閮戒細(xì)琚増鏈簱璁板綍涓嬫潵錛岀敋鑷蟲垜浠嚜宸變涪澶便佹敼閿欐暟鎹椂鐗堟湰搴撲篃鑳藉府鎴戜滑鎵懼洖鏁版嵁銆?/p> 姣斿錛屾垜鍦?d:\wwwroot 涓嬫湁涓?guestbook 鏂囦歡澶癸紝閲岄潰瀛樻斁鐨勬槸鎴戠紪鍐欑殑鐣欒█綈跨▼搴忋傚湪姝ゆ枃浠跺す涓?#8220;鍙抽敭 -> TortoiseSVN -> Import...” 錛屽湪寮瑰嚭瀵硅瘽妗嗙殑“URL of repository”杈撳叆“svn://localhost/repos1/guestbook”銆傚湪“Import message”杈撳叆“瀵煎叆鏁翠釜鐣欒█綈?#8221;浣滀負(fù)娉ㄩ噴銆?/p> 鐐?OK 鍚庤姹傝緭鍏ュ笎鍙楓傛垜浠湪鐢ㄦ埛鍚嶅拰瀵嗙爜澶勯兘杈撳叆 test 銆傚畬鎴愬悗 guestbook 涓殑鍐呭鍏ㄩ儴瀵煎叆鍒頒簡 svn://localhost/svn/repos1/guestbook 銆?/p> 鎴戜滑鐪嬪埌鍦?e:\svn\repos1 娌℃湁浠諱綍鍙樺寲錛岃繛涓?guestbook 鏂囦歡澶歸兘娌℃湁寤虹珛錛屽敮涓鐨勫彉鍖栧氨鏄痚:\svn\repos1瀹歸噺鍙樺ぇ浜嗐傚疄闄呬笂鎴戜滑婧恎uestbook涓殑鍐呭宸茬粡瀵煎叆 repos1 鐗堟湰搴撲簡錛屾簮 guestbook 鏂囦歡澶瑰彲浠ュ垹闄や簡銆?/p> 闇瑕佹敞鎰忕殑鏄紝榪欎竴姝ユ搷浣滃彲浠ュ畬鍏ㄥ湪鍙︿竴鍙板畨瑁呬簡 TortoiseSVN 鐨勫鎴鋒満涓婅繘琛屻備緥濡傝繍琛宻vnserve鐨勪富鏈虹殑IP鏄?33.96.121.22錛屽垯URL閮ㄥ垎杈撳叆鐨勫唴瀹瑰氨鏄?#8220;svn://133.96.121.22” 銆?/p> 鍥涖佸熀鏈搷浣滄祦紼?/strong> 1銆佸彇鍑?check out) 鍙栧嚭鐗堟湰搴撳埌涓涓伐浣滄嫹璐濓細(xì) 鏉ュ埌浠繪剰絀虹洰褰曚笅錛屾瘮濡傚湪f鍒嗗尯寤虹珛涓涓┖鏂囦歡澶?f:\work 銆?#8220;鍙抽敭 -> SVN Checkout”銆傚湪“URL of repository”涓緭鍏?#8220;svn://localhost/svn/repos1/guestbook”錛岃繖鏍鋒垜浠氨寰楀埌浜嗕竴浠?guestbook 涓唴瀹圭殑宸ヤ綔鎷瘋礉銆?/p> 2銆佸瓨鍏?check in)/鎻愪氦(commit) 鍦ㄥ伐浣滄嫹璐濅腑浣滃嚭淇敼騫舵彁浜わ細(xì) 鍦?guestbook 宸ヤ綔鎷瘋礉涓殢渚挎墦寮涓涓枃浠訛紝浣滃嚭淇敼錛岀劧鍚?#8220;鍙抽敭 -> SVN Commit... ”銆傝繖鏍鋒垜浠氨鎶婁慨鏀規(guī)彁浜ゅ埌浜嗙増鏈簱錛岀増鏈簱鏍規(guī)嵁鎯呭喌瀛樺偍鎴戜滑鎻愪氦鐨勬暟鎹?/p> 鍦ㄤ慨鏀硅繃鐨勬枃浠朵笂“鍙抽敭 -> TortoiseSVN -> Show Log” 錛屽彲浠ョ湅鍒板榪欎釜鏂囦歡鎵鏈夌殑鎻愪氦銆傚湪涓嶅悓鐨?revision 鏉$洰涓?#8220;鍙抽敭 -> Compare with working copy”錛屾垜浠彲浠ユ瘮杈冨伐浣滄嫹璐濈殑鏂囦歡鍜屾墍閫?revision 鐗堟湰鐨勫尯鍒?/p>
# harry = harryssecret
# sally = sallyssecret
銆銆#harry = harryssecret
銆銆#sally = sallyssecret
銆銆test = test
UI灝變笉璇翠簡錛屾瘮杈冪畝鍗曘傝創(chuàng)涓涓嬪叧閿唬鐮侊紝鍏蜂綋鐨勮瘽榪樻槸鍘葷湅婧愪唬鐮?姝f兂鍔炴硶浼狅紝鎴戣繖git鍑虹偣闂)銆?/p>
聽
/*鏍規(guī)嵁璺緞鍒涘緩鏁版嵁搴撳茍鍒涘緩涓涓〃contact(id nametext addresstext phonetext)*/
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
聽
NSString *docsDir;
NSArray *dirPaths;
聽
// Get the documents directory
dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
聽
docsDir = [dirPaths objectAtIndex:0];
聽
// Build the path to the database file
databasePath = [[NSString alloc] initWithString: [docsDir stringByAppendingPathComponent: @"contacts.db"]];
聽
NSFileManager *filemgr = [NSFileManager defaultManager];
聽
if ([filemgr fileExistsAtPath:databasePath] == NO)
{
const char *dbpath = [databasePath UTF8String];
if (sqlite3_open(dbpath, &contactDB)==SQLITE_OK)
{
char *errMsg;
const char *sql_stmt = "CREATE TABLE IF NOT EXISTS CONTACTS(ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT, ADDRESS TEXT,PHONE TEXT)";
if (sqlite3_exec(contactDB, sql_stmt, NULL, NULL, &errMsg)!=SQLITE_OK)
{
status.text = @"鍒涘緩琛ㄥけ璐?/span>\n";
}
}
else
{
status.text = @"鍒涘緩/鎵撳紑鏁版嵁搴撳け璐?/span>";
}
}
聽
}
聽
/*灝嗘暟鎹繚瀛樺彧鏁版嵁搴擄紝褰撴寜涓嬩繚瀛樻寜閽殑鏃跺?/
聽
- (IBAction)SaveToDataBase:(id)sender
{
sqlite3_stmt *statement;
聽
const char *dbpath = [databasePath UTF8String];
聽
if (sqlite3_open(dbpath, &contactDB)==SQLITE_OK) {
NSString *insertSQL = [NSString stringWithFormat:@"INSERT INTO CONTACTS (name,address,phone) VALUES(\"%@\",\"%@\",\"%@\")",name.text,address.text,phone.text];
const char *insert_stmt = [insertSQL UTF8String];
sqlite3_prepare_v2(contactDB, insert_stmt, -1, &statement, NULL);
if (sqlite3_step(statement)==SQLITE_DONE) {
status.text = @"宸插瓨鍌ㄥ埌鏁版嵁搴?/span>";
name.text = @"";
address.text = @"";
phone.text = @"";
}
else
{
status.text = @"淇濆瓨澶辮觸";
}
sqlite3_finalize(statement);
sqlite3_close(contactDB);
}
}
聽
/*鏍規(guī)嵁杈撳叆鐨勫鍚嶆潵鏌ヨ鏁版嵁*/
- (IBAction)SearchFromDataBase:(id)sender
{
const char *dbpath = [databasePath UTF8String];
sqlite3_stmt *statement;
聽
if (sqlite3_open(dbpath, &contactDB) == SQLITE_OK)
{
NSString *querySQL = [NSString stringWithFormat:@"SELECT address,phone from contacts where name=\"%@\"",name.text];
const char *query_stmt = [querySQL UTF8String];
if (sqlite3_prepare_v2(contactDB, query_stmt, -1, &statement, NULL) == SQLITE_OK)
{
if (sqlite3_step(statement) == SQLITE_ROW)
{
NSString *addressField = [[NSString alloc] initWithUTF8String:(const char *)sqlite3_column_text(statement, 0)];
address.text = addressField;
聽
NSString *phoneField = [[NSString alloc] initWithUTF8String:(const char *)sqlite3_column_text(statement, 1聽 聽 )];
phone.text = phoneField;
聽
status.text = @"宸叉煡鍒扮粨鏋?/span>";
[addressField release];
[phoneField release];
}
else {
status.text = @"鏈煡鍒扮粨鏋?/span>";
address.text = @"";
phone.text = @"";
}
sqlite3_finalize(statement);
}
聽
sqlite3_close(contactDB);
}
}
涓句釜渚嬪瓙錛屽姞鍏ュ璞鏃犳硶澶勭悊娑堟伅fun錛岃屽璞鍙互澶勭悊錛屾鏃禔宸茬粡緇ф壙浜庣被C錛屾墍浠ユ鏃禔涓嶈兘鍐嶇戶鎵緽銆傛垜浠彲浠ョ敤娑堟伅杞彂鐨勬柟寮忥紝鏉ュ皢娑堟伅杞彂緇欒兘澶熷鐞唂un娑堟伅鐨勫璞銆?/span>
褰撶劧鍙互榪欎箞瀹炵幇
|
榪欐牱綆鍗曠殑灝嗘秷鎭漿鍙戝嚭鍘伙紝浣嗘槸姝ゆ柟寮忔瑺濡ワ紝鐗瑰埆鏄綋寰堝娑堟伅閮借A鏉ュ鐞嗭紝浣嗘槸A鍙堟棤娉曞鐞嗙殑鏃跺欙紝浣犻渶瑕佸疄鐜板悇縐峟un鏉ユ彁渚涙瘡涓縐嶆柟娉曞鐞嗘柟寮忋傚茍涓斿綋鍐欎笅浠g爜鐨勬椂鍊欙紝鎵鑳藉鐞嗙殑娑堟伅闆嗗悎涔熷氨蹇呴』紜畾涓嬫潵錛屼篃灝辨槸璇存槸闈欐佺殑銆?/span>
鏈変竴縐嶈В鍐蟲柟妗堝彲浠ヨВ鍐蟲闂 : forwardInvocation錛氭柟娉曪紝姝ゆ柟娉曠戶鎵夸笌NSObject銆備笉榪嘚SObject涓鏂規(guī)硶鐨勫疄鐜幫紝鍙槸綆鍗曠殑璋冪敤浜?span style="color: #666666; font-variant: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; background-color: #ffffff; display: inline !important; float: none;">doesNotRecognizeSelector:
鎴戜滑瑕佸仛鐨勬槸閲嶅啓闇瑕佽漿鍙戞秷鎭殑綾籄鐨?span style="color: #666666; font-variant: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; background-color: #ffffff; display: inline !important; font-family: 'Hiragino Sans GB'; font-size: 13px;">forwardInvocation鏂規(guī)硶錛屼互瀹炵幇灝嗘秷鎭漿鍙戠粰鑳藉鐞唂un娑堟伅鐨勫璞°?/span>
- (void)forwardInvocation:(NSInvocation *)anInvocation |
{ |
if ([B respondsToSelector:[anInvocation selector]) |
[anInvocation B]; |
else |
[super forwardInvocation:anInvocation]; |
} |
榪樻湁鍏抽敭涓姝ワ紝鏄噸鍐?span style="color: #000000; font-family: Arial; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 26px; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; background-color: #ffffff; display: inline !important; float: none;">methodSignatureForSelector鏂規(guī)硶錛屾鏂規(guī)硶鏄湪鍚戝璞″彂閫佷笉鑳藉鐞嗙殑娑堟伅鐨勬椂鍊欒皟鐢ㄧ殑錛屾鏂規(guī)硶鍙垽鏂秷鎭痜un鏄惁鏈夋晥娉ㄥ唽銆傚鏋滄敞鍐岃繃fun錛岄偅涔堝垯榪斿洖fun娑堟伅鐨勫湴鍧涔嬬被鐨勪俊鎭紝濡傛灉鏃犳晥鍒欒繑鍥瀗il錛岄偅涔堝氨crash鎺夈傛墍浠ユ垜浠鎶奻un娑堟伅娉ㄥ唽涓轟竴涓湁鏁堢殑銆?/span>
|
榪欐牱涓鏉ワ紝娑堟伅fun灝嗚杞彂鑷矪銆?/p>
鎴戜滑鏉ヨ涓涓嬪悜涓涓璞″彂閫佹秷鎭悗錛岀郴緇熺殑澶勭悊嫻佺▼
1.棣栧厛鍙戦佹秷鎭痆A fun];
2.緋葷粺浼?xì)妫鏌鑳藉惁鍝嶅簲榪欎釜fun娑堟伅錛屽鏋滆兘鍝嶅簲鍒橝鍝嶅簲
3.濡傛灉涓嶈兘鍝嶅簲錛屽垯璋冪敤methodSignatureForSelector:鏉ヨ闂繖涓秷鎭槸鍚︽湁鏁堬紝鍖呮嫭鍘葷埗綾諱腑璇㈤棶銆?/p>
4.鎺ョ潃璋冪敤forwardInvocation:姝ゆ椂姝ラ涓夎繑鍥瀗il鎴栬呭彲浠ュ鐞嗘秷鎭殑娑堟伅鍦板潃銆傚鏋渘il鍒檆rash錛屽鏋滄湁鍙互澶勭悊fun娑堟伅鐨勫湴鍧錛岄偅涔堣漿鍙戞垚鍔熴?/p>
聽
聽
澶у閮界煡閬擄紝濡傛灉涓緇存暟緇勪綔涓哄弬鏁?/span>鐨勮瘽錛屽彲浠ユ寜濡備笅鏂規(guī)硶鏉ュ畾涔夊嚱鏁幫細(xì)
int func(int *array);
鎴栬?/p>
int func(int array[M]); 鍏朵腑M鏄暟緇勭殑澶у皬銆?/p>
聽
浜屻佷簩緇存暟緇勪綔涓鴻緭鍏ュ弬鏁幫細(xì)
鑰屽鏋?span style="line-height: normal;">杈撳叆鍙傛暟鏄簩緇存暟緇?/span>鐨勮瘽錛屽彲浠ユ寜濡備笅鏂規(guī)硶瀹氫箟錛?/p>
1. 鐩存帴浠ヤ簩緇存暟緇勪綔涓哄弬鏁幫細(xì)
int func(int array[M][N]);
鎴栬?int func(int array[][N]);
涔熷氨鏄錛屼簩緇存暟緇勪綔涓哄弬鏁幫紝鍙互鐪佺暐絎竴緇寸殑澶у皬錛屼絾涓嶅彲浠ョ渷鐣ョ浜岀淮鐨勫ぇ灝忥紝鍥犱負(fù)緙栬瘧鍣ㄥ湪瀵誨潃鏃舵槸鎸塸 + i * N + j鏉ュp[i][j]榪涜瀵誨潃鐨勶紝鎵浠ョ浜岀淮鍙傛暟蹇呴』緇欏嚭銆?/p>
2. 浠ヤ簩緇存寚閽堜綔涓哄弬鏁幫細(xì)
int func(int **array);
鎴戜滑鍙互瀹氫箟浜岀淮鎸囬拡錛岀劧鍚庡鍧鏃舵墜宸ヨ繘琛屽嵆鍙細(xì)*((int *)array + i * N + j)錛屽墠闈㈢殑(int *)鏄己鍒惰漿鎹㈡垚鎸囬拡綾誨瀷銆?/p>
1.緇欏畾涓涓瓧絎︿覆錛岃緭鍑烘湰瀛楃涓蹭腑鍙嚭鐜頒竴嬈″茍涓旀渶闈犲墠鐨勯偅涓瓧絎︾殑浣嶇疆錛?/strong>
姣斿"abaccddeeef" 鍒欐槸b錛岃緭鍑?/span>2
int find_char(const char *str)
{
int pos[256];
const char *p = str;
if((!str)||!(*str))//絀烘寚閽堟垨鑰呯┖涓?/span>
{
return -1;
}
memset(pos,-1,sizeof(pos));
//閬嶅巻涓閬嶏紝瀛樹笅姣忎釜瀛楁瘝鐨勪綅緗紝濡傛灉瀛樿繃涓嬈★紝灝辨妸浣嶇疆璁劇疆涓?2
while (*p)
{
if (pos[*p] == -1)
{
pos[*p] = p - str;
}
else
{
pos[*p] = -2;
}
p++;
}
//閬嶅巻瀛樺偍瀛楁瘝浣嶇疆鐨勬暟緇勶紝濡傛灉瀛樻湁浣嶇疆錛屽垯榪斿洖
p = str;
while (*p)
{
if (pos[*p]>=0)
{
return pos[*p];
}
p++;
}
return -1;
}
2錛岀粰瀹氫竴涓暣鏁幫紝闂繖涓暣鏁拌漿鎴?span style="font-family: Times; font-size: 12px; font-style: normal; font-variant: normal; line-height: normal; ">2榪涘埗鍚庯紝閲岄潰鍖呭惈鏈夊灝戜釜1錛熸瘮濡傦細(xì)10錛屼簩榪涘埗琛ㄧず涓猴紝1010鍒欙紝杈撳嚭2
int howmany(int x)
{
int count = 0;
while (x)
{
if ((x&1) == 1)
{
count++;
}
x = x>>1;
}
return count;
}