只是消除警告的话,改B的属性名称就呗。
@
property(nonatomic, weak) id<BProtocol> delegate1;
————————————————————————————————————————————
http://stackoverflow.com/questions/9765033/how-to-properly-subclass-a-delegate-property-in-objective-c/14632135#14632135第一种模仿至UIKit的写法,应该是这个样子吧
————————————————————————————————————————————
@
class UITableView;
@
protocol UITableViewDelegate<NSObject, UIScrollViewDelegate>
// protocol~
@
interface UITableView : UIScrollView <NSCoding>
@
property (nonatomic, assign) id <UITableViewDelegate> delegate;
所以应该上面的是漏写了吧,毕竟里面的东西有点乱糟糟的排布。>_< 不过他的两种方法,我都没成功。可能还漏了什么。
————————————————————————————————————————————
但是第二种方法加的时候,警告不一样。
//ClassB.h
@
property(nonatomic, weak) id<AProtocol,BProtocol> delegate;
脑洞添加:
//ClassB.m
@
dynamic delegate;
警告消失了……
所以是不是可能苹果隐藏了那部分能够消除警告的实现呢……
——————
睡前看了这题,第一时间想的就是开头的原因,能解决警告,而且不仅仅是警告。不过这样不能达到override property,用起来的确很不舒服。
Google关键词override property后想了点的成功。
————————
距离我看到这个题目有一小时了,真是折腾自己。Google选手……hope helpful >_<睡去了。