[英]issue with custom delegate and datasource
我有一个自定义的委托和数据源。 但是,当我尝试对其进行初始化时,我遇到了一些问题。 在我的.h文件中是否有这样的内容。
@property (nonatomic, assign) id<UITableViewDelegate> delegate;
@property (nonatomic, assign) id<KalDataSource> dataSource;
结果是,在.m文件的合成中,出现以下错误。
Existing ivar 'dataSource' for property 'dataSource' with assign attribute must be __unsafe_unretained.
经过一些谷歌搜索的魔力,我发现我应该像这样修改我的变量。
@property (nonatomic, strong) id<UITableViewDelegate> delegate;
@property (nonatomic, strong) id<KalDataSource> dataSource;
但是然后我得到这个错误。
linker command failed with exit code 1 (use -v to see invocation)
有人可以帮我吗?
亲切的问候!
您遇到的错误与您的内存限定符无关(它们是第一次出现的)。 问题在于您已经在没有限定符的地方声明了支持iVar。 声明iVar时,它们隐含强度,因此,如果您进入阴影iVars,并在__weak
或__unsafe_unretained
加上,警告应消失。 当然,更好的解决方案是完全删除支持的iVar,因为Xcode会为您合成它们。
代表通常是weak
引用。
使用委托的对象不拥有它。 它只是对可能响应或无法响应的对象的引用。 弱说,如果对象的真正所有者释放它,则应将其释放。 然后,弱引用会自动设置为nil
,您不会遇到任何僵尸。
其次,问题是,您已经具有名为dataSource
属性。
我先前关于重复属性的陈述是错误的。 您应该覆盖setter和getter, .h
的声明和.m
文件中的实现。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.