在Objective-C中定义变量,setter和getter

时间:2013-11-28 11:23:45

标签: ios objective-c

我很难将自己介绍给Objective-C和iOS编程。我试图搜索这个问题,但结果不够简单。

所以我有viewController.hviewController.m。在.h我在@interface@end之间添加我的标签/按钮等

@property ( nonatomic, strong   ) UILabel             *facebookLoginTextLabel;
@property ( nonatomic, strong   ) UIButton            *facebookLoginButton;

.m我只是在@implementation和第一种方法之间合成它们

@synthesize facebookLoginTextLabel  = _facebookLoginTextLabel;
@synthesize facebookLoginButton     = _facebookLoginButton;

我现在面临的问题是如何处理其他价值观?举个例子。我有一个布尔值。我在哪里申报?我该如何设置?我如何获得价值?这对我来说太混乱了。 NSInteger的计数相同吗?

我希望,依赖于ifcase,将NSInteger设置为0,1或2.我该如何实现?我试着像这样设置

.h
@property ( nonatomic ) CGFloat *width;
.m
@synthesize width = _width;

viewDidLoadMethod
_width = [self returnScreenWidth];

returnScreenWith method
- ( CGFloat ) returnScreenWidth {
    return [UIScreen mainScreen].bounds.size.width;
}

这不起作用。为什么?我如何设置,如何获得?我如何声明变量?从PHP和Android开发人员的方式来说太混乱了。

2 个答案:

答案 0 :(得分:2)

首先,它是CGFloat width而不是CGFloat *width,因为它是一个C结构,而不是在头文件中定义属性的Objective C类:

@property (nonatomic) CGFloat width;

只需使用self.width,即可使用@property访问self,而不是访问得分不足的实例变量。

答案 1 :(得分:1)

请记住,所有基本/原始数据类型(int,float,char,BOOL)都不需要像你一样使用,总是使用 assign

是BOOL是一个原语,因为这是char的typedef。

应定义为:

@property (assign) <primitivetype> propertyName;

另外要注意,使用新的编译器(我希望你使用的是Xcode4.2,即LLVM),

@synthesize propertyName由编译器自动完成

@synthesize propertyName = _propertyName;

atomicnonatomic取决于您的要求,指向intfloat的指针也是如此。