SORU
12 Mayıs 2011, PERŞEMBE


iPhone - zaman dilimi rahatlık arasında Farklar yöntemleri

NSTimeZone Bu yöntemleri olduğunu görüyorum

defaultTimeZone  
localTimeZone  
systemTimeZone

Birisi bana açıklayabilir misiniz, farkları bu çağrıları arasında, diğeri yerine kullanılması gereken basit açısından? Elma içinde herhangi bir şey hakkında bu dokümanlar anlamıyorum.

CEVAP
13 Mayıs 2011, Cuma


Dosyayı farklı dil kuru tarafında biraz, emin olmak için, ve isim benzerliği potansiyel olarak kafa karıştırıcı. NSTimeZone docs burada alıntı ve bunları açıklamaya çalışacağım:

systemTimeZone
Zaman dilimi şu anda sistem tarafından kullanılır. Geçerli saat dilimi belirlenemiyor, GMT saat dilimini döndürür.

Bu zaman dilimi olan cihaz inanmaktadır olduğunu; bu genellikle otomatik olarak ayarlayın ve sonra da haberleşmek için cihazın fiziksel konumu, ama eğer kullanıcı açıkça ayarlanmış belirli bir zaman dilimi Ayarları App, bunu alacaksın.

defaultTimeZone
Geçerli uygulama için varsayılan saat dilimi. Eğer varsayılan bir saat dilimi belirlenmişse, bu yöntem systemTimeZone çağırır ve sistem zaman dilimini döndürür.

Uygulamanız eğer cihaz sistemi etkilemeden başka bir bölgede, ama sanki eylemleri gerçekleştirmek böylece kendi zaman dilimini ayarlamak için izin verilir zaman dilimi (ve böylece diğer uygulamalar). Ayarı setDefaultTimeZone: bir çağrı ile yapılır. Eğer bunu yapmamış olsanız bile, bu Ara systemTimeZone arama aynıdır.

localTimeZone
Mevcut bir uygulama için varsayılan saat dilimi ileten tüm mesajları nesnesi. Yerel saat dilimi her zaman varsayılan saat dilimi geçerli durumunu gösterir.

Bu biraz zor alır. localTimeZone defaultTimeZone yaklaşık olarak aynı sonucu verir. Farkı localTimeZone olsun NSTimeZone belirli bir örnek her zaman uygulama içinde saat dilimi için yaptığınız ayarı yansıtır. Bir kez arayıp, sonucu kaydedin ve her zaman o nesne, değişiklik yapılmış olursa olsun, üzerinden akım taklit saat dilimini elde edebilirsiniz. , NSTimeZone Bu örnek kullandığınızda, çerçeve sizin için defaultTimeZone çağrı ise, her zaman geçerli bir değer elde emin olmak gibi.

İşte yukarıdaki kısa çizimler bir çift. systemTimeZone geri almak NSTimeZone nesne arama yaptığınızda, sistem saat dilimini temsil eder. Eğer kullanıcı bu yana zaman dilimini değişmişse bile systemTimeZone dersen,, aynısı olacaktır. Uygulamanıza değer önbelleğe alır ve sistemi resetSystemTimeZone ile güncelleme almak temizlemek için sormalısınız.

// Say that device is in GMT originally
NSLog(@"%@", [NSTimeZone systemTimeZone]);    // GMT
// User flies into Rome and iPhone changes the zone automatically
NSLog(@"%@", [NSTimeZone systemTimeZone]);    // Still GMT
[NSTimeZone resetSystemTimeZone];    // Clear app's cache
NSLog(@"%@", [NSTimeZone systemTimeZone]);    // Now GMT 2

Benzer bir şey defaultTimeZone ile olur. Bu yöntemi çağırdığınızda, daha sonra setDefaultTimeZone: çağrı bile hep aynı zaman dilimini gösteren bir nesne. Eğer localTimeZone, aldığım nesne kullanırsanız, varsayılan yaptığınız bu değişikliği takip edecek zaman dilimi*.

// Say that defaultTimeZone is originally GMT
NSTimeZone * myDefaultTZ = [NSTimeZone defaultTimeZone];
NSTimeZone * myLocalTZ = [NSTimeZone localTimeZone];
[NSTimeZone setDefaultTimeZone:[NSTimeZone timeZoneWithName:@"Etc/GMT-4"]];
NSLog(@"%@", myDefaultTZ);    // Still gives GMT
NSLog(@"%@", [NSTimeZone defaultTimeZone]);    // GMT-4, the new value
NSLog(@"%@", myLocalTZ);    // Also the new value!

Apple 30* localTimeZone*gibi görünüyor:

localTimeZone sınıf yöntemi ile, kendi kendini bulduğu herhangi bir bilgisayarda varsayılan saat dilimi haline çözer bu göreceli bir zaman dilimi bir nesne alabilirsiniz.


*localTimeZone hala sistem saat dilimi app düzey önbellek tabi olduğunu unutmayın. Sadece sizin ayar değişiklikleri takip etmekvarsayılansaat dilimi.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Adam Khoury

    Adam Khoury

    23 Ocak 2008
  • Julian Smith

    Julian Smith

    31 EKİM 2006
  • Toddler Fun Learning

    Toddler Fun

    8 ŞUBAT 2013