【问题标题】:custom class = custom +alloc , custom +init自定义类 = 自定义 +alloc ,自定义 +init
【发布时间】:2010-07-27 17:47:06
【问题描述】:

我是 iPhone 的 Objective c 新手。

我正在编写一个自定义类,那么,我应该编写自己的 +alloc、+init 方法吗? 我相信: +alloc 只会调用 [thing alloc]; +init 将执行类似的操作: [thing setValue:X];

是否有“默认”+alloc 和 +init 方法? 如果是,我应该等待默认的 +alloc 和 +init 什么?假设我有一个 NSMutableDictionary* 即

@interface class1 : NSObject {

    NSString *test; 
    NSMutableDictionary *map;
}

谢谢

【问题讨论】:

    标签: objective-c


    【解决方案1】:

    您一般不需要编写自己的 +alloc 方法。

    对于您的示例,您的 -init 可能如下所示:

    - (id)init {
        self = [super init];
        if (self) {
            map = [[NSMutableDictionary dictionary] retain];
        }
        return self;
    }
    

    请注意,您首先调用超类-init,并检查它是否有效,然后再初始化您自己的变量。

    【讨论】:

      【解决方案2】:

      您应该绝不覆盖alloc

      至于init,它是一个实例方法,顺便说一下,是的,那是您可能想要设置变量的地方.

      【讨论】:

      • 我已经读了好几遍了。但是,我想知道,这是语言还是框架的属性(哈哈,看看我做了什么?g)?换句话说,如果我不从 NSObject 派生我的类,并且不告诉编译器使用 Foundation,@synthesize 是否仍然有效?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-25
      • 2015-12-31
      • 1970-01-01
      • 2018-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多