programing

Xcode에서 "사용하지 않는 변수"경고를 어떻게 제거 할 수 있습니까?

nasanasas 2020. 8. 29. 11:10
반응형

Xcode에서 "사용하지 않는 변수"경고를 어떻게 제거 할 수 있습니까?


사용하지 않는 변수 경고가 발생하는 이유를 정확히 이해합니다. 대부분의 경우 매우 유용하기 때문에 일반적으로 억제하고 싶지 않습니다. 그러나 다음 (기인 된) 코드를 고려하십시오.

NSError *error = nil;
BOOL saved = [moc save:&error];
NSAssert1(saved, @"Dude!!1! %@!!!", error);

Xcode saved는 사용되지 않는 변수를 보고합니다 . 나는 이것이 NSAssert1매크로 이기 때문이라고 생각합니다 . NS_BLOCK_ASSERTIONS매크로되어 있지 목적 C의 주장은 확실히 활성화되도록 정의.

아무것도 아프지 않지만 어수선하고 짜증나는 것을 발견하고 억제하고 싶지만 어떻게 해야할지 모르겠습니다. 변수를 자체에 할당하면 컴파일러 경고가 제거되지만 그러한 것이 존재하는 경우 "올바른"방식으로 수행하는 것이 좋습니다.


새 LLVM 컴파일러에서 여전히 지원되는지 확실하지 않지만 GCC에는 해당 경고를 억제하는 데 사용할 수있는 "unused"속성이 있습니다.

BOOL saved __attribute__((unused)) = [moc save:&error];

또는 (LLVM이 위의 내용을 지원하지 않는 경우) 변수 선언을 별도의 줄로 분할하여 매크로 확장 여부에 관계없이 변수가 "사용"되도록 할 수 있습니다.

BOOL saved = NO;
saved = [moc save:&error];

Xcode 4.3.2를 사용하고 이것이 작동하는 것 같다는 것을 발견했습니다 (작은 쓰기).

BOOL saved __unused;

Xcode에서 "사용하지 않는 변수"에 대한 경고를 설정할 수 있습니다. 대상에 대한 "Build Settings"로 이동하고 "unused"라는 단어로 필터링합니다.

다음은 스크린 샷입니다. Builld 설정 스크린 샷

디버그 용으로 만 변경하는 것이 좋습니다. 그렇게하면 릴리스 버전에서 어떤 것도 놓치지 않습니다.


NSError *error = nil;
BOOL saved = [moc save:&error];
NSAssert1(saved, @"Dude!!1! %@!!!", error);
#pragma unused(saved)

이렇게 해보세요. 그것은 나를 위해 일하고 있습니다. 그것은 당신에게도 효과가 있습니다.


변수를 사용 된 것으로 표시하는 유일한 간단하고 이식 가능한 방법은 사용하는 것입니다.

BOOL saved = ...;
(void)saved; // now used

You may be happy with already described compiler-specific extensions, though.


try with: __unused attribute. Works in Xcode 5


#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wunused-variable"
    NSUInteger abc; /// Your unused variable
#pragma clang diagnostic pop

SOURCE


You can set "No" LLVM compliler 2.0 warning on "Release" 여기에 이미지 설명 입력


This is the way you do it in C and therefore also Objective-C.

Even though you do not have warnings enabled, it's always a good idea to mark the return value as explicitly ignored. It also goes to show other developers, that you have not just forgotten about the return value – you have indeed explicitly chosen to ignore it.

(void)[moc save:&error];

EDIT: Compilers ignore casts to void, so it should not affect performance – it's just a nice clean human annotation.


Make it take up two lines. Separate the declaration and default value

BOOL enabled = NO;

// ...

BOOL enabled;

enabled = NO;

참고 URL : https://stackoverflow.com/questions/5451123/how-can-i-get-rid-of-an-unused-variable-warning-in-xcode

반응형