oc基礎語法 oc特有語法(1)

2021-07-02 07:56:12 字數 2505 閱讀 3576

1)根據以前學的,呼叫方法是這樣的

student *stu = [student new];

[stu setage:100];

int age = [stu age];

如果用點語法,這樣就可以呼叫了

stu.age = 100

;int age = stu.age

;

2)點語法的本質

其實點語法的本質還是方法呼叫,當使用點語法時,編譯器會自動展開成相應的方法。

3)在xcode專案建立乙個class類,叫person。在person.h中申明

#import 

@inte***ce

person : nsobject

// 年齡的getter和setter

- (void)setage:(int)age;

- (int)age;

- (void)setname:(nsstring *)name;

- (nsstring *)name;

@end

在person.m中實現類的功能

#import "person.h"

@implementation

person

- (void)setage:(int)age

- (int)age

#pragma mark - 姓名的seter和getter

#pragma mark 姓名的set方法

- (void)setname:(nsstring *)name

#pragma mark 姓名的get方法

- (nsstring *)name

@end

在main.m中

#import 

#import "person.h"

int main(int argc, const

char * argv)

- (int) age

這兩個方法都將會引發死迴圈。

1)@property用在@inteface中用來自動生成setter和getter的宣告。例如:

用@property int age;就可以代替下面的兩行

-(int)age;  

-(void)setage:(int)age;

@synthesize

用在@implementation中,用來自動生成setter和getter的實現。

- (int)age

- (void)setage:(int)age

2)注意細節:

1. @synthesize age = _age;setter和getter實現中會訪問成員變數_age ,如果成員變數_age不存在,就會自動生成乙個@private的成員變數_age。

2. 若手動實現了setter方法,編譯器就只會自動生成getter方法,若手動實現了getter方法,編譯器就只會自動生成setter方法,若同時手動實現了setter和getter方法,編譯器就不會自動生成不存在的成員變數。

3. @propert的新特性

自從xcode 4.x後,@property就獨攬了@synthesize的功能。也就是說,@property可以同時生成setter和getter的宣告和實現

預設情況下,setter和getter方法中的實現,會去訪問下劃線 _ 開頭的成員變數.

4)例項執行

建立person.h檔案

#import 

@inte***ce

person : nsobject

//@property

int age;

@end

person.m檔案

#import "person.h"

@implementation

person

@end

在main.m中

#import

"person.h"

int main(int argc, const

char * argv)

執行結果

可以看出要想懶得動手,乙個@property就搞定了。

補充一句,如果是用@property申明的屬性,而且沒有指明屬性的作用域,那麼這個屬性預設是protect屬性的。

好了,今天就學到這裡了

OC 特有語法1

asp.net unity開發 net培訓 期待與您交流!一 利用點語法替換set方法和get方法 1.方法呼叫 student stu student new stu setage 10 int age stu age 這是set和get的物件呼叫方法 2 點語法 stu.age 10 int a...

OC特有語法 多型

多型 指標以父類型別宣告,但實際執行時指向的是其某個子類的物件,當用這個指標呼叫方法時,會根據其指向的不同子類物件呼叫不同的物件方法。這種現象叫多型。多型的前提是子類會覆蓋父類的方法。多型的應用 需要乙個新的函式專門用來餵狗 void feed dog d 如果這個時候也需要喂貓,那就應該重寫新乙個...

OC特有語法 SEL

sel就是對方法的一種包裝。包裝的sel型別資料它對應相應的方法位址,找到方法位址就可以呼叫方法。在記憶體中每個類的方法都儲存在類物件中,每個方法都有乙個與之對應的sel型別的資料,根據乙個sel資料就可以找到對應的方法位址,進而呼叫方法。inte ce person nsobject void t...