mam ten błąd:Auto synteza nieruchomość nie syntetyzują właściwość zadeklarowana w protokole choć jego realizowane
/business/Dropbox/badgers/BadgerNew/BGProfileView.m:56:17: Auto property synthesis will not synthesize property declared in a protocol
Mam świadomość, że synteza właściwość auto nie syntetyzują właściwości zadeklarowane w protokole
Tak Syntetyzuję to samo.
Jest to protokół:
@protocol BGIhaveNavigationController <NSObject>
@property (readonly)UINavigationController * navigationController;//This is the problematic property
@end
@protocol BGCommonProtocol <NSObject>
@end
chodzi o realizację
@interface BGProfileView : UIViewController
@end
jest UIViewController a jak wiemy UIViewController ma właściwość navigationController. Co jest nie tak?
Robi się problematyczne, gdy używam to:
@interface BGProfileView() <BGReviewsTableDelegateProtocol>
protokół BGReviewsTableDelegateProtocol dziedziczy protokół BGIhaveNavigationController
mogę usunąć ostrzeżenie dodając:
-(UINavigationController *) navigationController
{
return self.navigationController;
}
Ale to absurd. W pewnym sensie
-(UINavigationController *) navigationController
{
return self.navigationController;
}
-(UINavigationController *) navigationController
już istnieć przez UINavigationController
Spróbuj @dynamic navigationController; – Wain
działa. Ale dlaczego? navigationController nie ma. –
Używasz protokołu, aby zastąpić metodę na istniejącej klasie. To nigdy nie jest dobry pomysł. @dynamic działa, ponieważ obiecuje, że będzie tam implementacja w czasie wykonywania, ale jeśli wszystko, co jest zgodne z tym protokołem, jest kontrolerem widoku, dlaczego protokół wymaga właściwości navigationController? – jrturton