2011-04-20 4 views
0

나는 이것에 대한 대답은 "아니오"라고 생각하지만, 나는 확실히하고 싶다. Objective C에서 많은 객체 속성을 갖는 편리한 방법이 있습니까? 아직 할당 해제에 출시 될 필요가 등록하지 않고, 내가 이전을 해제해야 str을 설정할 때마다 한편간결한 속성

Foo.h: 

@interface Foo : NSObject { 
    NSString *str; // first line 
} 
@property (copy) NSString *str; // second line 

Foo.m: 

@implementation Foo 
@synthesize str; // third line 

(void) dealloc { 
    [str release]; // fourth line 
    ... 
} 

과 : 나는 속성을 사용하는 경우, 내가 네 줄을 작성해야 하나 개의 속성을 가지고 게다가. 속성을 선언하는 더 편리한 방법 또는 XCode4 바로 가기가 있습니까?

답변

1

타사 스크립트/서비스를 기꺼이 사용하려는 경우 David Hoerl은 최근 인스턴스 변수 관리 및 속성 선언에 도움이되는 게시 된 서비스를 게시했습니다. his announcement에서

: 아이폰 OS를 지원하기 위해 PropertyMaster 엑스 코드 스크립트의 버전 1.0 (및 자동화 서비스)를 발표

(그리고 낮은 정도, 코코아) 개발자 모든 속성에 바르 기반 코드를 기존과로 변환 property/viewDidAlloc/dealloc 관계를 유지 보수하십시오.

일단 Xcode 3 스크립트 (또는 Xcode 4 용 서비스)로 설치되면 ivars와 속성을 모두 포함하는 인터페이스 파일을 선택하고 모든 ivars를 속성으로 변환하여 모든 ivars를 삭제할 수 있습니다. 클립 보드에 하나의 커다란 텍스트 모양을 붙여 넣으면 인터페이스 및 구현 파일에 다시 붙여 넣을 수 있으며 합성 및 정렬 합성, viewDidUnload 및 dealloc 메서드를 사용할 수 있습니다. 또한 속성을 포함하는 클래스 확장을 선택 및 처리하고 병합 된 blob을 재생성 할 수 있습니다.

(즉 foo.delegate = 닐 [푸 출시])

또한, 그것은 약 인스턴스 변수를 식별하고, 이전 릴리즈에 대한 최종 "닫기"문을 생성하기 위하여 매우 최적화 된 시스템을 가지고

공지 사항의 URL이 작동하지 않는 경우 this one을 시도하십시오.

1

변수 정의 인 "첫 번째 줄"을 저장할 수 있지만 "네 번째 줄"을 self.str = nil;으로 변경해야합니다. Objective-C는 속성에 대한 요구에 따라 암시 적 변수를 생성 할 수 있지만 모든 플랫폼에서 사용할 수있는 것은 아닙니다. iOS 및 Mac 64 비트에서는 사용할 수 있지만 Mac 32 비트에서는 사용할 수 없습니다.

관련 문제