如何在使用ARC的项目中实现ADLivelyTableView类

时间:2013-04-28 07:33:59

标签: uitableview core-animation automatic-ref-counting

我已经完成了ADLivelyTableView演示项目,但无法成功将ADLivelyTableView h和m文件导入到我的项目中。似乎主要问题与ARC有关。我已经通过将演示项目转换为arc进行了实验,特别是只转换了LDMasterView.m文件,这只是删除了对释放对象的所有引用,因此在转换之后,构建设置下的使用ARC选项现在已启用并且应用程序作品。所以我认为ADLivelyTableView .m和.h文件不需要转换,但是当这些文件导入我的项目时,我会得到这两个代码块的各种ARC错误:

 if (block != _transformBlock) {
        Block_release(_transformBlock);
        _transformBlock = Block_copy(block);
    }
}

@implementation ADLivelyTableView

- (void)dealloc {
    Block_release(_transformBlock);
    [super dealloc];
}

我不明白为什么在演示项目中打开ARC时没有显示这些错误。 id更喜欢寻找解决方案,而不是尝试将我的整个应用程序导入到演示项目中!错误如下:

ARC Casting Rules: Cast of block pointer type 'ADLivelyTransform (aka NSTimeINterval (^)CALayer*_strong, float) to C pointer type 'const void *' required a bridged cast.
ARC Casting Rules: Cast of C Pointer ....(Same as above)

此外,一旦解决了这个问题,它应该像导入ADLivelyTableView .h和.m文件一样简单,然后添加一行:

ADLivelyTableView * livelyTableView = (ADLivelyTableView *)self.tableView;
    livelyTableView.initialCellTransformBlock = ADLivelyTransformFan;

进入我的viewDidLoad部分?或者该位应该针对我的特定表进行编辑?

感谢您的帮助, 问候, 拉米

1 个答案:

答案 0 :(得分:2)

您可以修改ADLivelyTableView.m的编译器标志。

请尝试添加-fno-objc-arc。