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;
}
4

1 に答える 1

2

なぜ?

クラス名の代わりに質問を大文字にしているため...

真剣に、弱い参照はすべきではありませNULL。それにポインターを割り当てました (文字列へのポインター@"anaString")。また、文字列リテラルには静的な保存期間があるため、プログラムの存続期間中に割り当てが解除されることはありません。(変数とプロパティを混同していると思いますか?)

于 2013-04-12T14:23:26.290 に答える