2012-03-05 15 views
11

bu uyarısını alıyorum sonra çıkacakOtomatik Referans Sayımı Sorun: Alıkonulmuş nesneyi güvensiz_ayarlanmış değişkene atama; Nesne atama

"Otomatik Referans Sayma Sayı: unsafe_unretained değişkene tutulan nesneyi atama; nesne görevden sonra çıkacak" İşte

kodudur

.h

@interface myObject : NSObject 
{ 
} 

@property (assign) id progressEnergy; 

@end 

.m

@implementation myObject 

@synthesize progressEnergy; 

-(id)init 
{ 
    if ((self = [super init])) 
    { 
     progressEnergy = [[progress alloc] init]; //warning appear on this line 
    } 

    return self; 
} 

@end 
Zaten

@property (assign) progress* progressEnergy; 

ama

beni yanlış anlamaya yardım edebilir hiç şans denediniz mi?

cevap

27

Değişim

@property (assign) progress* progressEnergy; 

için
@property (strong) progress* progressEnergy; 

yüzden senin myObjectprogress nesneyi tutar.

+0

Teşekkürler. Bu sorun oldu :) – zeroonnet

9

Ayrıca, bir sonraki satırda gerçekleşecek olan kapsamın sonunda yayınlanmak üzere olan bir değer atadığınızı bildiririz. Yani bu init ARC ın büyüye ekler sonra nasıl görüneceğini geçerli:

-(id)init 
{ 
    if ((self = [super init])) 
    { 
     progressEnergy = [[progress alloc] init]; 
     [progressEnergy release]; ///< Release progressEnergy since we've hit the end of the scope we created it in 
    } 

    return self; 
} 

Yani progressEnergy artık son derece muhtemeldir (zorunlu olmasa da) bir sallantıda işaretçi olması. Bu aramak yerine objc_storeStrong çağırır Aslında

-(id)init 
{ 
    if ((self = [super init])) 
    { 
     progressEnergy = [[progress alloc] init]; 
     [progressEnergy retain]; ///< Since it's a strong property 
     [progressEnergy release]; ///< Release progressEnergy since we've hit the end of the scope we created it in 
    } 

    return self; 
} 

:

Değişim strong için assign gelen mülkiyet tanımı: gibi Bu durumda

@property (strong) progress* progressEnergy; 

, sizin init yöntem bakacağız Gösterdiğim gibi retain, ama aslında bu durumda bir retain aşağı kaynar.

+0

teşekkür ederim. Sorun buydu :) – zeroonnet

İlgili konular