簡體   English   中英

NSDictionary初始化導致“EXC_BAD_ACCESS”

[英]NSDictionary initialization results in “EXC_BAD_ACCESS”

我無法弄清楚為什么這段代碼很糟糕。 我認為在dictionaryWithObjectsAndKeys中使用靜態字符串是可以的,但它在運行時因EXC_BAD_ACCESS而失敗。 我使用調試器來識別它在定義行中實際上是失敗的。 它永遠不會輸出“Made it here”。

- (NSString *)polyName:(NSUInteger)vertices { 
    NSLog(@"looking for polyName with %d vertices.", vertices);

    NSDictionary *polNameDict = [NSDictionary dictionaryWithObjectsAndKeys:
                             @"triangle", @"3", 
                             @"square", @"4",
                             @"pentagon","5",
                             @"Hexagon", @"6",
                             @"Heptagon", @"7",
                             @"Octagon", @"8",
                             @"Nonagon", @"9",
                             @"Decagon", @"10",
                             @"Hendecagon", @"11",
                             @"Dodecagon", @"12",
                             nil];

   NSLog(@"Made it here");

   NSString *key = [NSString stringWithFormat: @"%d", vertices]; 
   NSString *polName = [polNameDict objectForKey:key];
   return (polName);
   // Memory management: No need to release polNameDict, key, polName because they use
   // convenience functions
} 

問題出在這里:

@"pentagon","5"

它需要一個對象(NSString),而是有一個常規字符串。
將其更改為:

@"pentagon", @"5"

EXC_BAD_ACCESS出現在哪一行? 利用斷點告訴我們。

現在,如果我是你,我會做這樣的事情:

NSDictionary *polNameDict = [[NSDictionary alloc] initWithObjectsAndKeys:
                             @"triangle", @"3", 
                             @"square", @"4",
                             @"pentagon",@"5",
                             @"Hexagon", @"6",
                             @"Heptagon", @"7",
                             @"Octagon", @"8",
                             @"Nonagon", @"9",
                             @"Decagon", @"10",
                             @"Hendecagon", @"11",
                             @"Dodecagon", @"12",
                             nil];

而不是你現在如何擁有它。

暫無
暫無

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

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