簡體   English   中英

子類中的alloc和init

[英]alloc and init in a subclass

我已經繼承了UIView並提供了自己的drawRect,效果很好。 但是,我將這些方法添加到了我的子類中:

 - (id) alloc
 {
    NSLog(@"Alloc");
    return [super alloc];
 }

 - (id) init
 {
    NSLog(@"Init");
    if (self = [super init])
        flashWhite = true;
    return self;
 }

我認為無論何時創建子類的對象(通過Interface Builder發生),都會調用alloc和init方法。 但是對象是創建的,但是我的init和alloc沒有被調用。 難道這不是為了確保正確的初始化嗎?

另外,構建會產生警告,提示UIView可能不會響應“ alloc”-它不是必須從NSObject繼承它嗎?或者如何正確創建UIView?

我在上面的目標是我的子視圖將能夠在IB創建它之后進行自定義初始化。

init不是UIView的指定初始值設定項; initWithFrame:是。 如果重寫initWithFrame:則應調用它,但UIView永遠不會調用init

你說得對, alloc ,這是一個類的方法。 UIViews使用initWithFrame:進行初始化,因此請研究覆蓋它。

Apple通常構建他們的init覆蓋,如下所示:

-(id)init{
   self = [super init];
    if (self) {
          //Custom Initialization goes here
     }
}

雖然以上評論者都是正確的。 initwithFrame:是指定的初始值設定項。但是,格式化問題時的覆蓋將使您收到編譯器警告您的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM