我從書籍教程驗證碼:我有一個錯誤與我的書的示例代碼
void drawShapes (id shapes[], int count)
{
int i;
for (i = 0; i < count; i++) {
id shape = shapes[i];
[shape draw];
}
}
而且Xcode的報告我錯誤: 「自動引用計數的問題:必須明確地描述一個對象數組參數的預期所有權」。
我做錯了什麼?
我從書籍教程驗證碼:我有一個錯誤與我的書的示例代碼
void drawShapes (id shapes[], int count)
{
int i;
for (i = 0; i < count; i++) {
id shape = shapes[i];
[shape draw];
}
}
而且Xcode的報告我錯誤: 「自動引用計數的問題:必須明確地描述一個對象數組參數的預期所有權」。
我做錯了什麼?
而不是[形狀繪製];你實際上應該放一些代碼來繪製形狀。 現在編譯器認爲這個[形狀繪製]是一個數組運算符[]。但是由於您沒有提供數組的名稱,所以出現錯誤。
這就是Objective-C消息發送語法。假設'shape'是一個對象(它是 - 'id'是通用對象類型),它是有效的。這也與發佈的錯誤消息沒有關係。 – 2012-03-21 00:34:23
你說得對。我不知道這個語法。 – Bart113 2012-03-21 00:43:43
如果你想通過自動釋放陣列,你的函數聲明更改爲:
void drawShapes (id __autoreleasing shapes[], int count)
,並應採取你的錯誤的呵護!
此問題由自動引用計數帶來。
ARC是在iOS5.0之後由Apple提供的。在默認的iOS項目中,ARC被選中。
使用ARC時,應該提到數組必須使用NSArray,或者必須告訴編譯器數組不是ARC對象。
有兩種方法可以解決這個問題。兩種方法都可以工作。
1.首先方法 像以前發佈的答案:
void drawShapes (id __autoreleasing shapes[], int count)
告訴編譯器不會對此C類陣列形狀[]使用ARC。
或者
2.Second方法,停止使用ARC到項目
如果這個項目是iOS的項目,你可以重新創建一個iOS的項目,然後取消選擇「自動引用計數」在對話框中。
如果此項目是Mac OS項目(或者您不想創建新的iOS項目),請轉至項目設置頁面,然後選擇「Building Settings」標籤,搜索「自動引用計數」,然後設置相對值爲「否」。
從你的名字假設你可以閱讀俄文,[這裏是對同一個問題的一個可能的答案](http://www.gamedev.ru/code/forum/?id=156247)。 – dasblinkenlight 2012-03-21 00:25:09