Objective C 在類中設定不同協議

2021-09-07 01:46:18 字數 3398 閱讀 1300

在下面的**中,設定了兩種不同的協議規則:一種是老師對學生設定的協議:即老師發出命令後,學生站起來、回答問題、坐下; 另一種是我對學生設定的協議:即學生按照我的協議中的初始化函式去初始化乙個整數。

//我設定的協議myprotocol,裡面有我設定的協議規則

(屬性、函式)

作為乙個單獨的檔案

1

協議3//4

//created by ma c on 15/8/12.5//

6//78

#import910

@protocol myprotocol

11@property(nonatomic,assign)nsinteger integer;

12 -(id

)initwithinteger:(nsinteger) i;

13 -(void

) show2;

14 -(void

)print;

15 -(void

) initialize;

16@end

//老師設定的協議和類本身的屬性 .h和.m檔案;在類裡面直接設定協議,沒有作為單獨的檔案

1

協議3//4

//created by ma c on 15/8/12.5//

6//78

#import

9@protocol teacherdelegate//

老師制定協議規則

10@required //在協議**人類中必須要全部實現的方法

11 -(void

) show1;

12 -(void

) standup;

13 -(void

) answerquestion;

14@optional //協議**人類中可以選擇性的實現(可以實現,也可以不用實現)

15 -(void

) setdown;

16@end

1718

19@inte***ce

teacher : nsobject

20 @property(nonatomic,weak) id

delegate

;21 -(void

)ordering;

22@end

1

協議3//4

//created by ma c on 15/8/12.5//

6//78

#import

"teacher.h"9

10@implementation

teacher

11@synthesize

delegate

;12 -(void

)ordering

1320

@end

//學生類student 它作為實現這兩種協議的**人(委託者).h和.m檔案 

1

協議3//4

//created by ma c on 15/8/12.5//

6//78

#import

"teacher.h"9

#import

"teacherdelegate.h"10

#import

"myprotocol.h"11

@inte***ce student : teacher12

@end

1

協議3//4

//created by ma c on 15/8/12.5//

6//78

#import

"student.h"9

10@implementation

student

11@synthesize

integer;

12//

teacherdelegate

13 -(void

) show1

1417 -(void

) standup

1821 -(void

) answerquestion

2225 -(void

) setdown

2629

//myprotocol

30 -(void

) show2

3134 -(id

)initwithinteger:(nsinteger) i

3541

return

self;42}

43 -(void

)print

4447 -(void

) initialize

4851

@end

//主函式測試這兩種協議的實現

1

協議3//4

//created by ma c on 15/8/12.5//

6//78

#import

9#import

"teacher.h"10

#import

"student.h"11

#import

"myprotocol.h"12

int main(int argc, const

char *argv)

1330

return0;

31 }

//執行結果

2015-08-12

19:55:51.498 協議[1965:139749] the teacher'

s protocol is running!

2015-08-12

19:55:51.499 協議[1965:139749] teacher is ordering!

2015-08-12

19:55:51.499 協議[1965:139749

] student stand up.

2015-08-12

19:55:51.500 協議[1965:139749

] student answer question.

2015-08-12

19:55:51.500 協議[1965:139749] student set down!

2015-08-12

19:55:51.500 協議[1965:139749] the my protocol is running!

2015-08-12

19:55:51.500 協議[1965:139749] integer=10

2015-08-12

19:55:51.500 協議[1965:139749] integer'

s initialization succeed.

program ended with exit code: 0

在objective c中列印自定義類

nsstring description 是基類nsobject 所帶的方法,在自定義的子類中,我們可以過載該方法來實現列印自定義類。首先,我們可以自定義乙個person類。inte ce person nsobject end implementation person id init retur...

關於objective c中類的組合

關於objective c中類的組合問題,我們先來看一道題 1.設計2個類,類之間的關係自擬 比如繼承 組合 1 身材資料 1 屬性 身高 體重 手長 腳長 2 方法 屬性相應的set和get方法 2 人 1 屬性 年齡 身高 體重 手長 腳長 2 方法 屬性相應的set和get方法 思路 在這道題...

Objective C 中的類和物件

在objc4 532.2以後,蘋果把nsobject的實現也挪進來了。想要了解nsobject底層實現終於不用去摳gnustep了 好了,下面正文 runtime裡面,宣告了id和class的型別,簡化一下如下 1 2 3 4 5 6 7 8 9 structobjc class structobj...