Czy istnieje jakaś różnica między deklarowaniem zmiennej instancji private w nagłówku a deklarowaniem jej w implementacji?zmienne instancji w @ interfejsie; nagłówek kontra implementacja
w TestObj.h
@interface TestObj : NSObject
{
int test;
}
@end
vs w TestObj.m
@interface TestObj()
{
int test;
}
@end
Oba wydają równowartość mnie, czy istnieje rzeczywista różnica między deklarowania zmiennej instancji w nagłówku vs we wdrażaniu , jeśli nie, który jest preferowany? Plik @interface
w pliku implementacyjnym wydaje się być sposobem deklarowania własności prywatnych, czy ma jakiś inny cel poza tym?
Aby wyjaśnić, poza organizacją, nie ma różnicy funkcjonalnej między tymi dwoma? –
@KevinDiTraglia Prawidłowe, brak różnic funkcjonalnych w klasie 'TestObj', ale zapewnia, że klasy zewnętrzne nie mimowolnie nie radzą sobie ze zmiennymi prywatnymi. To wydaje mi się czymś więcej niż tylko "organizacyjnym" szczegółem, ale raczej krytycznym w tworzeniu solidnego kodu. – Rob
Istnieje jedna różnica funkcjonalna: ivars w klasie '@ interface' są domyślnie" @ protected ", a ivars w rozszerzeniu klasy' @ interface' lub '@ implementation' to domyślnie' @ private'. –