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