我已经学习 Obj-C 一段时间了,我有一个基本问题。在我的代码中似乎到处都有大量的“自我”。我认为这归结为一个关于声明和使用变量的两种方式之间差异的基本问题。
附件是一些支持我的问题的代码。在其中,声明了两个变量(在不同的地方)并用于在方法中执行相同的操作:optionA 和 optionB。我不确定使用哪一个。我认为这可能是因为使用“属性”,如 optionB 所示,可以确保我获得访问器(setter 和 getter),但我看到 optionA 显然有一个 setter。
我更喜欢 optionA,因为这意味着我不需要到处都是“自我”,但我想了解使用其中一个而不是另一个的含义。
在我正在处理的程序中,所有变量都被声明为属性(下面的选项B),但是在访问它们时我必须使用'self'。我想知道这是否正确,只是正确做事方式的产物,或者我是否完全不合时宜,应该使用另一种形式,例如 optionA 的形式。
何时/为什么有人会在接口的大括号之间声明一个变量(如 optionA)?
我搜索了回答的问题,但没有找到任何能完全告诉我我想在这里学习什么的东西。但我无法在其他问题或他们的答案中找到我正在寻找的信息。
我在这里有一张代码的图片(但显然我没有允许将其直接链接到此消息中的威望点):http: //i1127.photobucket.com/albums/l631/GenericImage/headerQueryOBJC。 jpg
以下是清单:
#import <Cocoa/Cocoa.h>
@interface AppDelegate : NSObject <NSApplicationDelegate> {
IBOutlet NSTextField *optionA;
}
- (IBAction)happy:(id)sender;
@property (assign) IBOutlet NSWindow *window;
@property (weak) IBOutlet NSTextField *optionB;
@end
执行
#import "AppDelegate.h"
@implementation AppDelegate
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
// Insert code here to initialize your application
}
-(IBAction)happy:(id)sender
{
[optionA setStringValue:@":-)"];
[[self optionB] setStringValue:@":)"];
}
@end