IOS开发OC的 .h文件和.m文件区别

798 阅读1分钟
  1. 它们用于区分公共部分和私人部分。.h文件是用于类的公共声明(如API)的头文件,而.m文件是私有实现。

  2. 当需要在其他文件处调用函数时,只需导入.h文件以供参考。例如,

    #import <Foundation / Foundation.h>
    
  3. 在.H 文件,我们可以声明类,它可以从外部调用的公共@property:

    @property (strong, nonatomic) NSString *username;
    

    这里的@property是指向类为NSString的对象的指针。所有对象都生活在堆中,因此我们需要*。顺便说一句,strong的意思是“在我将这个属性设置为nil之前,保持对象指向内存”。非原子意味着“对这个属性的访问不是线程安全的”,否则编译器将生成锁定代码。

  4. 在.m文件中,该属性的“getter”和“setter”方法将在场景后面自动生成,以使@property的实例可访问:

    @synthesize` 会自动生成 getter 和 setter 的实现方法。

    @synthesize username = _username; 
    

    注意,默认情况下,支持变量的名称与属性的名称相同,前面有下划线。你不需要编写下述代码,是会自动生成,除非你希望重写该方法并执行其他操作。

    - (NSString *) username 
    { 
      return _username; 
    } 
    
    - (void)setUsername:(NSString *)username 
    { 
      _username = username; 
    }
    

    使用方法

    self.username = @"这是改变了之前的内容"; 
    [self setUsername:@"这是改变了之后的内容"];
    NSLog(@"看看 :%@", self.username);
    
  5. 创建新方法

    需要将声明放入.h文件中:

    -(int)newMethod:(NameType *)name;
    

    然后在.m文件中引入

    - (int)newMethod:(NameType *)name 
    { 
      int num = 0; 
      # something in the method... 
      return num; 
    }
    //另外,对于私有声明,您可以将以下内容放入.m文件中:
    @interface username() 
    #private declarations.... 
    @end