objective c 中的自定义 class 初始化错误
Error on init of custom class in objective c
我使用以下代码在 objective c 中分配和初始化 class。 class 是 cocoa 触摸 class。我尝试用下面的代码初始化 class。
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];
有效。知道为什么会这样吗?
[MyClass alloc]
调用 class MyClass
上的 alloc
方法。它 returns MyClass
的 实例 ,准备好初始化,您可以通过调用 init
返回的实例来完成初始化。
通常你在 Objective-C 中写 [[MyClass alloc] init]
因为在分配和初始化之间你不能或应该做任何事情。
在您的代码中,[MyClass init]
将 init 视为 class 方法,但事实并非如此。
MyClass *myClass;
myClass = [MyClass alloc];
myClass = [myClass init];
可能会起作用(请注意,我是在 myClass
上调用 init
,而不是 MyClass
,但这会让任何未来的读者感到不安,并让他们想知道为什么你不只是以正常方式进行。
我使用以下代码在 objective c 中分配和初始化 class。 class 是 cocoa 触摸 class。我尝试用下面的代码初始化 class。
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];
有效。知道为什么会这样吗?
[MyClass alloc]
调用 class MyClass
上的 alloc
方法。它 returns MyClass
的 实例 ,准备好初始化,您可以通过调用 init
返回的实例来完成初始化。
通常你在 Objective-C 中写 [[MyClass alloc] init]
因为在分配和初始化之间你不能或应该做任何事情。
在您的代码中,[MyClass init]
将 init 视为 class 方法,但事实并非如此。
MyClass *myClass;
myClass = [MyClass alloc];
myClass = [myClass init];
可能会起作用(请注意,我是在 myClass
上调用 init
,而不是 MyClass
,但这会让任何未来的读者感到不安,并让他们想知道为什么你不只是以正常方式进行。