아마 이것에 대한 매우 간단한 해결책이 있지만 작동시키지 못할 수 있습니다.다른 클래스의 변수에 어떻게 액세스합니까?
내 코코아 파일에 여러 클래스가 있습니다. 클래스 중 하나에서 class1
나는 다른 클래스에서 사용해야하는 변수를 만듭니다 class2
. class2
에이 변수를 가져 오는 간단한 방법이 있습니까?
아마 이것에 대한 매우 간단한 해결책이 있지만 작동시키지 못할 수 있습니다.다른 클래스의 변수에 어떻게 액세스합니까?
내 코코아 파일에 여러 클래스가 있습니다. 클래스 중 하나에서 class1
나는 다른 클래스에서 사용해야하는 변수를 만듭니다 class2
. class2
에이 변수를 가져 오는 간단한 방법이 있습니까?
변수를 public으로 만들거나 속성으로 만들 수 있습니다. 예를 들어, 공개 할 수 있습니다 :
@interface Class1
{
int var; // @protected by default
}
@property (readwrite, nonatomic) int var;
// methods...
@end
@implementation Class1
@synthesize var;
...
@end
// Inside a Class2 method:
Class1 *obj = ...;
obj.var = 3; // implicitly calls [obj setVar:3]
int x = obj.var; // implicitly calls x = [obj var];
속성 접근 방식이 훨씬 뛰어납니다. IMHO – Abizern
당신은 속성으로 Class2의에서 변수에 노출 될 수 :
@interface Class1
{
@public
int var;
}
// methods...
@end
// Inside a Class2 method:
Class1 *obj = ...;
obj->var = 3;
가 그것을 속성을 확인합니다. class1에 class2에 대한 참조가 있으면 class1에 해당 변수가 표시됩니다. 솔직히, 당신은 Objective-C와 객체 지향 프로그래밍의 초보자 인 것 같습니다. 나는 당신이 양쪽 모두에 대해 더 읽기를 권한다.
Here is a place Objective-C로 객체 지향 프로그래밍을 시작할 수 있습니다.
"stackoverflow.com"은 고급 사용자 만 사용할 수 있습니까? 누가 초보자인지, 누가 누구인지 정의하는 법.그 남자는 객관적인 C를 어디서 배울 것인가에 대해 의문을 제기하지 않았습니다. –
솔직히 @DariusMiliauskas와 동의합니다 : P – preetam
앱 전체에서 액세스해야하는 변수가 들어있는 파일을 만들어보세요.
extern NSString *stringVariable;
@interface GlobalVariables
@property (retain, nonatomic) NSString *stringVariable;
@end
과 GlobalVariables.m 파일에만큼 당신이 GlobalVariables.h에 이제까지하는 .m 파일을 가져올 때 당신은 당신이 할당 할 수 있습니다에 변수 및 액세스에 접근 할 필요가 다음
#import "GlobalVariables.h"
@implements GlobalVariables
@synthesize stringVariable;
NSString *stringVariable;
@end
그리고 추가 프로그램 전체 어디에서나 사용할 수 있습니다.
편집는
내가 위에서 준 내 대답은 다르게 내가 지금이 일을 가겠어요 방법이 아니다. 나는 "엑스 코드"에서
// .....
MyClass *myClass = [[MyClass alloc] init];
[myClass setMyVariable:@"My String to go in my variable"];
// .....
을 것보다 몇 가지 방법에서 다른 클래스의
@implementation MyClass
@sythesize = myVariable = _myVariable; // Not that we need to do this anymore
@end
그런 다음하는 .m 파일에 다음
@interface MyClass
@property (nonatomic, strong) NSString *myVariable;
@end
처럼 그것은 것입니다 당신이 필요 가져 오기를 만들고 속성으로 선언하여 객체를 만든 다음 "object.variable"구문을 사용합니다. "Class2.m"파일은 다음과 같이 표시됩니다.
#import Class2.h
#import Class1.h;
@interface Class2()
...
@property (nonatomic, strong) Class1 *class1;
...
@end
@implementation Class2
//accessing the variable from balloon.h
...class1.variableFromClass1...;
...
@end
감사합니다! :-)
"내 코코아 파일에 여러 개의 클래스가 있습니다."일반적인 방법은 각 클래스에 대해 한 쌍의 파일 (MyClass.h, MyClass.m)을 만드는 것입니다. 프로젝트에서 그룹을 마우스 오른쪽 버튼으로 클릭하고 파일 추가를 클릭하면됩니다. .m을 만들면 .h가 무료로 제공 될 것입니다. –
인스턴스 변수에 직접 액세스하는 것은 매우 나쁜 생각입니다. 속성을 사용하고 접근자를 합성하거나 직접 작성하십시오. 직접 변수 액세스는 Mac OS X에서 KVO 및 바인딩과 같은 문제를 해결하며 좋은 OO 실천이 아닙니다. – Alex