2010-05-08 2 views
0

iPhone 앱을 많이 개발할수록 내가 쓰는 재사용 가능한 기능이 늘어납니다. 지금은 그들을 필요로하는 .m 파일에 복사합니다. 그러나 별도의 .m 파일을 가지고 #import하는 것이 더 좋을까요? 라이브러리를 컴파일하고 싶지는 않습니다. 다른 사람들이 어떻게 이것을 처리했는지 알고 싶습니다. 감사.iPhone이 하나 이상의 viewcontroller에서 사용하는 코드에 가장 적합한 위치입니까?

설명 : 다른 .m 파일이 자신의 것이라고 생각하는 방식으로 외부 코드를 가져 오길 원합니다. 선택기와 변수는 마치 어떤 식 으로든 주입되지 않고 대상 .m 파일에있는 것처럼 인식됩니다.

.m 및 .h 파일 모두에 공유 코드를 넣을 수 있습니까? #import를 사용합니까? 공유 코드가 인스턴스화가 필요한 자체 클래스로 간주되기를 원하지 않습니다.

답변

0

이 내 자신의 질문에 대한 부분적인 대답이다. 내 도우미 함수에 대한 클래스를 만들고 - 대신 -가있는 메서드를 정의하면 "정적"또는 "클래스"메서드입니다. 나 자신의 클래스의 인스턴스를 만들 필요없이 다른 클래스에서 호출 할 수 있습니다.

내 클래스가 MyHelperFunctions이고, 일반적인 MyHelperFunctions.h 및 MyHelperFunctions.m 파일을 가지고 있다고 가정 해 봅니다. 하는 .m 파일에

#import "MyHelperFunctions.h" 

: 나는이 작업을 수행해야 물론

int k = 0; 
    int i = [MyHelperFunctions addOneToThisNumber:k]; 

을 :과 같이 다른 클래스에서 호출 후

+ (int) addOneToThisNumber:(int)MyNum; 

그리고 :이 방법을 선언 할 수 있습니다 이러한 도우미 함수에 액세스하려는 모든 클래스의

내가 말하는 이유 중 일부는 내 헬퍼 클래스 파일에 sqlite3 기능을 넣었지만 다른 클래스에서 호출하면 "메모리 부족"오류 또는 "라이브러리 루틴 호출 순서 오류 "오류가 발생합니다.

따라서 이전에 존재하지 않았던 두 가지 문제가 생겼습니다. 스레딩 문제와 메모리 문제로 인해 한 클래스에 데이터베이스 인스턴스가 생성 된 다음 다른 클래스에 전달하려고했습니다 DB를 열어.

1

어떤 종류의 메서드를 사용하는지 모르겠지만 대부분의 UIViewController에 기능을 추가 할 때는 기존 클래스에 범주를 작성해야합니다. 우리는 UIImage를위한 카테고리를 가지고 있습니다. UIImage는 둥근 모서리를 추가하는 UIImage를 허용합니다.

#import "ClassName+CategoryName.h" 



@implementation ClassName (CategoryName) 

// method definitions 

@end 

나중에 당신은 단순히 #import ClassName+CategoryName.h이 확장 기능을 사용 할 수 있습니다

+ (UIImage *)imageWithCornerRadius:(UIImage*)img cornerRadius:(int) cornerRadius {}

는 또는 UIColor 카테고리로 우리는 종류가 매우 간단 보인다 [UIColor darkBrandColor]

같은 확장 방법이있다.

Categories in Objective-C

+1

카테고리가 특정 케이스에서 찾고자하는 것이 아닌 경우 유틸리티를 .h 및 .m 파일에 넣고 프로젝트에 둘 다를 추가하십시오. (필요할 때마다 가져 오십시오.) – bddckr

+1

이것은 nit-picking 일 수 있지만 그 메소드를 다음과 같이 호출하면 안됩니까? '+ (UIImage *) image : (UIImage *) image withCornerRadius : (int) radius' –

+0

@Jeff 당신이 맞습니다. – texmex5

관련 문제