1、方法呼叫基本語法
[object method];
[object methodwithinput:input];
方法可以有返回值:
output = [object methodwithoutput];
output = [object methodwithinputandoutput:input];
還可以呼叫累方法:
id mystr = [nsstring string];
[color=red]id型別意味著mystr可以是任意型別的物件。[/color]
或者:nsstring* mystr = [nsstring string];
[color=red]注意:在物件型別的右邊有乙個星號(*),在objective-c中所有的物件變數都是指標型別,id型別已經被預定義為指標型別,所以不需要加乙個星號。[/color]
2、方法巢狀呼叫
在許多程式語言中,巢狀的方法或函式是這樣呼叫的:
function1(function2()); //function2()的返回值作為引數傳遞給function1()。
在objective-c中,巢狀的方法或函式呼叫:
[nsstring stingwithformat:[prefs format]];
[color=blue]要盡量避免在一行語句中進行兩層以上的巢狀,這樣會使**的可讀性降低。[/color]
3、多個輸入引數的方法定義
在objective-c中,乙個方法的名字可以被拆分成幾段:
- (bool) writetofile:(nsstring *)path atomically:(bool)useauxiliaryfile;
你可以這樣呼叫這個方法:
bool result = [mydate writetofile:@"/tmp/log.txt" atomically:no];
[color=red]這些不是命名引數。在執行中,該方法的名字實際上是:writetofile:atomically:[/color]
4、點操作符
在mac os x 10.5中,objective-c 2.0新增了點操作符的設定器(setter)和獲取器(getter):
user.name = @"mike"; //[user setname:@"mike"];
output = user.name; //output = [user name];
[color=red]區別:點語法只能使用在設定器(setter)和獲取器(getter)上,而不能用於普通方法![/color]
5、在nil上呼叫方法
在objective-c中,nil物件的作用等同於其他語言的null指標。[color=red]不同的地方在於,在nil上呼叫方法不會導致程式崩潰或丟擲異常。[/color]
6、類的建立
在objective-c語法中,乙個類通常分為兩部分:類的介面(標頭檔案)和類的實現。
類的介面(inte***ce)通常存放在類似classname.h的檔案中,在這裡我們定義例項變數和公用方法(public)。
類的實現存放在classname.m這樣的檔案中,它實現了介面中定義的方法。通常還可以定義外面不能訪問的私有方法(private)。
user.h
--------------------
#import
@inte***ce user : nsobject
- (nsstring*) username;
- (nsstring*) password;
- (void) setusername:(nsstring*) input;
- (void) setpassword:(nsstring*) input;
@end
user.m
--------------------
#import "user.h"
@implemention user
- (nsstring*) username
- (nsstring*) password
- (void) setusername:(nsstring*) input
- (void) setpassword:(nsstring*) input
@end
[color=red]在objective-c中,get這個詞有著特殊含義,獲取器(getter)是不帶get字首的。方法前面的減號(-)表示這是乙個例項方法,如果方法名前面是個加號(+),表示這是乙個類方法。[/color]
[color=blue]釋放乙個物件有兩種方法:release和autorelease。標準的release會立即釋放物件的引用,autorelease直到當前方法結束才會釋放(除非你新增自定義的**來明確的改變它)。[/color]
7、類目(category)
類目是objective-c中最有用的乙個特性。類目允許你為乙個已存在的類新增一些方法,而不用子類化該類,也不需要你了解該類的實現細節。
例如:我想給nsstring新增乙個方法,判斷它是不是乙個url,寫法如下:
nsstring-nsstringhelper.h
-------------------------------
#import
@inte***ce nsstring (nsstringhelper)
- (bool) isurl;
@end
這很像乙個類的宣告,不同的地方在於後面沒有列出父類,並且在括號裡寫了類目的名字。
類目的名字可以隨便取,但最好能表達出你在類目中包含的方法所要做的事。
#import "nsstring-nsstringhelper.h"
@implemention nsstring (nsstringhelper)
- (bool) isurl
@end
現在你可以使用nsstring的這個方法了:
nsstring* str1 = @"";
nsstring* str2 = @"helloworld";
if ([str1 isurl])
nslog(@"str1 is a url.");
if ([str2 is url])
nslog(@"str2 is a url");
內容更新中。。。。。
Perl知識點滴
函式多返回值 v1 abc v2 bcd v3,v4 upcase v1,v2 sub upcase return wantarray parms parms 0 print v3,v4 取得陣列長度 a 1,2,3 my alen a print alen aa 1,111 2,2222 3,33...
Linux 知識點滴
linux的原作者是誰?linus torvalds,托瓦茲.作業系統應該包括哪兩個部分?乙個是 核心與其提供的介面工具 另乙個是 利用核心提供的介面工具所開發出來的軟體 linux的發展分為兩種版本,哪兩種?穩定版本的偶數版,如2.6.x,適合與商業與家用環境使用 發展中版本的奇數版,適合開發特殊...
C 多型知識點滴
函式的多種不同的實現方式即為多型 在繼承中,有時候基類的一些函式在派生類中也是有用的,但是功能不夠全或者兩者的功能實現方式就是不一樣的,這個時候就希望過載那個基類的函式,但是為了不再呼叫這個函式時,出現不知道呼叫基類的還是子類的情況出現,於是就提出了多型。多型可以說是面象物件語言的強大原因之一。多型...