I get "EXC_BAD_ACCESS" when I try to read NSString

This is a (very) simplified version of my iPhone code:

@interface x {
    NSString * name1;
    NSString * name2;
}

-init {
    name1 = @ ";
    name2 = @" "

}

- (void) a {Foo * foo = [Foo alloc];
    name1 = @ "uhuh"; name2 = [foo bar]; // return (NSString *)
    [foo release],
}

- (void) b {NSLog (@ "% @", name1); // it works
    NSLog (@ "% @", name2); // there I get EXC_BAD_ACCESS ...
}

Why do I have this problem? And how can I solve this?
Thank!

: , ""...

+3
3

EXC_BAD_ACCESS. , release , , .

release , ?

: alloc retain , release. , , , . .

0

Cocoa .

, , , cocoa.

:

[Foo alloc];

"foo". alloc init , : [[Foo alloc] init]; , , .

name2 = [foo bar]; // returns a (NSString *)

bar , autoreleased. name2, . . . , name2, , nil, , , , . undefined.

name1 , literal @ " Cocoa. , " ". , , , .

, , :

NSString *myString1 = @"hello";
NSString *myString2 = @"hello";

NSLog(@"string1: %p, string2: %p", myString1, myString2);

: string1: 0x123456, string2: 0x123456. , . , .

+1

Joel is right. try to look at your function [foo bar], maybe in the function that you issue any object

0
source

Source: https://habr.com/ru/post/1741602/


All Articles