2012-10-30 64 views
1

我無法將值返回給委託。代表返回值

@protocol DataDelegateImage 
- (void)failImage; 
- (NSData*)successImage; 
@end 

@property (nonatomic, strong) id <DataDelegateImage> delegateImage; 
@property (nonatomic, strong) NSMutableData* d; 

,我打電話給我的代表,如:

[self.delegateImage failImage]; 

但現在我試圖調用成功返回委託的數據內容,但我認爲我有什麼不對的,因爲代碼沒有按」工作。

[self.delegateImage successImage:self.d]; 

任何想法?

回答

5

你的傳球self.dsuccessImage並沒有參數,你傳遞什麼吧。如果你希望能夠到的東西傳遞給它,然後它應該是這樣的

 - (void)successImage:(NSMutableData*)para1; 

 - (void)successImage:(NSData*)para1; 

,除非你想返回的東西,以及傳遞東西,它在什麼情況下使用

 - (NSData*)successImage:(NSData*)para1; 

括號- (NSData*)type是返回類型也是應該的,這是你要重新的object類型從方法轉向。然後你的方法名successImage那麼你就必須:(NSData*)para1你可以添加更多的參數,以及

 - (NSData*)successImage:(NSData*)para1 withAString:(NSString*)para2; 

type:(NSData*)para1參數括號內是需要的對象類型的參數。

希望這會有所幫助。

+0

Objective-C的語法讓我發瘋。 = p thx – lolol

+0

我花了一段時間才把頭轉過來。 – Popeye

+1

一旦你瞭解它,我覺得語法是最酷的部分。 –

2

變化- (NSData*)successImage;-(void)successImage:(NSData*)data;

-1

如果要設置或發送數據到delegateImage你可以做得一樣@普利文-S說

,如果你想從你可能想要做的委託數據這樣的:

self.d = [[self.delegateImage successImage]mutableCopy]; 
+0

我無法真正理解您的代碼。你能詳細說明嗎? – lolol

+0

我想他是什麼意思,如果你想從' - (NSData *)successImage;'並將其複製到self.d中返回的數據,但我不認爲你想要的方法返回任何你想給的方法一個參數。我想@BoteRock只是想念這個問題。 – Popeye

1

你的宣言

- (NSData*)successImage; 

聲明沒有參數和返回NSData類型的值的方法。通過調用代碼判斷,看起來像你真正想要的是一種方法,它只需要一個NSData類型的參數,並且不返回任何內容。這可以通過以下聲明來實現:

- (void) successImage: (NSData *) data;