【问题标题】:NSObject structure confusion over where to put properties [duplicate]NSObject结构混淆在哪里放置属性[重复]
【发布时间】:2014-10-12 19:14:55
【问题描述】:

我有一个简单的 NSObject,我在其中使用了 Singleton:

.h 文件:

#import <Foundation/Foundation.h>

@interface FooAPIClient : NSObject

+ (FooAPIClient *) sharedInstance;

@end

还有我的 .m 文件:

#import "FooAPIClient.h"

@implementation FooAPIClient

+ (FooAPIClient *) sharedInstance {
    static FooAPIClient *_sharedInstance = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        _sharedInstance = [[FooAPIClient alloc] init];
    });
    return _sharedInstance;
}

@end

我正在努力找出我可以把我的财产放在哪里,即。 @property(nonatomic, strong) NSString *bar; 没有将它们放在我的头文件中。如果我将 @interface 复制到我的 .m 文件中,它会抱怨我在复制我的定义。

可以用几个指针来说明在哪里声明内部(对类)属性吗?

【问题讨论】:

    标签: objective-c


    【解决方案1】:

    我认为您正在寻找课程扩展。

    在您的 .m 文件中,将这些行放在您的 @implementation 之前

    @interface FooAPIClient()
    
    /// declare your "private" properties here
    
    @end
    

    【讨论】:

    • 啊王牌!我绝对可以去读一下这个,但这是类扩展的主要目的吗?而且,为什么 Xcode 不在它的样板代码中创建一个新的类呢?
    • () 是扩展的标记,不是新接口的声明。与@implementation 一样,它会查找代码中声明的相应@interface。扩展可用于覆盖标头中声明的属性,或者您可以声明要对其他类隐藏的“私有”方法和属性。这个website 解释了类扩展和类别的用法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-01
    • 2013-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多