首先,据我所知,init in Objective-C,在功能上类似于构造函数Java,因为它用于初始化实例变量并准备一个类来完成一些工作.它是否正确?
我理解NSObject实现init,因此它不需要在任何.h文件中声明.
但是如何为给定的类自定义init的实现,例如:
(id) initWithName:(NSString *) name
Run Code Online (Sandbox Code Playgroud)
这样的声明应该作为一部分列出.h,还是没有必要?它是按惯例完成还是有其他推理?
tas*_*oor 12
init与Java/C++中的构造函数绝不相似.构造函数始终在创建对象时执行.但执行权init取决于你.如果init之后没有发送消息alloc则不会执行.
// init does not execute here
MyObject *obj = [MyObject alloc];
Run Code Online (Sandbox Code Playgroud)
这将没有任何问题的工作,如果你得到NSObject,因为init的NSObject什么都不做.
您不需要添加init头文件,因为它是继承的,NSObject但您需要将自定义init方法(未继承)添加到头文件中.请注意,init方法只是具有命名约定的常规方法,但从技术上讲,与其他方法没有区别.
如果未在头文件中指定自定义init方法,但将该消息发送到对象,则编译器将生成警告.不会有编译错误.因此,如果您决定忽略该警告,那么您也可以从标题中省略该警告.但是如果实际上没有实现该方法,则会导致运行时崩溃.因此,最好添加未在头文件中继承的所有方法.
| 归档时间: |
|
| 查看次数: |
3538 次 |
| 最近记录: |