2013-04-12 52 views
0

輸出應該輸出應該在那裏?

strString = değiştim 
wkString = NULL 

,但事實並非如此。爲什麼?

#import <Foundation/Foundation.h> 

@interface learnARC : NSObject { 
    NSString *strString, __weak *wkString; 
} 

@property (strong) NSString *strString; 
@property (weak) NSString *wkString; 

-(void) yaz; 

@end 

#import "learnARC.h" 

@implementation learnARC 

@synthesize wkString, strString; 

-(void) yaz { 
    NSString *anaString = @"anaString"; 
    strString = anaString; 
    wkString = anaString; 
    NSLog(@"\nstrString = %@\nwkString = %@",strString,wkString); 

    anaString = @"değiştim"; 
    NSLog(@"\nstrString = %@\nwkString = %@",strString,wkString); 
} 

@end 

int main(int argc, const char * argv[]) { 
    @autoreleasepool { 
     learnARC *lrnarc = [[learnARC alloc]init]; 
     [lrnarc yaz]; 
    } 
    return 0; 
} 
+0

什麼是輸出呢? – limon

+0

這兩個NSLog語句應該產生輸出'「strString = anaString \ n nwkString = anastring」' –

回答

2

爲什麼?

因爲你captalizing你的問題,而不是你的類名...

嚴重的是,弱引用應該NULL。你已經爲它指定了一個指針(一個指向字符串@"anaString"的指針)。由於字符串文字具有靜態存儲持續時間,因此它們在程序的整個生命週期中都不會被釋放。 (我想你可能會混淆變量與屬性?)

+0

那麼NSString的強弱之間有什麼區別? – agulerer

+0

@agulerer不是「對於NSString」。對於每個對象。一個增加了分配的對象的引用計數,另一個沒有。 – 2013-04-12 15:15:45

+1

(這完全是徒勞的,因爲不可變常量NSStrings的保留數接近'NSUIntegerMax') – CodaFi

相關問題