2013-04-12 101 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

相关问题