错误:“ - [NSCFString sizeWithTextStyle:]:IPhone SDK中无法识别的选择器”

时间:2011-02-18 10:18:59

标签: iphone objective-c cocoa-touch ios4

运行我的应用时出现以下错误。

' - [NSCFString sizeWithTextStyle:]:无法识别的选择器

我没有在整个项目中使用sizeWithTextStyle。

那可能是什么错误?

我在下面的return pos;声明中收到错误

代码:

(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
     UIView *pos = [[UIView alloc] initWithFrame:CGRectMake(0.0,0.0,320.0,35.0)];
     return pos;
}

控制台出错:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSCFString sizeWithTextStyle:]: unrecognized selector sent to instance 0x7044b50'

由于在整个崩溃日志中存在缩进问题,我将放置崩溃日志的屏幕截图

enter image description here

4 个答案:

答案 0 :(得分:28)

我认为,问题出在其他地方,不在这行代码中。该对象无法保留自己。发布代码,使用sizeWithTextStyle方法

你的链接设置上有-all_load标志吗?

这个问题出现了很多。 您需要将-all_load和-ObjC添加到您的应用程序链接标记。

* 编辑:*

崩溃似乎在线发生:

 CGSize textSize = [self.text sizeWithTextStyle:textStyle];
 in class: CPTextLayer method: sizeToFit

 which is called from within class CPTextLayer method initWithText:
-(id)initWithText:(NSString *)newText style:(CPTextStyle *)newStyle
....
[self sizeToFit];


**try to set with iOS 4 and not with 3.1.3 **

答案 1 :(得分:3)

当您遇到内存管理问题时(选择器被发送到错误的实例是内存管理问题的一个症状),您可以执行以下操作:

  1. 重新阅读Cocoa memory management rules并确保您关注它们。
  2. 运行static analyser。这通常会占用您忽略内存管理规则的地方。
  3. 尝试使用NSZombieEnabled查看是否[以及何时]向未分配的实例发送邮件。

答案 2 :(得分:2)

我也得到同样的错误,但现在已经解决了。

需要做简单的事情,设置其他链接器标志的值。

下面我提到了步骤。

项目名称 - 构建设置 - 其他链接器标记(使用搜索栏搜索) - “-ObjC”

答案 3 :(得分:0)

您应该更改代码以使用这样的指针:

UIView *pos = [[UIView alloc] initWithFrame:CGRectMake(0.0,0.0,320.0,35.0)]; 
     return pos;

注意星号!

当然,在分配声明的最后是;