0

リリース構成でビルドするとセグメンテーション違反が発生しますが、デバッグ構成では発生しません。

このコードは、実行時に読み込まれるバンドルです。クラッシュ自体は、my が実行される前に発生します (コンパイラが不正な形式のバイナリを生成していることを意味します。これは、ほぼ間違いなく、私のコードの問題が原因です)。クラッシュはこの関数で発生します: paranoid_check_one_class

以下のコードでは問題は発生しませんが、コメント アウトされている 2 行のコメントを解除すると、クラッシュが発生します。(コメントアウトするfirstNamelastNamecompany機能させるために、3つすべてが気に入らないだけです)

-(NSArray *)specifiersForContacts {
    NSMutableArray *contactSpecs = [NSMutableArray array];
    ABAddressBookRef book = ABAddressBookCreateWithOptions(NULL, NULL);
    for (NSNumber *contactID in [self contacts]) {
        ABRecordRef contact = ABAddressBookGetPersonWithRecordID(book,[contactID intValue]);
        NSString *firstName = (NSString *)ABRecordCopyValue(contact, kABPersonFirstNameProperty);
        NSString *lastName = (NSString *)ABRecordCopyValue(contact, kABPersonLastNameProperty);
      //NSString *company = (NSString *)ABRecordCopyValue(contact, kABPersonOrganizationProperty);
        NSString *fullName = [NSString stringWithFormat:@"%@ %@", firstName ?: @"", company ?: @""];
        PSSpecifier *contactSpec = [PSSpecifier preferenceSpecifierNamed:fullName
                                                              target:self
                                                                 set:NULL
                                                                 get:NULL
                                                              detail:Nil
                                                                cell:13
                                                                edit:Nil];
        [contactSpec setValues:@[contactID]];
        [contactSpec setProperty:[NSNumber numberWithInt:1] forKey:@"alignment"];
        [firstName release];
        [lastName release];
      //[company release];
        [contactSpecs addObject:contactSpec];
    }
    return [[contactSpecs copy] autorelease];
}
4

0 に答える 0