我使用以下代碼在目標 c 中分配和初始化一個類。該課程是可可觸摸課程。我嘗試使用下面的代碼初始化類。
MyClass *myClass;
myClass=[MyClass alloc];
myClass=[MyClass init];
它崩潰于
myClass=[MyClass init];
說
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** [MyClass<0x100b075d0> init]: cannot init a class object.'
如果我使用
myClass=[[MyClass alloc] init];
有用。知道為什么會這樣嗎?
uj5u.com熱心網友回復:
[MyClass alloc]呼叫alloc類上的方法MyClass。它回傳一個實體中MyClass,準備初始化,您可以通過呼叫做init對回傳的實體。
通常你用[[MyClass alloc] init]Objective-C撰寫,因為在分配和初始化之間你不能或不應該做任何事情。
在您的代碼中,[MyClass init]將 init 視為類方法,但事實并非如此。
MyClass *myClass;
myClass = [MyClass alloc];
myClass = [myClass init];
可能會作業(注意我打電話init的myClass,不是MyClass,但它會擾亂今后的任何讀者,讓他們想知道為什么你不只是做正常的方式。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/336723.html
