@sınıf vs alma
Bir ClassB ClassA bir başlık bulunması gereken olay ileri-sınıf bildirimi kullanması gereken benim anlayış ve ClassB herhangi bir dairesel kusurları önlemek için ClassA bir başlık eklemek gerekiyor. Ben de #import
Bir tek olunca da vardır ki ifndef
basit olduğunu anlamak.
Talebim şudur: ne Zaman bir #import
kullanıyor ve ne zaman bir @class
kullanıyor mu? Eğer @class
beyan kullanırsam bazen, aşağıdaki gibi ortak derleyici bir uyarı görüyorum
warning: receiver 'FooController' is a forward class and corresponding @interface may not exist.
Gerçekten bunu anlamak için aşk, karşı sadece ileri-beyanname @class
kaldırma ve uyarıları susturmak için #import
Bir atma olur derleyici veriyor bana.
CEVAP
Eğer bu uyarıyı görürseniz:
uyarı: alıcının MyCoolClass' ileri bir sınıftır ve @karşılık gelen arabirim olmayabilir
#import
dosyasına ihtiyacınız var, ama uygulama dosyasında bu yapmak önemlidir.m) ve @class
bildirimi kullanmak üstbilgi dosyası.
@class
(genellikle) #import
dosyaları, sadece gereksinimi daha bilgi yararlı olduğu kadar iniyor kaldırmaz.
Örneğin
Eğer @class MyCoolClass
, derleyici görebilirsiniz biliyor diyorsan bir şey gibi:
MyCoolClass *myObject;
MyCoolClass
geçerli bir sınıf daha başka bir şey hakkında endişelenmenize gerek yok ve bir işaretçi (gerçekten, sadece bir işaretçi) için yer ayırmalısınız. Böylece, başlığında, @class
yeterli zaman �.
Hiç ya myObject
oluşturmak ve erişmek için gereken'nın üyeleri, derleyici bu yöntemleri ne bildirmek gerekir. ancak, Bu noktada (muhtemelen uygulama dosyası), #import "MyCoolClass.h"
, derleyici sadece ötesinde ek bilgi söylemek gerekir "bu bir sınıftır".
Alma iç sınıf nesnesinin dış sınıf nes...
Nasıl daha sonra düz metin alma için e...
Java iç sınıf ve statik iç içe sınıf...
Statik sınıf ve singleton deseni arası...
'Eclipse içine bir proje aldıktan...