面试题答案
一键面试一般场景
- 封装内部逻辑:当某些方法仅用于类的内部实现,不希望外部类直接访问时,可以隐藏方法声明。这样可以保持接口的简洁性,同时避免外部调用可能导致的错误。例如,一个数据处理类,内部有一些数据预处理的方法,这些方法对于外部使用该类的开发者来说不需要关心,只需要调用最终处理结果的公开方法即可。
- 安全和保护:防止外部类意外调用一些可能破坏类内部状态的方法。比如,一个数据库操作类,有一个用于直接修改数据库底层数据结构的方法,这个方法如果被外部随意调用可能会导致数据损坏,所以将其隐藏。
在类的.m文件中隐藏方法声明并调用
假设我们有一个Person
类,以下是示例代码:
Person.h
文件
#import <Foundation/Foundation.h>
@interface Person : NSObject
- (void)publicMethod;
@end
Person.m
文件
#import "Person.h"
@interface Person ()
// 隐藏方法声明
- (void)hiddenMethod;
@end
@implementation Person
- (void)publicMethod {
NSLog(@"执行公开方法");
// 调用隐藏方法
[self hiddenMethod];
}
- (void)hiddenMethod {
NSLog(@"执行隐藏方法");
}
@end
在上述代码中,hiddenMethod
方法在Person.m
文件中的类扩展(@interface Person ()
)中声明,这使得该方法对于外部类是隐藏的。在publicMethod
中可以正常调用hiddenMethod
。