簡體   English   中英

字符串格式化,varargs和EXEC_BAD_ACCESS

[英]String formatting, varargs and EXEC_BAD_ACCESS

我的類中有兩個名為TestClient

-(void)log:(NSString *)logMessage, ... 
{
    va_list ap;
    va_start(ap, logMessage);
    [self log:logMessage withParameters:ap];
    va_end(ap);
}

-(void)log:(NSString *)logMessage withParameters:(va_list)valist 
{
    NSString *formattedString = [[NSString alloc] initWithFormat:logMessage arguments:valist]; //Crashes here
    [self callMethod:@"log" withParams:formattedString, nil]; //Calls my method.
}

這是我的單元測試:

-(void)testWtfCondition
{
    int test = 1;
    NSString *test2 = @"wtf";
    [proxy log:@"This is a test: %@ %@",test, test2];
}

我的單元測試在NSString formattedString行與EXEC_BAD_ACCESS崩潰。 我在這里使用字符串格式化或varargs做錯了嗎? 是因為我正在嘗試使用int進行格式化嗎?

%i(或%d) - 如果要打印整數

 [proxy log:@"This is a test: %i %@",test, test2];

%@ - 將在您要打印的課程上調用[description]。 對於像float,int這樣的內置變量類型,你需要不能使用它,因為它們不是對象。

有關更多字符串格式,您可以查看字符串編程指南

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM