代码之家  ›  专栏  ›  技术社区  ›  Z S

iPhone应用程序中的NSString和stringWithString存在问题

  •  0
  • Z S  · 技术社区  · 16 年前

    谢谢

        NSString *addChar = nil; 
    
        NSString *fullname =  (NSString *)ABRecordCopyCompositeName(record);
        addChar = [[NSString stringWithString: [[fullname substringToIndex:1] capitalizedString]] retain];
    
        [fname release];
    
        NSMutableArray *array = [app_contacts objectForKey:addChar]; // lookup if key exists
    
        if (array == nil) // if nothing in key, create new array
        {
               NSLog(@"array empty"); 
               NSMutableArray *newarray = [[NSMutableArray alloc] init];
               [newarray insertObject:one_person atIndex:0];
               [app_contacts setValue:newarray forKey:addChar];
               [newarray release];
        }
        else
        {
               NSLog(@"array not empty");
               [array addObject:one_person];
               [app_contacts setValue:array forKey:addChar];
        }
    
        [addChar release];
    
    2 回复  |  直到 16 年前
        1
  •  3
  •   Jon Hess    16 年前

    在此代码中:

    NSString *fullname =  (NSString *)ABRecordCopyCompositeName(record);
    addChar = [[NSString stringWithString: [[fullname substringToIndex:1] capitalizedString]] retain];
    

    如果fullname等于@“”,则在调用[fullname substringToIndex:1]时将引发异常。

        2
  •  1
  •   Jed Smith    16 年前

    你为什么这么做?

    addChar = [[NSString stringWithString: [[fullname substringToIndex:1] capitalizedString]] retain];
    

    addChar = [[fullname substringToIndex:1] capitalizedString];
    

    消除了对 [addChar release]