2011-02-18 68 views
15

運行我的應用程序時出現以下錯誤。錯誤:在iPhone SDK中的「 - [NSCFString sizeWithTextStyle:]:無法識別的選擇器」

「 - [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'

由於壓痕問題,而把整個崩潰日誌在這裏,我是P.在的Utting崩潰的屏幕截圖日誌

enter image description here

+0

硬沒有一些更多的代碼來表示。你能提供你的應用程序崩潰的代碼行嗎? – 2011-02-18 10:42:46

+0

@Philipp Jaquet:我編輯了我的問題並添加了我的代碼。我試過調試代碼,發現應用程序崩潰了** SIGNAL ABORT **語句 – 2011-02-18 10:52:52

回答

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 ** 
0

你應該改變你的代碼使用指針這樣的:

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

注重星號!

而當然;在分配聲明結束!

+0

我試過了,但它仍然崩潰,出現同樣的錯誤。可以做什麼? – 2011-02-18 10:57:37

+0

您是否嘗試清理您的項目並重新構建?你也可以把崩潰日誌?我認爲它不會在這個特定的線路上崩潰... – 2011-02-18 10:59:51

3

當你有內存管理問題(選擇被髮送到錯誤的實例是內存管理問題一個症狀),你可以做很多事情:

  1. 重讀Cocoa memory management rules並讓sur e你正在關注他們。
  2. 運行static analyser。這往往會挑選你忽略內存管理規則的地方。
  3. 嘗試使用NSZombieEnabled來確定是否[以及何時]將消息發送給未分配的實例。
2

我也得到同樣的錯誤,但現在它解決了。

需要做簡單的事情,設置其他鏈接器標誌的值。

下面我已經提到了步驟。

項目名稱 - 構建設置 - 其他鏈接器標誌(使用搜索欄搜索) - 「-ObjC」

相關問題