Objective-C public 获取私有 属性 的设置方法
Objective-C public get set method for private property
我想知道是否可以在私有@属性 上使用@synthesize,以便get/set 方法具有public 访问权限。
现在我的代码看起来像这样
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。
如果你想要 public 属性 镜像私人的,只需覆盖 public 属性 的 getter 和 setter 和 return 私人的。
@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
我想知道是否可以在私有@属性 上使用@synthesize,以便get/set 方法具有public 访问权限。
现在我的代码看起来像这样
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。
如果你想要 public 属性 镜像私人的,只需覆盖 public 属性 的 getter 和 setter 和 return 私人的。
@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