2011-03-05 28 views
0

我認爲這應該很容易,但是我在編寫簡單的類級別類別方法時遇到問題,該方法需要一個參數塊。這是我的例子,當試圖添加一個類方法到NSAutoreleasePool。使用類別添加Objective-C中的塊的方法

#import <Foundation/Foundation.h> 
@interface NSAutoreleasePool (MyBlockAdditions) 
+ (void)forWork: (void (^)(void))work; 
@end 

#import "NSAutoreleasePool+MetaSkillsAdditions.h" 
@implementation NSAutoreleasePool (MyBlockAdditions) 
+ (void)forWork: (void (^)(void))work { 
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 
    work(); 
    [pool release]; 
} 
@end 

[NSAutoreleasePool forWork:^{ 
    ... 
}]; 

我目前收到此錯誤。我很可能會做一些愚蠢的事情。

 
2011-03-05 16:17:49.150 MyApp[28100:40b] +[NSAutoreleasePool forWork:]: unrecognized selector sent to class 0xb20598 
2011-03-05 16:17:49.154 MyApp[28100:40b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '+[NSAutoreleasePool forWork:]: unrecognized selector sent to class 0xb20598' 

回答

0

你有沒有包含在類的頭文件(NSAutoreleasePool+MetaSkillsAdditions.h)到包含調用新方法的代碼文件?

+0

不導入標題會導致編譯時警告,但與報告的運行時錯誤無關。 – Anomie 2011-03-05 21:56:52

+0

這是正確的。我的錯。 – pwc 2011-03-05 21:59:09

+0

是的,這是與我瘋狂的共享代碼結構。現在解決。 – MetaSkills 2011-03-06 00:53:37

0

它似乎爲我工作。你確定實現該類別的文件實際上正在編譯到應用程序中嗎?

相關問題