SORU
6 HAZİRAN 2014, Cuma


Salt okunur olmayan bilgisayarlı Swift değişken özellikleri

Yeni Apple Swift dili ile bir şeyler anlamaya çalışıyorum. Hadi Objective-C readonly özellikleri var aşağıdaki gibi bir şey yaptım ki, ve tek tek değiştirilemez. Ancak, belirli bir yöntem kullanarak, özelliklerini mantıklı bir şekilde değişti.

Aşağıdaki örnek alıyorum, çok basit bir saat. Objective-C bunu yazmak istiyorum

@interface Clock : NSObject

@property (readonly) NSUInteger hours;
@property (readonly) NSUInteger minutes;
@property (readonly) NSUInteger seconds;

- (void)incrementSeconds;

@end

@implementation Clock

- (void)incrementSeconds {
     _seconds  ;

     if (_seconds == 60) {
        _seconds = 0;
        _minutes  ;

         if (_minutes == 60) {
            _minutes = 0;
            _hours  ;
        }
    }
}

@end

Belirli bir amaç için, saniye, dakika ve saat doğrudan temas edemez, sadece ikinci bir yöntemi kullanarak ikinci bir artış sağladı. Sadece bu yöntem örnek değişkenleri hile kullanarak bu değerleri değiştirebilir.

Swift diye bir şey olmadığına göre, bir eşdeğer bulmak için çalışıyorum. Eğer bunu yaparsam:

class Clock : NSObject {

    var hours:   UInt = 0
    var minutes: UInt = 0
    var seconds: UInt = 0

    func incrementSeconds() {

        self.seconds  

        if self.seconds == 60 {

            self.seconds = 0
            self.minutes  

            if self.minutes == 60 {

                self.minutes = 0
                self.hours  
            }
        }
    }
}

Bu işe yarardı, ama herkes doğruca özelliklerini değiştirebilir.

Belki de ben zaten Objective-C kötü bir tasarım vardı ve bu potansiyel yeni Swift eşdeğer mantıklı değil. Ve eğer başka bir şey varsa, çok minnettar olacağım;) olsaydı

Belki gelecekErişim Kontrol MekanizmalarıApple tarafından söz verilen cevap mı?

Teşekkürler!

CEVAP
30 EYLÜL 2014, Salı


Sadece private(set) ile özellik bildirimi gibi önek:

private(set) var hours:   UInt = 0
private(set) var minutes: UInt = 0
private(set) var seconds: UInt = 0

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • audivila

    audivila

    5 HAZİRAN 2009
  • Bigapplemagic

    Bigapplemagi

    22 EYLÜL 2011
  • PorterRobinsonVEVO

    PorterRobins

    11 Kasım 2013