@class May I know the proper use of this

前端 未结 3 808
余生分开走
余生分开走 2021-01-07 11:34

Anyone can point out a documentation or a detailed discussion using @class. I\'ve been using this but haven\'t really fully understood it. I want to learn more about it and

相关标签:
3条回答
  • 2021-01-07 11:59

    @class is used as a forward declaration typically in .h files. What it does is it says that a class named ClassName actually exists without having to import and read the ClassName.h file since it, mot probably, will be imported by the .m file

    0 讨论(0)
  • 2021-01-07 12:02

    @class is used to declare a class. Essentially telling the compiler: "Hey, there is a class with this name somewhere in the source code. The definition will come later, but let me use its name as a pointer type for now."

    See also:
    developer.apple.com
    SO: Class vs Import
    MacRumors

    Note: As pointed out by Richard J. Ross III, the @class keyword allows for circular references (when two classes both depend on each-other) without breaking the build.

    0 讨论(0)
  • 2021-01-07 12:21
    // header.h
    #import <Foundation/Foundation.h>
    @class reference;
    
    @interface class
    ...
    @end
    // implementation.m
    #import "header.h"
    #import "reference.h"
    
    @implementation class
    ...
    @end
    

    you use this when you have a class that is referenced circularly between multiple files, and you import the header that contains the class described by the @class directive, and you can safely refer to the class circularly.

    0 讨论(0)
提交回复
热议问题