如何防止Objective-C中的繼承?如何防止Objective-C中的繼承?
我需要防止它,或者發出一個編譯器警告引用項目文檔。
我想出了以下內容,我不確定它是否適用於所有情況。
主
#import <Foundation/Foundation.h>
#import "Child.h"
int main(int argc, const char * argv[])
{
@autoreleasepool {
Child *c = [[Child alloc] init];
}
return TRUE;
}
父類
.H
#import <Foundation/Foundation.h>
@interface Parent : NSObject
@end
的.m
#import "Parent.h"
@implementation Parent
+ (id)allocWithZone:(NSZone *)zone {
NSString *callingClass = NSStringFromClass([self class]);
if ([callingClass compare:@"Parent"] != NSOrderedSame) {
[NSException raise:@"Disallowed Inheritance." format:@"%@ tried to inherit Parent.", callingClass];
}
return [super allocWithZone:zone];
}
@end
蚩LD類
.H
#import <Foundation/Foundation.h>
#import "Parent.h"
@interface Child : Parent
@end
.M
#import "Child.h"
@implementation Child
@end
什麼是你的問題? – Codo
爲什麼你需要防止繼承?這是某種形式的強迫症? – trojanfoe
@trojanfoe不需要的繼承降低了可維護性。我已經更新了這個問題。 –