2012-10-17 26 views
0

這是一個超基本的問題。我想在我的應用程序中使用Matt Gemmell的MGImageUtilities中的一個類。我已經添加了類UIImage+ProportionalFill.hUIImage+ProportionalFill.m到我的項目。他們定義了方法imageScaledToFitSize。但是當我嘗試運行該應用程序時,出現unrecognized selector sent to instance錯誤。很顯然,我必須讓這個方法可用於我希望它運行的類,但是我不知道該怎麼做。我有#import UIImage+ProportionalFill.h在h和視圖控制器的.m文件兩者,並且在.h文件我已經添加基本問題:如何在另一個類中包含類別方法?

@interface UIImage (ProportionalFill) 

- (void)imageScaledToFitSize; 

@end 

但我仍然得到錯誤。我認爲我有一些非常重要的原因,但我不知道它是什麼。

您的想法?

UPDATE:我的項目有以下類別:UIImage+ProportionalFill,「GHViewController , and ' GHAppDelegate .的UIImage + ProportionalFill`包含以下聲明(以及對應的實現):

- (UIImage *)imageScaledToFitSize:(CGSize)size; 

GHViewController.m,我有以下代碼:

UIImage *img = [self createImage]; 
    UIImage *pic; 
    if (self.serviceType==SLServiceTypeFacebook) 
    { 
     CGSize size = CGSizeMake((404*320)/([[UIScreen mainScreen] bounds].size.height - 64), 404); 
     pic = [img imageScaledToFitSize:size]; 
    } 

這是我打電話的唯一地方imageScaledToFitSize

+0

您可以粘貼控制檯日誌輸出嗎? – sergio

+0

您不應該向.h文件添加任何內容。您只需要在.m文件中導入額外的.h文件。而已。 – rmaddy

+0

確保UIImage + ProportionalFill.m選中了目標成員資格複選標記(在項目資源管理器中選擇該文件,您應該在文件檢查器右側看到此選項) –

回答

2

如果您已包括.m文件,你不應該得到unrecognized selector sent to instance錯誤。所以我懷疑,要麼.m文件沒有正確地添加到您的目標,或者說你在調用方法時拼寫錯誤的東西,或將其發送給錯誤的對象(不是UIImage一個實例)。

如果你提供你所呼叫的方法(即,在哪個對象),以及確切的控制檯日誌輸出,我也許能進一步幫助你的方式更多信息。

要檢查.m文件實際上是分配給你的目標,去Xcode中的項目信息窗格中顯示的構建階段窗格的目標;在那裏你可以找到構建它時包含的所有模塊的列表。

作爲一般的注意事項:

  1. 包括.h文件爲您的類別將阻止編譯器發射一個約一個未定義的方法警告;不包括.h文件將不會阻止實際調用,如果實現是可用的方法;

  2. 如果您不包含.m文件,您會得到unrecognized selector sent to instance的例外。

+0

我剛剛編輯了我的問題以提供更多信息。雖然我看到你剛剛添加了第三段,所以我會去檢查構建階段窗格.... –

+0

這樣做了!我添加了'UIImage + ProportionalFill.m'到編譯源代碼,並且一切都很好。非常感謝! –

+0

很高興有幫助! – sergio

1

該類別提供該方法的實現。我認爲可能發生的事情是您將類別添加到錯誤的類中。這就像添加一個類別到您的MyClass和類別調用類似:

[self count]; // Method from an NSArray 
相關問題