xCode'da "Oluştur ve çözümle" yi yaptım ve init yöntemimde normal bir int 0'ı ayarlarken "Boş göstericinin yokluğu" iletisini aldım. Mesajımı aldığım satır için aşağıdaki kodumda not aldım. IPhone için geliştiriyorum.Boş işaretçiyi belirtme, ancak işaretçileri kullanmıyorum
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
Ben yararlı olduğunu düşünüyorum yapıştırılan tam kod değil.
İşaretçi kullanmıyorum bu yana oldukça garip buluyorum. Bu mesajı nasıl alırım?
Teşekkür ve Saygılarımızla, Niklas
Teşekkürler, şimdi anlıyorum. Bu sorunu çözdü. Sanırım "eğer ((öz = [süper init]))" yazmam gerekmiyor, "diyorsunuz, sadece pedagojik tepkiler için mi yazdınız? Daha önce hiç çift parantez görmemiştim. – Nicsoft
Çift parantezler, derleyicinin önce 'self = [super init]' i değerlendirmesini ve sonra sonucu bir boolean olarak değerlendirmesini söyler. Yeni LLVM derleyicisiyle, bir "if" ifadesindeki bir atamanın etrafında çift parantez bulunmaması, bir uyarıcı oluşturacaktır, çünkü derleyici, "=" yerine "=" ('(x == 5)' e benzer bir şey yaparken yanlış bir yanlıştır. – Jasarien