SORU
19 HAZİRAN 2009, Cuma


Objective-C: birden çok bağımsız değişken ile seçiciler Arıyorum

Sınıfım.m, tanımlanmış ettim

- (void) myTest: (NSString *) withAString{
    NSLog(@"hi, %@", withAString);
}

ve Sınıfım uygun beyanı.h . Daha sonra aramak istiyorum

[self performSelector:@selector(mytest:withAString:) withObject: mystring];

Sınıfım.m ama ben bir hata aynı olsun * Yakalanmamış istisna 'NSİnvalidArgumentException', sebep: '* . nedeniyle uygulaması sona eriyor -[Sınıfım myTest:withAtring:]: tanınmayan seçici örneği gönderilen 0xe421f0'

Bir dize konsolu için çıkarılan ve sadece iyi çalıştı herhangi bir argüman aldı, bir seçici ile basit bir dava çalıştım. Kodu yanlış olan nedir ve bunu nasıl düzeltebilirim? Teşekkürler.

CEVAP
19 HAZİRAN 2009, Cuma


Objective-C, seçici imzası oluşur:

  1. Bu yöntemin adı (bu durumda olurdu '') myTest (gerekli)
  2. ':' (İki nokta üst üste) yöntemi bir giriş varsa. yöntem adı izleyen bir
  3. Ve ':' her ek giriş için. bir adı

Seçiciler hiçbir bilgiye sahip:

  1. Giriş türleri
  2. Yöntemin dönüş türü.

İşte seçiciler arada: diğer sınıfın yöntemlerini gerçekleştiren sınıf bir uygulama

@implementation ClassForSelectors
- (void) fooNoInputs {
    NSLog(@"Does nothing");
}
- (void) fooOneIput:(NSString*) first {
    NSLog(@"Logs %@", first);
}
- (void) fooFirstInput:(NSString*) first secondInput:(NSString*) second {
    NSLog(@"Logs %@ then %@", first, second);
}
- (void) performMethodsViaSelectors {
    [self performSelector:@selector(fooNoInputs)];
    [self performSelector:@selector(fooOneInput:) withObject:@"first"];
    [self performSelector:@selector(fooFirstInput:secondInput:) withObject:@"first" withObject:@"second"];
}
@end

Bir seçici oluşturmak istediğiniz yöntemi tek bir giriş vardır, bunun için bir seçici gibi oluşturursunuz:

SEL myTestSelector = @selector(myTest:);

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Jared Busch

    Jared Busch

    25 Mayıs 2011
  • MugenPowerBatteries

    MugenPowerBa

    8 EKİM 2010
  • Propaganda Time

    Propaganda T

    19 EYLÜL 2010