Sep*_*gus 5 objective-c xcode4.5
我收到了这个错误:
/business/Dropbox/badgers/BadgerNew/BGProfileView.m:56:17: Auto property synthesis will not synthesize property declared in a protocol
Run Code Online (Sandbox Code Playgroud)
我知道自动属性合成不会合成协议中声明的属性
所以我综合了我的自我.
这是协议:
@protocol BGIhaveNavigationController <NSObject>
@property (readonly)UINavigationController * navigationController;//This is the problematic property
@end
@protocol BGCommonProtocol <NSObject>
@end
Run Code Online (Sandbox Code Playgroud)
至于实施
@interface BGProfileView : UIViewController
@end
Run Code Online (Sandbox Code Playgroud)
是一个UIViewController,我们知道UIViewController有一个navigationController属性.那有什么不对?
当我使用它时,事情会出现问题:
@interface BGProfileView () <BGReviewsTableDelegateProtocol>
Run Code Online (Sandbox Code Playgroud)
BGReviewsTableDelegateProtocol协议继承BGIhaveNavigationController协议
我可以添加以下命令来删除警告:
-(UINavigationController *) navigationController
{
return self.navigationController;
}
Run Code Online (Sandbox Code Playgroud)
但那太荒谬了.从某种意义上说
-(UINavigationController *) navigationController
{
return self.navigationController;
}
Run Code Online (Sandbox Code Playgroud)
-(UINavigationController *) navigationController 已经通过UINavigationController存在
Wai*_*ain 10
使用
@dynamic navigationController;
Run Code Online (Sandbox Code Playgroud)
这告诉编译器属性实现是"在其他地方"并且它应该相信该需求将在运行时完成.在实践中,这意味着它在超类中.
如果你试图自己实现它,你将最终得到重复的存储(因此事情可能无法按预期工作)或递归.
| 归档时间: |
|
| 查看次数: |
5814 次 |
| 最近记录: |