2012-05-03 19 views
5

OCMock kullanarak bir sınıfın tüm örneklerini örnek bir yöntemle karşılaştırmak istiyorum ancak yöntemin içinde oluşturulacak bir sınıf örneğine sahip değilim. Ben test ediyorum.Bir sınıfın tüm örneklerini OCMock'te bir yöntemle ilişkilendirme

Yani sorum şu: Bu yöntemin bir sınıfın tüm örnekleri için geçersiz kılınması mümkün mü yoksa bu örneği yöntem içinde oluşturmak yerine yönteme enjekte etmem gerekiyor mu?

yani

[[ClassThatHasTheInstanceMethodToOverride andCall:@selector(callThisMethodInstead) onObject:self] someInstanceMethod]; 

cevap

1

I yöntemler bu dizi sonunda var:

yöntem originalMethod = sıfırdır; Yöntem swizzleMethod = nil;

#import <objc/runtime.h> 

.... 

- (void) swizzleInstanceMethodForInstancesOfClass:(Class)targetClass selector:(SEL)selector 
{ 
    originalMethod = class_getInstanceMethod(targetClass, selector); 
    swizzleMethod = class_getInstanceMethod([self class], selector); 
    method_exchangeImplementations(originalMethod, swizzleMethod); 
} 

- (void) deswizzle 
{ 
    method_exchangeImplementations(swizzleMethod, originalMethod); 
    swizzleMethod = nil; 
    originalMethod = nil; 
} 
İlgili konular