2013-10-11 72 views
-3

這是我的代碼看起來像現在:需要幫助,過時的代碼

- (UITableViewCell *)tableView:(UITableView *)tableView 
     cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    NSLog(@"index %d %d", indexPath.row, indexPath.section); 
    BSTableViewCell *cell = 
    (BSTableViewCell *)[tableView dequeueReusableCellWithIdentifier:@"StoryList"]; 
    if (cell == nil) { 
    // Create a new cell. CGRectZero allows the cell to determine the appropriate size. 
    cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero 
            reuseIdentifier:@"StoryList"] autorelease]; //*** 
    CGRect startingRect = CGRectMake(0.0, 0.0, 320.0, 60.0); 
    cell = 
    [[[BSTableViewCell alloc] initWithFrame:startingRect 
         reuseIdentifier:@"StoryList"] autorelease]; //*** 

但我發現了以下錯誤的標記線:

/用戶/亞歷克斯/ Xcode的項目/FiveMins_1.2(WAV)/Classes/BSGameViewController.m:120:10:不兼容的指針類型分配給「BSTableViewCell *」從「的UITableViewCell *」

而對於第二以下錯誤標記行:

/用戶/亞歷克斯/ xcode的項目/ FiveMins_1.2(WAV)/Classes/BSGameViewController.m:120:38: 'initWithFrame:方法reuseIdentifier:' 被棄用:在IOS 3.0

第一棄用

我是新來的,我有人幫我編程初始程序,但我該如何解決這些問題?

+1

[觀看文檔](https://developer.apple.com/library/ios/documentation/uikit/reference/UITableViewCell_Class/DeprecationAppendix/AppendixAdeprecatedAPI.html#//apple_ref/doc/uid/TP40006938-CH3- SW32),它指出應該使用哪種方法; 'initWithStyle:reuseIdentifier:'。 –

+0

對不起,但你解釋你的問題非常糟糕開始重寫所有的東西像更多的代碼和一個好的標題爲你的問題 –

+0

什麼是3個星號到處都是?這是在你的**真**代碼? –

回答

1

第一個錯誤很容易。不要創建一個UITableViewCell,創建自定義的細胞之一:

cell = [[[BSTableViewCell alloc] initWithFrame:CGRectZero 
           reuseIdentifier:@"StoryList"] autorelease]; 

這同樣適用於第二個錯誤。不要使用initWithFrame:reuseIdentifier :.使用initWithStyle:reuseIdentifier:改爲在自定義單元類中實現該初始化器。

如果您正在使用故事板併爲表視圖提供單元標識符,您甚至可能不再需要if(cell == nil)塊。在這種情況下,dequeueReusableCellWithIdentifier總是提供一個有效的單元格,即使它需要創建一個。

我看到你的代碼中有autorelease調用。你應該做的第一件事是在你的代碼上運行ARC轉換。 ARC非常棒,可以消除人們代碼中95%以上的內存錯誤。

+0

謝謝鄧肯。儘管我星號的明顯和不相關的問題,我真的很感謝徹底的解釋。 @MikeD是正確的,這是一個非常薄弱的​​嘗試,在粗線的問題。我不是一個偉大的程序員。我有其他人爲我編寫代碼,經過多次嘗試後我無法與他聯繫。如果我會回覆我的電子郵件,我會很樂意支付這個人來修復我的「ish」,但我會嘗試修復它們(並在過程中學習Xcode),我自己負責。 –

+0

我承認這件事已經超出我的想象,但該應用程序已經取得了巨大的成功,我想繼續保持下去。我找不到原來的程序員,所以我有兩個選擇:繼續提出問題,直到我找出這個問題,同時像@MikeD那樣煩人,或者僱用一個新的程序員。 我更喜歡第一個選項,因爲我喜歡挑戰和學習,但我也希望修復這個應用程序,並在iPhone 10發佈之前上傳到iOS7。 Duncan,我想討論和你一起更新我的代碼。如果你不感興趣,你能告訴我如何在我的代碼上運行ARC轉換嗎? –