加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

iphone – 取消引用空指针,但我没有使用指针

发布时间:2020-12-14 19:55:09 所属栏目:百科 来源:网络整理
导读:我在xCode中进行了“构建和分析”,并在我的init-method中将普通int设置为0时获得“空指针的取消引用”.我在下面的代码中注意到我收到消息的行.我正在为iPhone开发. Bric.m #import "Bric.h"@implementation Bric- (id)initWithImage:(UIImage *)img:(NSStrin
我在xCode中进行了“构建和分析”,并在我的init-method中将普通int设置为0时获得“空指针的取消引用”.我在下面的代码中注意到我收到消息的行.我正在为iPhone开发.

Bric.m

#import "Bric.h"

@implementation Bric

- (id)initWithImage:(UIImage *)img:(NSString*)clr{
    if (self = [super init]) {
        image = [[UIImageView alloc] initWithImage:img];
    }   

    stepX = 0; //It's for this line I get the message
    stepY = 0;
    oldX = 0;
    color = [[NSString alloc]initWithString:clr];
    visible = YES;
    copied = NO;
    return self;
}   
@end

Bric.h

#import <Foundation/Foundation.h>

@interface Bric : NSObject {

    int stepX;
    int stepY;

}  

-(id)initWithImage:(UIImage *)img:(NSString *)clr;

@end

这不是完整的代码,粘贴我认为有用的东西.

由于我没有使用指针,我发现这很奇怪.我怎么得到这个消息?

感谢致敬,
尼克拉斯

解决方法

init方法中的第一个if语句是检查[super init]是否返回nil. (从技术上讲,它应该写成((self = [super init])),新的LLVM编译器会警告你.

静态分析器正在检查所有可能的代码路径,即使[super init]返回nil的情况也是如此.在这种情况下,if语句失败,self为nil.如果self为nil,则无法访问其实例变量.

要解决此问题,您需要将初始化置于if语句中并使用图像初始化,然后在if语句之外返回self.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读