相关疑难解决方法(0)

如何忽略"没有可见的@interface for X声明选择器"?

在ARC之前,我有一个"X可能没有响应xxx" 警告,这是一个非常无害的警告,不会阻止它编译.现在,我正在尝试将我的项目转换为ARC,并且我有一个"没有可见的@interface for X声明选择器xxx" 错误,这会阻止它编译.

我确切地知道我在做什么,为什么警告在那里,我可以告诉你程序是正确的.以前,编译器编译它没有问题,现在不应该停止编译.

确实,类X的接口没有声明那个选择器,但是X是一个动态处理任何发送给它的选择器的消息的类forwardInvocation:(这是关于Objective-C的美妙事物之一),所以它的接口不可能声明可以在其上调用的所有选择器.并且选择器某处声明,而不是在X上.

xcode warnings objective-c ios automatic-ref-counting

7
推荐指数
1
解决办法
3881
查看次数

字典的深层副本在Xcode 4.2中给出了分析错误

我在NSDictionary类别中有以下方法,可以进行深层复制,工作正常.

我刚从Xcode 4.1升级到4.2,Analyze函数为此代码提供了两个分析器警告,如下所示:

- (id)deepCopy;
{
    id dict = [[NSMutableDictionary alloc] init];
    id copy;

    for (id key in self)
    {
        id object = [self objectForKey:key];

        if ([object respondsToSelector:@selector(deepCopy)])
            copy = [object deepCopy];
        else
            copy = [object copy];

        [dict setObject:copy forKey:key];

        // Both -deepCopy and -copy retain the object, and so does -setObject:forKey:, so need to -release:
        [copy release];  // Xcode 4.2's Analyze says this is an incorrect decrement of the reference count?!
    }

    return dict;  // Xcode 4.2's Analyze says …
Run Code Online (Sandbox Code Playgroud)

cocoa deep-copy analyzer clang-static-analyzer xcode4.2

3
推荐指数
2
解决办法
1595
查看次数