@protocol I <NSObject>
-(void) f;
-(void) g;
@end
@interface C : NSObject <I>
{
id<I> i;
}
-(void) toA;
-(void) toB;
@end
我正在使用此代碼,在這裏我使用協議I,我想知道什麼是 (ID < I> i)的意思和這個工作。Objective-C編程中「id <I> i」的含義是什麼?
@protocol I <NSObject>
-(void) f;
-(void) g;
@end
@interface C : NSObject <I>
{
id<I> i;
}
-(void) toA;
-(void) toB;
@end
我正在使用此代碼,在這裏我使用協議I,我想知道什麼是 (ID < I> i)的意思和這個工作。Objective-C編程中「id <I> i」的含義是什麼?
這意味着任何IVAR i
類型(因此id
),符合協議I
。
你會提供一些關於它的更多信息。 –
Here:http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjectiveC/Chapters/ocProtocols.html – Cyrille
您聲明i
作爲ID類型的Objective-C的對象符合您的協議I
。
瞭解更多關於在這裏:http://unixjunkie.blogspot.com/2008/03/id-vs-nsobject-vs-id.html
我是一個對象。它可以是任何類,只要該類符合協議I.這意味着類具有實例方法f和g,它們不帶任何參數並且不返回任何內容。這個類也必須採用正式協議一C類實際採用的協議一內部C類的方法,你可以寫:
i = self;
雖然這可能不是通常是非常有用的。更有可能的是一些其他類採用協議我也一樣,或者至少你將℃的不同實例分配給我,像
i = [[C alloc] init];
ID是指附着在協議I.在這種情況下,你將一個變量然後需要我將是一個變量你可能想在這裏代表宣讀了其類實現協議一
:How to use custom delegates in Objective-C
的ID我是你的委託財產。當你使用它。您可以調用您在協議中描述的委託方法之一,即方法f和g。在符合您給這些方法形成的協議的類中。
?我的意思是,打電話給你的對象A,B,F,G,我? – Cyrille
這是一個樣本知道@protocol的工作,如果我正在採取A,B,F,G和我所以這是什麼錯我感到舒服與這些名字 –
爲什麼不寫你的代碼已經縮小,然後呢? – Cyrille