Objective C知識點滴記錄

2021-08-26 12:55:27 字數 3122 閱讀 9649

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 多型知識點滴

函式的多種不同的實現方式即為多型 在繼承中,有時候基類的一些函式在派生類中也是有用的,但是功能不夠全或者兩者的功能實現方式就是不一樣的,這個時候就希望過載那個基類的函式,但是為了不再呼叫這個函式時,出現不知道呼叫基類的還是子類的情況出現,於是就提出了多型。多型可以說是面象物件語言的強大原因之一。多型...