我制作了一个使用ARC编码的静态库。我计划将此库分发给其他人使用。我知道在非ARC项目中包含ARC静态库不需要做任何事情,但是如果要包含ARC头文件呢?例如,我的ARC静态库的头文件声明属性为
有什么想法吗?
weak
和 strong
,但当我尝试在非ARC项目中包含这些头文件时,编译器会出错。有什么想法吗?
weak
和 strong
,但当我尝试在非ARC项目中包含这些头文件时,编译器会出错。retain
。它们是相同的。
weak
更加棘手,虽然我知道几种方法可以解决,但我不确定最好的处理方式。weak
,所以问题已经不存在了。我的直觉是,我可能会避免使用weak
,这样所有这些问题都将消失。weak很好用,但在大多数情况下避免使用它并不是什么大问题。weak
访问器。而不是这样:@property (nonatomic, readwrite, weak) id delegate;
请执行以下操作:
- (id)delegate;
- (void)setDelegate:(id)aDelegate;
然后你仍然可以在实现文件中声明一个weak
属性,调用者仍然可以使用点表示法。顺便说一下,这里可能会出现编译错误,因为setDelegate:
技术上需要一个__strong id
。如果是这种情况,只需手动实现setDelegate:
即可。
- (void)setDelegate:(id)aDelegate {
_delegate = aDelegate;
}
虽然我没有测试过,但应该可以工作。您还可以在@implementation
块中将ivar _delegate
声明为__weak
,而不是将其声明为weak
属性。
就像我说的那样;我没有测试过任何内容。如果它有效,请发布您的发现。