在我成为Objective C的大师的过程中,我一直在探讨它的细微之处,我想与大家分享,并了解为什么
1)我有两个init方法,一个是NSObject为我的Objective C类继承的,一个是我自己创建的自定义方法,让我们说
initCustomMethod:(int)par1 argument2:(int)par2;
Run Code Online (Sandbox Code Playgroud)
我的目的是通过提供的init方法调用initCustomMethod
-(id)init{
return [self initCustomMethod:1 argument2:3];
}
Run Code Online (Sandbox Code Playgroud)
当然,维护顺序,我有init在.m文件中的initCustomMethod之前出现.Xcode警告我告诉我没有找到initCustomMethod,我继续调整顺序并在initCustomMethod声明后出现init并且没有这样的警告消息,一切都很好.
我同意订单很重要,因为它主要来自C,但我不确定.因为,我改变了一些属性及其自定义方法的顺序,@synthesize在给定属性的自定义setter方法之后声明了属性,但是没有这样的错误副本.
谁能指出这里的恶意?
多谢你们!!!
很酷的家伙,谢谢你帮我解决这个问题.此外,由于我有一个自定义init方法,我正在初始化此方法中的super并使用原始的init方法来调用自定义init方法.
这有什么不对吗?
在任何地方引用之前,您应该在界面中声明 initCustomMethod:argument2,这通常位于头文件中.
例如,您通常会有一个.h文件,如下所示:
@interface MyClass
{
//instance variables
int anInstanceVariable;
}
// properties
@property (nonatomic, assign) int aProperty;
// methods
-(id)initCustomMethod:(int)par1 argument2:(int)par2;
@end
Run Code Online (Sandbox Code Playgroud)
如果你这样做,顺序在其中定义 init并initCustomMethod:argument2:不会不管.这是因为声明告诉编译器您将要定义该方法,以及它将是什么样子,因此在以后使用时不会混淆.
| 归档时间: |
|
| 查看次数: |
132 次 |
| 最近记录: |