2013-08-08 5 views
1

많은 관계가있는 클래스를 구조화하는 가장 좋은 방법은 무엇입니까?구조체 objective-c 클래스

나는 C# 배경에서 왔습니다. C#에서 어떻게 할 것인지 보여 드리겠습니다. 항목에 액세스 할

class User { 
    public List<string> Items { get; set; } 
} 

코드 :

User u = new User(); 
u.Items = new List<string>(); 

u.Items.Add("foo"); 
u.Items.Add("bar"); 

foreach(string s in u.Items) { 
    Console.WriteLine(s); 
} 

어떻게 목표 - C에서이 작업을 수행합니까?

+0

'가장 좋은'방법은 무엇을 의미합니까? 위에서 설명한 내용은 Objective-C에서 매우 비슷한 기능을 제공하는 것은 매우 간단하지만 더 강력한 기능을 많이 사용하지 않으므로 이것이 의미하는 바가 아닌지 확실하지 않습니다. –

+0

@CarlVeazey "best"로 말하자면, 노련한 obj-c 코더가 어떻게 구현할까요? – jiujitsumind

답변

0

Objective-C는 언어 일 뿐이며 프레임 워크 자체를 포함하지 않습니다. C#에는 .NET Framework에서 제공되는 List이 없습니다.

먼저 Apple here의 공식 설명서에서 예를 통해 많은 가이드 중 하나를 읽으면 언어를 알아야합니다. 그런 다음 Foundation에 대한 몇 가지 참조를 읽을 수 있습니다.이 라이브러리는 가장 기본적인 라이브러리 지원 (목록 또는 기타 일반 요소 용)이있는 프레임 워크입니다. here부터 시작할 수 있습니다. NSString, NSMutableArray 등을보세요.

+0

Objective-C가 어떤 프레임 워크와도 분리되어 있다는 것이 기술적으로 사실 일지 모르지만 실제로는 언어가 Foundation과 거의 분리 될 수 없습니다. 동시에 Foundation 프레임 워크에 대해 조금 배우지 않고 언어를 배우는 것이 무의미합니다. – Caleb

+0

@caleb : 여기서는 기술적 인 부분에 대해 이야기하고 Objective-C에는 Foundation이 필요하지 않습니다. 그들은 서로 다른 두 가지입니다. 어쨌든 내 대답에 나는 명시 적으로 설명했다 : 먼저 언어를 배우고 프레임 워크를 배운다. 그래서 당신은 무엇에 대해 불평하고 있는가? 'NSMutableArray'가 클래스가 어떻게 선언되고 사용되는지 이해하지 않고 무엇인지 아는 것은 의미가 없습니다. 그리고 구체적으로, 귀하의 요점은 downvote 가치가 있다고 생각합니까? – Jack

+0

Obj-C와 Foundation을 구분하지 않았다면 더 나은 대답이라고 할 수 있습니다. 아무도 진공 상태에서 언어를 배울 수 없습니다. 누구나 Obj-C 클래스에 대해 배웠던 첫 번째 것 중 하나는 NSObject에서 파생된다는 것입니다. 많은 기본 기능 (예 : 메모리 관리)이 여기에 있습니다. 그러므로 OP * first *가 언어를 배우고 Foundation을 배우는 것이 오해의 소지가 있음을 암시하는 것입니다. * 나는 * 당신이 말하는 것을 알고 있지만 초보자는 아마 그렇지 않을 것입니다. downvoting에 관해서는, 나는 좋은 이유만으로 그것을한다. – Caleb

3

ObjC를 자세히 알아야합니다.ObjC의 클래스 : 마우스 오른쪽 버튼 클릭 -> 새 파일 만들기 및 ObjC 클래스 선택 각 클래스는 외부에 액세스 할 수있는 .h 파일의 속성을 가지고 있습니다. 여기에 전 목록은 NSMultableArray입니다.

//USer.h 
@interface User: NSObject 
{} 
@property(nonatomic, strong) NSMutableArray *items; 
@end 

//User.m 
@implementation User 
-(id)init{ 
if (self = [super init]){ 
    self.items = [NSMutableArray array]; 
} 
return self; 
} 
@end 

//In other class 
#import "User.h" 

User *u = [[User alloc] init]; 
[u.items addObject:@"foo"]; 

[u.items addObject:@"bar"]; 

for (NSString *aStr in u.items) { 

    NSLog (@"%@",aStr) 
}