簡體   English   中英

Objective-C私有財產的公共獲取集方法

[英]Objective-C public get set method for private property

我想知道是否可以在私有@property上使用@synthesize,以便使get / set方法具有公共訪問權限。

現在我的代碼看起來像這樣

SomeClass.h

#import <Foundation/Foundation.h>
@interface SomeClass : NSObject
{
    @private
    int somePrivateVariable;
}
@end

SomeClass.m

#import "SomeClass.h"
@interface SomeClass ()
@property int somePrivateVariable;
@end

@implementation
@synthesize somePrivateVariable;
@end

然后在某些外部函數中,我希望能夠編寫:

#import "SomeClass.h"
SomeClass *someClass = [[SomeClass alloc] init];
[someClass setSomePrivateVariable:1337];  // set the var
NSLog("value: %i", [someClass getSomePrivateVariable]); // get the var

我知道我可以在頭文件中創建自己的get / set方法,但我會更喜歡使用@synthesize。

如果要使公共財產反映私有財產,只需覆蓋公共財產的getter和setter並返回私有財產。

@interface Test : NSObject

@property NSObject *publicObject;

@end

然后,在執行中:

@interface Test ()

@property NSObject *privateObject;

@end

@implementation Test

- (NSObject *)publicObject
{
    return self.privateObject;
}

- (void)setPublicObject:(NSObject *)publicObject
{
    self.privateObject = publicObject;
}

@end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM