Objective-C'de gerekli olan "kendi kendini" kullanıyor mu, yoksa sadece iyi bir uygulama mı? Her zaman kullanmamak için kullanmaya devam ettim ve hiçbir farkı gerçekten fark etmiyorum. Zaten ima edilmiyor mu?"Kendi" gerekli mi?
cevap
self
gereklidir. Aynı zamanda, alıcılar/ayarlayıcılar aracılığıyla özelliklerine erişmek için zaman zaman yararlıdır, bu durumda , self.propertyname
veya self.propertyname = value
'da da kullanmanız gerekecektir. (Bu
Örnek değişkenlere başvururken bu gerekli değildir. Bir temsilci ayarlarken gibi başka yönteme akım nesnenin bir başvuru geçmek istediğinizde gereklidir:
[someObj setDelegate:self];
akım nesne üzerinde aynı sınıfta bir yöntemi çağrılırken Ayrıca gerekli:
Örnek değişkene atandığında, kopyalamak veya saklamak için ayarlayıcıya güveniyorsanız, kendini kullanmak gerekir. –
[self doMethod]
Evet, Objective C yöntemi C/C++ gibi çağırır fakat
[öz doSomething] gibi bağlamlarda için, kendini gönderme mesajı kullanır olmadığından; ve self.myProperty;
gerekli.
Bir ivar'a erişiyorsanız, kendinize ihtiyacınız yoktur.
Bu yardımcı olur umarım.
-CV
Değişkenlerle uğraşmak için bağlıdır. Sentezlenmiş bir alıcı veya ayarlayıcı kullanmak isterseniz, nokta notasyonunu kendiniz kullanın. Eğer, iyi, o self
mesaj göndermek için bir nesne için isterlerse
self.someProperty = @"blah"; //Uses the setter
someProperty = @"blah"; //Directly sets the variable
Nokta işaretini kullanmanız gerekmediğini unutmayın. Ama çoğumuz onu seviyoruz. Yine de sizi uyarıyorum: nokta-notasyonu neredeyse bir nesneye mesaj göndermenin aksine işaretçi olmayan bir alandan bir alana erişiyor gibi görünüyor. Objective-C nesneleri yapılara işaret ettiğinden, 'self.someiVar = @" bu "bir örnek değişkenine erişemez; "self-> someiVar = @" bu "' (bir "self-> bit" bir sınıfın uygulanması dahilinde gereksizdir) kullanır. Yani, ne yaptığınızı ve ne yapmadığınızı anlıyorsanız nokta notasyonunu kullanın. –
Gerçek baskı gerekli her zaman değil. propertyname
veya propertyname = value
eşdeğer değildir, ama iyi bir uygulamadır, bu daha kolay başkalarının kodunuzu okumak için yapar çünkü.
Ve gereklidir farklı sınıflarda aynı isimde nesneleri olduğunda, o zaman "kendini" Keywork o aynı sınıfta nesneye başvuran yazılımınızı söyleyecektir. genellikle daha büyük projelerde happends
.
- 1. Heroku'da ALLOWED_HOSTS gerekli mi?
- 2. HttpOnly gerekli mi?
- 3. CDATA gerçekten gerekli mi?
- 4. KillTimer gerçekten gerekli mi?
- 5. Çift yıkama gerekli mi?
- 6. jquery - $ (document). Zaten gerekli mi?
- 7. Forever.js'i OpenShift'de kullanmak gerekli mi?
- 8. Swift'de 'zayıf' kullanmak gerekli mi?
- 9. NHibernate'de Proxy Factory gerekli mi?
- 10. ReentrantLock aracılığıyla erişilen alanlar için gerekli anahtar kelime gerekli mi?
- 11. Arkadaş canlısı şablonum, kendi özel üyemden kendi ifadesinden bahsedebilir mi?
- 12. ConfigureAwait (false) gerekli değil, değil mi?
- 13. Kütüphane projeleri için proguard.cfg gerekli mi?
- 14. Paketlemeden sonra data.fs.old tutulması gerekli mi?
- 15. HTTP POST: içerik uzunluğu başlığı gerekli mi?
- 16. CFScript'teki kapsam döngü değişkenleri için gerekli mi?
- 17. Class.forName (JDBC_DRIVER) artık gerekli değil mi?
- 18. İçerik Uzunluğunu yanıt başlığımda ayarlamak gerekli mi?
- 19. Ünitede bir patlama paterni gerçekten gerekli mi?
- 20. Mysql'de geçici tablolar bırakmak gerekli mi?
- 21. Paypal Express Checkout, onay gerekli mi?
- 22. <select> Alanı Gerekli mi?
- 23. Geliştirme sırasında dSYM dosyaları gerekli mi?
- 24. NetworkCredential etki alanını ayarlamak gerekli mi?
- 25. Aşağıdaki kod parçasında yineleme gerekli mi?
- 26. JavaScript "window.onload" - gerçekten "gerekli" bir pencere mi?
- 27. Web isteği akışını kapatmak için gerekli mi?
- 28. Subpackajların kendi ithalatı ya da değil mi?
- 29. bir program kendi elf bölümünü okuyabilir mi?
- 30. Terminalde kendi Unix komutunu yürütmek mi istiyorsunuz?
Do you mean 'self.property = value' konumundan 'property = value' konumuna mı gidiyorsunuz? – JBRWilkinson