1

レビューのためにアプリを Mac App Store に提出した後、(起動時に) クラッシュ レポートを受け取りました。

Application Specific Information:
objc[1832]: garbage collection is ON
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSDictionary initWithObjects:forKeys:]: count of objects (0) differs from count of keys (2)'
terminate called throwing an exception
abort() called

これはコードの一部です、私は疑っています:

- (NSMutableDictionary*)getNewChapterWithTitle:(NSString*)title
{
    if (title==nil) title = [NSString stringWithFormat:@"Chapter %d",[[self appChapters] count]+1];

    // Align Justify
    NSMutableParagraphStyle * paragraphStyle = [[NSParagraphStyle defaultParagraphStyle] mutableCopy];
    [paragraphStyle setAlignment:NSJustifiedTextAlignment];

    // Set Font
    NSDictionary *font = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:[NSFont fontWithName:@"Garamond" size:15.0],paragraphStyle, nil] forKeys:[NSArray arrayWithObjects:NSFontAttributeName, NSParagraphStyleAttributeName, nil]];

    NSString* lipsum = @"\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc consequat fermentum faucibusPhasellus ac consequat metus. Sed at lectus sit amet tellus vulputate mollis vel suscipit metus. Nulla a sapien purus. Aenean sollicitudin lacus varius nisi faucibus nec lacinia mauris fermentum. Aliquam euismod quam rhoncus ipsum pulvinar quis condimentum magna imperdiet. Nullam augue leo, dictum tincidunt ullamcorper id, porta in lorem. Duis in vestibulum nisl.\
    \n\n\
    Donec imperdiet dignissim massa, at ultricies enim dignissim at. Etiam pharetra neque quis quam condimentum vitae viverra nisl volutpat. Vivamus urna ante, ultrices ut tincidunt id, auctor id est. Nunc eget diam purus, at viverra orci. Maecenas eu magna mi, id venenatis arcu. Maecenas ornare, tortor sit amet gravida placerat, diam urna lacinia nunc, a dictum arcu libero sed metus. Nulla pulvinar sapien vitae lectus faucibus quis tempus elit volutpat. Integer facilisis interdum lectus, sit amet dapibus enim mattis non. Donec sed pulvinar risus. Mauris in nulla urna, sit amet placerat turpis. Proin felis erat, pretium sed pharetra vel, tincidunt quis tortor. Donec ut nisi dui. Pellentesque gravida gravida justo, quis convallis leo euismod in. Nam pretium accumsan sapien ac interdum.";

    NSMutableAttributedString* theLipsum = [[NSMutableAttributedString alloc] initWithString:lipsum attributes:font];

    return [[NSMutableDictionary dictionaryWithObjectsAndKeys:
            [title retain],@"title",
            [theLipsum retain],@"content",
            [NSNumber numberWithInt:0],@"isMarkdown",
            nil] retain];
}

上記で「明らかに」間違っていることがわかりますか?( から 4 ~ 5 回呼び出されているawakeFromNibので、それが原因だと思います...)


ヒント:はレポートのretain後に追加されています。全然参考になるかわかりませんが…

4

2 に答える 2

4

[NSFont fontWithName:@"Garamond" size:15.0]おそらく戻りますnil。私の知る限り、これは OSX のデフォルトのフォントではありません。したがって、最初のオブジェクトまでのオブジェクトのみnilが追加されるため、オブジェクト配列は空です。

于 2012-10-06T12:05:48.757 に答える
1

問題はここにあると思います-[NSFont fontWithName:@"Garamond" size:15.0] このコードはnilを返すため、配列は空です。

このフォントは標準ではありませんが、コンピューターにインストールされている可能性があります。問題がここにある場合は、このフォントをアプリ リソースに追加する必要があります。

于 2012-10-06T12:08:16.063 に答える