2013-06-07 24 views
5

O hata var uygulanan rağmen bir protokolde ilan Ben kendimi sentezlerim. uygulanmasıOtomatik özelliği sentez onun

@interface BGProfileView : UIViewController 

@end 

biz UIViewController bir NavigationController özelliğine sahiptir bildiği gibi bir UIViewController olup gelince

@protocol BGIhaveNavigationController <NSObject> 

@property (readonly)UINavigationController * navigationController;//This is the problematic property 

@end 

@protocol BGCommonProtocol <NSObject> 


@end 

:

Bu

protokoldür. Yani ne yanlış? Ben ekleyerek uyarıyı kaldırabilirsiniz

@interface BGProfileView() <BGReviewsTableDelegateProtocol> 

BGReviewsTableDelegateProtocol protokolü BGIhaveNavigationController protokolünü

devralır: Bunu kullandığınızda

şeyler sorunlu olsun

-(UINavigationController *) navigationController 
{ 
    return self.navigationController; 
} 

Ama bu çok saçma. Bir anlamda

-(UINavigationController *) navigationController 
    { 
     return self.navigationController; 
    } 

-(UINavigationController *) navigationController zaten bu özellik uygulama 'başka bir yerde' dir derleyici söyler ve onu gereklilik olacağını güvenmesi gereken

+1

@dynamic navigationController; – Wain

+0

çalışır. Ama neden? navigationController orada değil. –

+2

Varolan bir sınıftaki bir yöntemi değiştirmek için bir protokol kullanıyorsunuz. Bu asla iyi bir fikir değildir. @dynamic, çalışma zamanında orada bir uygulama olacağını vaat ettiği için çalışır, ancak bu protokole uyan her şey bir görünüm denetleyicisi ise, protokolün navigationController özelliğine neden ihtiyacı vardır? – jrturton

cevap

10

kullanın

@dynamic navigationController; 

UINavigationController aracılığıyla mevcut çalışma zamanında yerine getirildi. Pratikte, bunun anlamı süper sınıfta.

Eğer bunu kendiniz yapmaya çalışırsanız, çift depolama alanıyla sonuçlanacaksınız (bu nedenle işler büyük ihtimalle beklediğiniz gibi çalışmayacaktır) veya özyineleme olacaktır.

+1

Xcode6'da çalışmaz – Jacky

+0

, 6.3.1 –

+0

'da çalışır. –

İlgili konular