簡體   English   中英

覆蓋自定義類的方法。 Objective-C的

[英]Overriding methods of custom class. Objective-C

- (void)setFrame:(CGRect)frame
{
    [super setFrame:frame];

    // code...
}

這基本上就是我在覆蓋Objective-C中的標准類方法時所做的。 我創建了一個自定義類myClass,它有一個名為style NSInteger myStyle的變量。

我試過同樣的事情:

- (void)setMyStyle:(NSInteger)myStyle
{
    [super setMyStyle:myStyle];

    // code...
}

但它無法正常工作,因為它找不到這種方法:

[super setMyStyle:myStyle];

有什么建議么?

但它無法正常工作,因為它找不到這種方法:

當你調用[super setMyStyle:myStyle]; 你的超類必須有一個名為setMyStyle的方法。

編輯:

我創建了一個自定義類myClass,它有一個名為style NSInteger myStyle的變量。

由於你有一個名為myStyle的變量,你需要為它創建setter和getter。 為此,您需要創建方法或使用@property / @synthesize

或者無需創建iVar,您可以直接為myStyle創建屬性。

確保在父類的頭文件中聲明了您的方法:

//ParentClass.h

@interface ParentClass : ItsParentClass {

}

- (void)setMyStyle:(NSInteger)myStyle;

並且您#include子類中的標頭

//YourSubClass.h
#import "ParentClass.h"

@interface YourSubClass : ParentClass {

}

這樣當你調用 - [super setMyStyle:]時,編譯器希望super的類(ParentClass)具有setMyStyle方法,並且你不會得到錯誤。

#import "YourSublass.h"
@implementation YourSublass

- (void)setMyStyle:(NSInteger)myStyle
{
    [super setMyStyle:myStyle];

    // code...
}

@end

我能想到的另一個原因是,您可能忘記在頭類中包含父類?

@interface CustomClass : ParentClass{

}

希望這可以幫助..

暫無
暫無

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

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