2012-08-08 47 views
2

我新的Objective-C和我的生活不能讓過去的錯誤,「爲選擇無類法」在xcode中,如何調用返回值的類方法?

這裏是我的.h代碼:

#import <UIKit/UIKit.h> 

@interface PhotoCapViewController : UIViewController < UIImagePickerControllerDelegate, UINavigationControllerDelegate > { 
    UIImageView * imageView; 
    UIButton * choosePhotoBtn; 
    UIButton * takePhotoBtn; 
} 
@property (nonatomic, retain) IBOutlet UIImageView * imageView; 
@property (nonatomic, retain) IBOutlet UIButton * choosePhotoBtn; 
@property (nonatomic, retain) IBOutlet UIButton * takePhotoBtn; 
- (IBAction)getPhoto:(id)sender; 

+ (UIImage *)burnTextIntoImage:(NSString *)text :(UIImage *)img; 

@end 

這裏是我在.M定義函數

+ (UIImage *)burnTextIntoImage:(NSString *)text :(UIImage *)img { 

    ... 

    return theImage; 
} 

這裏是我如何調用該函數

UIImage* image1 = [PhotoCapViewController burnTextIntoImagetext:text1 img:imageView.image]; 

任何幫助將不勝感激。謝謝。

+0

什麼問題呢? – 2012-08-08 06:13:42

回答

7

您調用的方法與定義不符。

的定義是這樣的:

+ (UIImage *)burnTextIntoImage:(NSString *)text :(UIImage *)img; 

所以方法名是這樣的:

burnTextIntoImage:: 

但你這樣稱呼它:

UIImage* image1 = [PhotoCapViewController burnTextIntoImagetext:text1 img:imageView.image]; 

所以你要調用一個名爲這樣的方法:

burnTextIntoImagetext:: 

你可以正確地稱呼它:

UIImage* image1 = [PhotoCapViewController burnTextIntoImage:text1 :imageView.image]; 

但實際上,你的方法應該叫burnText:(NSString*)text intoImage:(UIImage*)image,所以它使更多的是「一句話」,像這樣:

+ (UIImage *)burnText:(NSString *)text intoImage:(UIImage *)image; 

... 

UIImage *image1 = [PhotoCapViewController burnText:text1 intoImage:imageView.image]; 
+0

您的最後一段是_truly_正確的答案。其餘的只是修補眼前的問題。 – 2012-08-08 06:39:07

+0

同意。順便說一句,如果你改變了你最喜歡的結,請解決一個SO用戶名,否則我完全失去了蹤跡。 – jrturton 2012-08-08 06:48:08

+0

已注意。 :)雖然我在這裏的大部分時間都是「喬什卡斯韋爾」,但是(這是一個令人吃驚的巧合,也是我在現實生活中使用的名字)。 – 2012-08-08 06:52:00

-1

你撥打代碼錯誤,請嘗試使用此代碼

UIImage* image = [PhotoCapViewController burnTextIntoImage:text1 img:imageView.image]; 
+0

@CReaTuS:謝謝,但在上面的聲明中,它已經完成了** +(UIImage *)burnTextIntoImage:(NSString *)text:(UIImage *)img; ** – Neo 2012-08-08 08:10:23

2

您的方法聲明不完整。

變化

+ (UIImage *)burnTextIntoImage:(NSString *)text :(UIImage *)img; 

+ (UIImage *)burnTextIntoImage:(NSString *)text img:(UIImage *)img; 
+0

不錯的地方,我專注於調用代碼不匹配,並錯過了缺少的參數名稱! – jrturton 2012-08-08 06:30:40

+3

這不是一個參數名稱,它是方法名稱的一部分。參數名稱位於類型的右側。 – Jesper 2012-08-08 07:53:46

+0

@Jesper當然是,謝謝。早上對我來說很早... – jrturton 2012-08-08 16:31:10

相關問題