Obj-C를 잠시 동안 배웠습니다. 근본적인 질문이 있습니다. 내 코드에는 너무 많은 수의 '자아가있는 것 같습니다. 변수를 선언하고 사용하는 두 가지 방법의 차이점에 대한 기본적인 질문에 이르기까지라고 생각합니다.@property와 인스턴스 변수를 언제 사용하는지 알고 싶습니다
내 질문을 지원하는 일부 코드가 첨부되어 있습니다. 여기에는 두 개의 변수가 선언되어 (다른 위치에서) 메소드에서 동일한 작업을 수행하는 데 사용됩니다 (optionA 및 optionB). 어느 것을 사용해야할지 모르겠습니다. 나는 optionB와 같이 "property"를 사용했기 때문에 접근 자 (setter 및 getter)를 얻을 수 있다고 생각 했었지만 optionA에는 setter가있는 것으로 보입니다.
필자는 옵션 A를 선호합니다. 왜냐하면 모든 곳에서 "자기"가 필요하지 않기 때문에 나는 하나의 옵션을 사용하는 의미를 이해하고자합니다.
내가 작업하고있는 프로그램에서 모든 변수가 속성 (아래의 옵션 B)으로 선언되지만 액세스 할 때 '자체'를 사용해야합니다. 그게 적절하고, 일을 제대로 수행하는 방법의 유물인지, 아니면 제가 완전히 벗어 났고 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
감사 바이킹! 서식을 어떻게 수정 했습니까? 나는 내가해야 할 일을 잘 이해하지 못했습니다 ... – ObjCLearner
코드의 모든 라인을 선택하고 편집기에서 코드 버튼을 누르면 코드가 사용자를 위해 포맷됩니다. (실제로 각 줄 앞에 4 칸 씩 넣는 방식으로 코드를 포맷하는 것이지만 편집자가 대신 할 수 있으므로 그렇게하지 않아도됩니다.) – Chuck
감사합니다. 척! 나는 그 기술을 다음에 시도 할 것이다. 나는 혼란 스러웠고 백틱 (back-tick)과 여덟 칸을 사용하려고 노력했다 ... 아무 소용이 없었다. – ObjCLearner