2015-04-28 45 views
-1
#import <Foundation/Foundation.h> 

@interface Person : NSObject 

/* method declaration*/ 
+(NSString *)setMyname:(NSString *)name Sex:(NSString *)sex Age:(int)age; 

@end 

@implementation Person 

+(NSString *)setMyname:(NSString *)name Sex:(NSString *)sex Age:(int)age 
{ 
    NSString* string=[NSString alloc]; 
    string=[NSString stringWithFormat:@"My name is %@ and sex is %@ and age is %d",name,sex,age]; 
    return string; 
} 

@end 

int main(int argc, const char * argv[]) { 
    @autoreleasepool { 
     NSString* myString =[NSString new]; 
     myString=[Person setMyname:@"Yyx" Sex:@"Male" Age:21]; 
     NSLog(@"%@",myString); 
    } 
    return 0; 
} 

串的結果應該是「我的名字是XXX」。但該計劃並沒有結束,友好和字符串的值是 string NSString * 0x7fff7a38c830 0x00007fff7a38c830。 而斷點在NSString* string=[NSString alloc];的行。MyString的結果是錯誤

+1

不要問[同樣的問題(http://stackoverflow.com/questions/29920568/crash-when-calling-stringwithformat)多次。 – trojanfoe

回答

1

只要做到以下幾點:

NSString* string = [NSString stringWithFormat:@"My name is %@ and sex is %@ and age is %d",name,sex,age]; 

stringWithFormat:方法分配,並建立新的字符串爲您服務。

然後調用這樣說:

NSString* myString=[Person setMyname:@"Yyx" Sex:@"Male" Age:21]; 
+0

這與OP已經做了什麼不同? – trojanfoe