SORU
12 EKİM 2008, Pazar


Objective-C-ınit yöntemi özel yapmak mümkün mü?

(Özel) Objective-C sınıf -init gizle yöntemi gerekiyor

Bunu nasıl yapabilirim?

CEVAP
24 NİSAN 2011, Pazar


unavailable

Başlık unavailable öznitelik oluşturmak için ekleyinderleyici hataınit için herhangi bir çağrı.

-(instancetype) init __attribute__((unavailable("init not available")));  

compile time error

Eğer bir nedeni yok ise, sadece yazın __attribute__((unavailable)) __unavailable bile

-(instancetype) __unavailable init;  

doesNotRecognizeSelector:

doesNotRecognizeSelector: NSİnvalidArgumentException yükseltmek için kullanıyorlar.“Çalışma zamanı sistemi bir nesneye ya da ileriye doğru cevap olamaz aSelector bir mesaj aldığı zaman bu yöntemi çağırır.”

- (instancetype) init {
    [self release];
    [super doesNotRecognizeSelector:_cmd];
    return nil;
}

NSAssert

NSAssert NSİnternalİnconsistencyException atmak ve mesaj göstermek için kullanın:

- (instancetype) init {
    [self release];
    NSAssert(false,@"unavailable, use initWithBlah: instead");
    return nil;
}

raise:format:

raise:format: kendi özel durum için kullanın:

- (instancetype) init {
    [self release];
    [NSException raise:NSGenericException 
                format:@"Disabled. Use  [[%@ alloc] %@] instead",
                       NSStringFromClass([self class]),
                       NSStringFromSelector(@selector(initWithStateDictionary:))];
    return nil;
}

[self release] nesne zaten allocözetlenmiştir. çünkü ihtiyaç var. ARC kullanırken derleyici senin için arar. Her durumda, bir şey bilerek idamı hakkında ne zaman endişe.

objc_designated_initializer

init belirlenmiş bir başlatıcı kullanımını zorlamak için devre dışı bırakmak istiyorsanız, bu durumda, bunun için bir öznitelik vardır:

-(instancetype)myOwnInit NS_DESIGNATED_INITIALIZER;

Bu başka bir başlatıcı yöntemi myOwnInit DAHİLİ olarak çağırır sürece bir uyarı oluşturur. Ayrıntılar gelecek böyle büyük mükafat sürümü (sanırım) sonra Adopting Modern Objective-C yayınlanacaktır.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Bratayley

    Bratayley

    30 Aralık 2010
  • BSA

    BSA

    9 NİSAN 2012
  • The Platform

    The Platform

    14 HAZİRAN 2006