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. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |