This question already has answers here:
Where to put iVars in “modern” Objective-C?

(5个答案)


4年前关闭。




我是来自Swift的Objective-C初学者。好像有两个不同的@interface实例可以在其中声明我的ivars。我的头文件中的一个,例如:
// Header file
@interface ViewController : UIViewController
{
   // declare instance variables
}

@end

我可以在实现文件中添加另一个,例如:
// Implementation file
@interface ViewController ()
// declare instance variables
@end

@implementation ViewController

@end

编辑:我正在学习做事的“老方法”,它教会了我在.h文件中声明 private ivars。我的困惑源于看到以.h(旧方式)和.m(新的首选方式)声明的ivars。这是我所学到的(到目前为止...):
// .h
    @interface SomeClass : UIViewController

    @property (nonatomic, assign) BOOL someBool;
       // declare other properties, which will all be public
    @end

// .m
    @interface SomeClass () <UITextFieldDelegate>
       // what do I declare here?...
    @end

    @implementation SomeClass {
      // ...and what do I declare here?
    }

    // method implementations

    @end

但是,对于.m的@interface@implementation大括号之间的区别,我仍然感到困惑。 @matt表示从不使用大括号,但是@rmaddy的答案here表明@implementation SomeClass {}可以。那是什么呢?

最佳答案

您是否希望它可以公开访问?然后写入.h文件。

如果您不希望其他类看到它,即要将其设置为 private 并且仅对该类本身可见,请写入.m文件。

有关更多信息,您可以看到以下问题:
Where to put iVars in "modern" Objective-C?

关于ios - .m中@interface和@implementation大括号之间的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36973853/

10-11 14:52