2012-08-13 5 views
1

가능한 중복 :
NSString immutable allows to change its values?다른 객체를 단일 객체를 가리 키도록 할당하는 방법은 무엇입니까?

내가 하나의 객체로 변경하는 경우, 어디에서 개체를 가리 할

. 같은 변화가 다른 대상에 반영되어야합니다. 그렇게하는 방법?

샘플을 수행했지만 작동하지 않습니다.

코드를 한 번 확인하십시오. 내 코드의 실수는 무엇입니까? .H 파일에서

-(void)viewDidLoad{ 
    str = [[NSString alloc] initWithString:@"Taruni"]; 
    str2=str; 
    [email protected]"Kalpana chawla"; 
    [self changeStr:str]; 
    NSLog(@"str = %@",str); 
    [str release]; 
    [str release]; 
    [super viewDidLoad];  
} 
-(void)changeStr:(NSString *)x 
{ 
    [email protected]"Chandra"; 
} 

가, 내가 STR2의 값을 변경하면이 방법

@property(nonatomic,assign) NSString *str; 
@property(nonatomic,assign) NSString *str2; 

에서 선언 한 str을 반영지고 있지 않습니다.

어떻게 수행하나요?

+3

http://stackoverflow.com/questions/1805442/nsstring-immutable-allows-to-change-its-values은 - BTW ...이 답변 – DarkFighter

+0

및보고 .. 왜 두 번 str을 풀어 주나요? – meronix

+0

또한 보유 개수 값을 확인하고있었습니다. 두 번 릴리스 한 후에도 예외가 발생하지 않습니다. 에이미, 왜 그런지 알아? – Bharath

답변

1

시도,

-(void)viewDidLoad{ 
    NSString *str = [[NSString alloc] initWithString:@"Taruni"]; 
    NSString **str2 = &str; 
    *[email protected]"Kalpana chawla"; 
    [self changeStr:&str]; 
    NSLog(@"str = %@",str); 
    [str release]; 
    [str release]; 
    [super viewDidLoad]; 
} 
-(void)changeStr:(NSString **)x 
{ 
    *[email protected]"Chandra"; 
} 
+0

두 번째 줄에 오류가 있습니다 - http://i.imgur.com/Ux1Rz.png – TheTiger

+0

ARC 오류 일 수 있습니다 ... –

+0

내가 ARC를 사용 중입니다 ... – TheTiger

0

우선 문자열의 내용을 변경하려면 NSMutableString이 필요합니다. 둘째, changeStr : 메소드에서 "x"포인터를 다른 문자열을 가리 키도록 할당했습니다. (x는 로컬 임). 포인터에서 "x"포인터는 로컬이고 할당 (x = something)은 그 방법 밖에는 반영되지 않습니다. 바깥 쪽에서 뭔가를 변경하려면 x.propertyName 또는 [x methodName]을 사용해야합니다. 입력 한 문자열을 가리키는 문자열을 변경하려면 (NSString **) x, * x = @ "Chandra"및 [self changeStr : & str]과 같이 입력해야합니다. 셋째, 상수 문자열 (@ "상수 문자열"로 정의 됨)을 변경할 수 없으면 [NSString stringWithFormat : @ "% @", str]을 사용해야합니다 (목적을 위해서는 NSMutableString 임)

코드 아래
관련 문제