我已经学了一段时间的Obj-C,有一个基本问题。我的代码中似乎到处都是大量的“self”。我认为这是关于声明和使用变量两种方式之间差异的基本问题。
附上一些支持我的问题的代码。其中,在一个方法中声明了两个变量(在不同的位置),并用来做相同的事情:optionA和optionB。我不确定该使用哪一个。我认为可能是因为使用“property”,如optionB所示,可以确保我得到访问器(setter和getter),但我看到optionA显然也有一个setter。
我更喜欢optionA,因为这意味着我不需要在所有地方使用“self”,但我想了解使用一个而不是另一个的影响。
在我正在工作的程序中,所有变量都被声明为属性(类似于下面的optionB),但我必须在访问它们时使用“self”。我想知道这是否正确,只是正确方式的产物,还是我完全错了,应该使用另一种形式,如optionA。
何时/为什么会有人在接口的花括号之间声明变量(如optionA)?
我在已回答的问题中搜索,但没有找到任何一个能告诉我我所要学习的内容的。但是我在其他问题或回答中也找不到我正在寻找的信息。
我这里有一张代码图片(但显然我没有足够的声望点数直接将其链接到此消息中):http://i1127.photobucket.com/albums/l631/GenericImage/headerQueryOBJC.jpg 以下是列表:
实施,执行
附上一些支持我的问题的代码。其中,在一个方法中声明了两个变量(在不同的位置),并用来做相同的事情:optionA和optionB。我不确定该使用哪一个。我认为可能是因为使用“property”,如optionB所示,可以确保我得到访问器(setter和getter),但我看到optionA显然也有一个setter。
我更喜欢optionA,因为这意味着我不需要在所有地方使用“self”,但我想了解使用一个而不是另一个的影响。
在我正在工作的程序中,所有变量都被声明为属性(类似于下面的optionB),但我必须在访问它们时使用“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