2012-12-22 8 views
8

をinstancするために送られた私はここでNSAlert の内部にある自身NSTextField、内部の属性付きの文字列を入れしようとしています私のコードです:しかしは[__NSCFConstantString POINTSIZE]:認識されていないセレクタが

NSTextField *label1 = [[NSTextField alloc]initWithFrame:NSMakeRect(0, 23, 50, 20)]; 
[label1 setEditable:FALSE]; 
[label1 setAllowsEditingTextAttributes:TRUE]; 
[label1 setBezeled:FALSE]; 
label1.backgroundColor = [NSColor clearColor]; 
NSString *login = @"Username"; 
NSMutableAttributedString *attrString = [[NSMutableAttributedString alloc] initWithString:login]; 
NSString *boldFontName = [[NSFont boldSystemFontOfSize:12] fontName]; 
[attrString beginEditing]; 
NSRange ran = NSMakeRange(0, 8); 
[attrString addAttribute:NSFontAttributeName 
        value:boldFontName 
        range:ran]; 

[attrString endEditing]; 
NSLog(@"%@",attrString); 
[label1 setAttributedStringValue:attrString]; 
[alert setAccessoryView:label1]; 
[alert runModal]; 

、できるだけ早く[アラートrunModal]が呼び出され、私のアプリケーションがクラッシュする

"[__NSCFConstantString pointSize]: unrecognized selector sent to instance 0x7fff74035bb0" 

私はなぜこれが起こっているのか分かりません。 [alert setAccessoryView:label1]を削除するか、label1に標準のnsstringを与えるとすぐに文字列に関連するように見えます。助けてください!

答えて

37

あなたは正しく行っています。しかし、あなたは小さな間違いをしました。あなたはNSFontAttributeNameの属性としてNSStringを渡しましたが、それはNSFontと予想しています。

これを試してください。

NSFont *boldFontName = [NSFont boldSystemFontOfSize:12]; 
[attrString beginEditing]; 
NSRange ran = NSMakeRange(0, 8); 
[attrString addAttribute:NSFontAttributeName 
        value:boldFontName 
        range:ran]; 
+0

こんにちはダウン有権者を!なぜあなたはそれをやったのですか? –

1

上記の回答は間違いありません。私はiOS 7.0.3 & 7.0.4でクラッシュしていたのと同じクラッシュがあり、他のバージョンでも完全に機能します。多くの調査の後、私は@ HelveticaNeue-ItalicがiOS 7.0.3 & 7.0.4のバージョンで利用できないことを知りました。そのため、以前はこれらのバージョンでクラッシュすることがありました。

は、私は以下のコードで問題を修正した:

self.headerFont = [UIFont fontWithName:@"HelveticaNeue-Italic" size:16.0f]; 
if (self.headerFont == nil) { 
    self.headerFont = [UIFont fontWithName:@"HelveticaNeue" size:16.0f]; 
}