2015-01-22 4 views
2

많은 사람들이 때때로 코드에 NS_INLINE 함수를 사용한다는 것을 알고 있습니다. 나는 그들이 그것을 언제 사용해야하는지, 그리고 왜 그것을 사용 하는지를 어떻게 아는지 궁금하다.객관적인 C에서 NS_INLINE 함수를 사용할 때

나는 INLINE 함수는 objective-C 함수보다 적은 명령어가 있음을 읽었습니다.

NS_INLINE id NilToEmptyString(id obj) 
{ 
    return obj ? : @""; 
} 

NS_INLINE BOOL isRunningTests(void) 

내가 어떤 특정 장소에서 그것을 사용하려면 : 나는 내가 본 몇 가지 예를

C.

에 대해 너무 많이 알고하지 않기 때문에 나는이있는이 지역에서 길을 잃었 조금입니다. 예를 들어. 갤러리의 모든 assets을 가져 와서 locationdate이 있는지 확인해야합니다. 나는 checkLocationcheckDate의 기능을 inline 기능으로하고 싶습니다.

일부 사용자의 사진은 5000 장이며 iPhone 4의 경우 5 분이 지나면 시간이 너무 많이 걸립니다. 내가 refactor 코드 싶습니다 그리고 때로는 inline 함수는 나쁜 방법이 아닙니다 읽습니다.

+9

사용하지 마십시오. 못. 컴파일러는 보통 인라인 할 때 스스로 결정할 수 있습니다. 실제로 성능 문제가 있고 프로파일 러 로그를 본 후에 만 ​​인라이닝을 고려하십시오. 인라인이 무엇인지 모르는 경우에는 사용하지 마십시오. – Sulthan

+1

Objective-C 작업의 대다수가 너무 느리므로 가끔 메서드를 인라인하면 성능에 아무런 영향을주지 않습니다. –

답변

2

NS_INLINE__attribute__((always_inline)) 컴파일러 지시문의 매크로이며 inline 키워드보다 강력합니다. 인라이닝이 불필요한 실행 불능화없이 더 빠른 코드로 이어질 것이라는 확신이들 때만 사용하십시오.

+2

그리고 코드를 프로파일 링하는 시간을 느리게하고 정확하게 찾아야하는 작업에 의해 결정되는 추가 속도가 필요합니다. – zaph

관련 문제