ioS开发--Warning警告处理

去除警告的方法:

#pragma clang diagnostic push
#pragma clang diagnostic ignored"-Wunused-function"
local void free_linkedlist(ll)
linkedlist_data* ll;
{
    free_datablock(ll->first_block);
    ll->first_block = ll->last_block = NULL;
}
#pragma clang diagnostic pop

上述的代码块中,正常的代码是没有下方这些代码的。但是呢,这个方法我是已经写了,但是在项目中没有运用到,所以会报出这样的错误,如图错误信息图所示:

代码块:

#pragma clang diagnostic push
#pragma clang diagnostic ignored"-Wunused-function"

// edit code

#pragma clang diagnostic pop

错误信息图:

ioS开发--Warning警告处理_第1张图片
错误信息图.png

在Xcode中选中警告的消息,右击选择Reveal in Log,然后右边会有报告的消息

-Wunused-function

所以上面去除警告是使用

-Wunused-function

这个来写的。其他的警告同理做法就能去除。

ioS开发--Warning警告处理_第2张图片
Snip20161122_3.png

示例:
我们知道,UIAlertView虽然简单易用,但是呢Apple在iOS 9.0的时候丢弃这个类了,我们在其头文件中可以看到

NS_CLASS_DEPRECATED_IOS(2_0, 9_0, "UIAlertView is deprecated. Use UIAlertController with a preferredStyle of UIAlertControllerStyleAlert instead") __TVOS_PROHIBITED

所以平时用到这个方法的时候,项目中Xcode就会给这个地方给出警告。但是也有办法处理这样的警告,如下图所示:


下方罗列出来是一些iOS中常见的一些警告消息,在使用第三方库或者Apple官方过时的方法的时候,都会报警告。

1. Semantic Warnings(语义警告)

Warning Message
-WCFString-literal input conversion stopped due to an input byte that does not belong to the input codeset UTF-8
-WNSObject-attribute __attribute ((NSObject)) may be put on a typedef only, attribute is ignored
-Wabstract-vbase-init initializer for virtual base class %0 of abstract class %1 will never be used
-Waddress-of-array-temporary pointer is initialized by a temporary array, which will be destroyed at the end of the full-expression
-Warc-maybe-repeated-use-of-weak "weak %select{variable property implicit property instance variable}0 %1 may be accessed multiple times in this %select{function method block lambda}2 and may be unpredictably set to nil assign to a strong variable to keep the object alive
-Warc-non-pod-memaccess %select{destination for source of}0 this %1 call is a pointer to ownership-qualified type %2
-Warc-performSelector-leaks performSelector may cause a leak because its selector is unknown
-Warc-repeated-use-of-weak "weak %select{variable property implicit property instance variable}0 %1 is accessed multiple times in this %select{function method block lambda}2 but may be unpredictably set to nil assign to a strong variable to keep the object alive
-Warc-retain-cycles capturing %0 strongly in this block is likely to lead to a retain cycle
-Warc-unsafe-retained-assign assigning retained object to unsafe property object will be released after assignment
-Warc-unsafe-retained-assign assigning %select{array literal dictionary literal numeric literal boxed expression should not happen block literal}0 to a weak %select{property variable}1 object will be released after assignment
-Warc-unsafe-retained-assign assigning retained object to %select{weak unsafe_unretained}0 %select{property variable}1 object will be released after assignment
-Warray-bounds array index %0 is past the end of the array (which contains %1 element%s2)
-Warray-bounds array index %0 is before the beginning of the array
-Warray-bounds 'static' has no effect on zero-length arrays
-Warray-bounds array argument is too small contains %0 elements, callee requires at least %1
-Warray-bounds-pointer-arithmetic the pointer incremented by %0 refers past the end of the array (that contains %1 element%s2)
-Warray-bounds-pointer-arithmetic the pointer decremented by %0 refers before the beginning of the array
-Wassign-enum integer constant not in range of enumerated type %0
-Watomic-property-with-user-defined-accessor writable atomic property %0 cannot pair a synthesized %select{getter setter}1 with a user defined %select{getter setter}2
-Wattributes unknown attribute %0 ignored
-Wauto-var-id 'auto' deduced as 'id' in declaration of %0
-Wavailability unknown platform %0 in availability macro
-Wavailability overriding method %select{introduced after deprecated before obsoleted before}0 overridden method on %1 (%2 vs. %3)
-Wavailability availability does not match previous declaration
-Wavailability overriding method cannot be unavailable on %0 when its overridden method is available
-Wavailability feature cannot be %select{introduced deprecated obsoleted}0 in %1 version %2 before it was %select{introduced deprecated obsoleted}3 in version %4 attribute ignored
-Wbad-function-cast cast from function call of type %0 to non-matching type %1
-Wbitfield-constant-conversion implicit truncation from %2 to bitfield changes value from %0 to %1
-Wbitwise-op-parentheses '&' within '\'
-Wbool-conversion "initialization of pointer of type %0 to null from a constant boolean " "expression
-Wbridge-cast %0 cannot bridge to %1
-Wbridge-cast %0 bridges to %1, not %2
-Wbuiltin-requires-header declaration of built-in function '%0' requires inclusion of the header stdio.h
-Wbuiltin-requires-header declaration of built-in function '%0' requires inclusion of the header setjmp.h
-Wbuiltin-requires-header declaration of built-in function '%0' requires inclusion of the header ucontext.h
-Wc++-compat %select{ empty }0%select{struct union}1 has size 0 in C, %select{size 1 non-zero size}2 in C++
-Wc++11-compat explicit instantiation cannot be 'inline'
-Wc++11-compat explicit instantiation of %0 must occur at global scope
-Wc++11-compat explicit instantiation of %0 not in a namespace enclosing %1
-Wc++11-compat explicit instantiation of %q0 must occur in namespace %1
-Wc++11-narrowing constant expression evaluates to %0 which cannot be narrowed to type %1 in C++11
-Wc++11-narrowing type %0 cannot be narrowed to %1 in initializer list in C++11
-Wc++11-narrowing non-constant-expression cannot be narrowed from type %0 to %1 in initializer list in C++11
-Wc++98-c++11-compat type definition in a constexpr %select{function constructor}0 is incompatible with C++ standards before C++1y
-Wc++98-c++11-compat use of this statement in a constexpr %select{function constructor}0 is incompatible with C++ standards before C++1y
-Wc++98-c++11-compat init-captures.def warn_cxx11_compat_init_capture : Warning "initialized lambda captures are incompatible with C++ standards " "before C++1y
-Wc++98-c++11-compat variable declaration in a constexpr %select{function constructor}0 is incompatible with C++ standards before C++1y
-Wc++98-c++11-compat constexpr function with no return statements is incompatible with C++ standards before C++1y
-Wc++98-c++11-compat multiple return statements in constexpr function is incompatible with C++ standards before C++1y
-Wc++98-c++11-compat variable templates are incompatible with C++ standards before C++1y
-Wc++98-compat substitution failure due to access control is incompatible with C++98
-Wc++98-compat %select{anonymous struct union}0 member %1 with a non-trivial %select{constructor copy constructor move constructor copy assignment operator move assignment operator destructor}2 is incompatible with C++98
-Wc++98-compat enumeration type in nested name specifier is incompatible with C++98
-Wc++98-compat static data member %0 in union is incompatible with C++98
-Wc++98-compat default template arguments for a function template are incompatible with C++98
-Wc++98-compat scalar initialized from empty initializer list is incompatible with C++98
-Wc++98-compat befriending %1 without '%select{struct interface union class enum}0' keyword is incompatible with C++98
-Wc++98-compat use of null pointer as non-type template argument is incompatible with C++98
-Wc++98-compat friend declaration naming a member of the declaring class is incompatible with C++98
-Wc++98-compat non-class friend type %0 is incompatible with C++98
-Wc++98-compat befriending enumeration type %0 is incompatible with C++98
-Wc++98-compat use of non-static data member %0 in an unevaluated context is incompatible with C++98
-Wc++98-compat friend function %0 would be implicitly redefined in C++98
-Wc++98-compat %select{class template class template partial variable template variable template partial function template member function static data member member class member enumeration}0 specialization of %1 outside namespace %2 is incompatible with C++98÷
-Wc++98-compat reference initialized from initializer list is incompatible with C++98
-Wc++98-compat redundant parentheses surrounding address non-type template argument are incompatible with C++98
-Wc++98-compat initialization of initializer_list object is incompatible with C++98
-Wc++98-compat use of 'template' keyword outside of a template is incompatible with C++98
-Wc++98-compat non-type template argument referring to %select{function object}0 %1 with internal linkage is incompatible with C++98
-Wc++98-compat use of 'typename' outside of a template is incompatible with C++98
-Wc++98-compat passing object of trivial but non-POD type %0 through variadic %select{function block method constructor}1 is incompatible with C++98
-Wc++98-compat goto would jump into protected scope in C++98
-Wc++98-compat constructor call from initializer list is incompatible with C++98
-Wc++98-compat 'auto' type specifier is incompatible with C++98
-Wc++98-compat delegating constructors are incompatible with C++98
-Wc++98-compat 'constexpr' specifier is incompatible with C++98
-Wc++98-compat inheriting constructors are incompatible with C++98
-Wc++98-compat explicit conversion functions are incompatible with C++98
-Wc++98-compat switch case would be in a protected scope in C++98
-Wc++98-compat '%0' type specifier is incompatible with C++98
-Wc++98-compat indirect goto might cross protected scopes in C++98
-Wc++98-compat-pedantic cast between pointer-to-function and pointer-to-object is incompatible with C++98
-Wc++98-compat-pedantic implicit conversion from array size expression of type %0 to %select{integral enumeration}1 type %2 is incompatible with C++98
-Wcast-align cast from %0 to %1 increases required alignment from %2 to %3
-Wcast-of-sel-type cast of type %0 to %1 is deprecated use sel_getName instead
-Wchar-subscripts array subscript is of type 'char'
-Wconditional-uninitialized variable %0 may be uninitialized when %select{used here captured by block}1
-Wconstant-logical-operand use of logical '%0' with constant operand
-Wconstexpr-not-const 'constexpr' non-static member function will not be implicitly 'const' in C++1y add 'const' to avoid a change in behavior
-Wconsumed state of variable '%0' must match at the entry and exit of loop
-Wconsumed parameter '%0' not in expected state when the function returns: expected '%1', observed '%2'
-Wconsumed argument not in expected state expected '%0', observed '%1'
-Wconsumed invalid invocation of method '%0' on a temporary object while it is in the '%1' state
-Wconsumed return state set for an unconsumable type '%0'
-Wconsumed consumed analysis attribute is attached to member of class '%0' which isn't marked as consumable
-Wconsumed invalid invocation of method '%0' on object '%1' while it is in the '%2' state
-Wconsumed return value not in expected state expected '%0', observed '%1'
-Wconversion implicit conversion discards imaginary component: %0 to %1
-Wconversion non-type template argument with value '%0' converted to '%1' for unsigned template parameter of type %2
-Wconversion implicit conversion loses floating-point precision: %0 to %1
-Wconversion implicit conversion loses integer precision: %0 to %1
-Wconversion non-type template argument value '%0' truncated to '%1' for template parameter of type %2
-Wconversion implicit conversion turns vector to scalar: %0 to %1
-Wconversion implicit conversion turns floating-point number into integer: %0 to %1
-Wcovered-switch-default default label in switch which covers all enumeration values
-Wcustom-atomic-properties atomic by default property %0 has a user defined %select{getter setter}1 (property should be marked 'atomic' if this is intended)
-Wdangling-field initializing pointer member %0 with the stack address of parameter %1
-Wdangling-field binding reference %select{ subobject of }1member %0 to a temporary value
-Wdangling-field binding reference member %0 to stack allocated parameter %1
-Wdangling-initializer-list array backing the initializer list will be destroyed at the end of %select{the full-expression the constructor}0
-Wdelete-incomplete deleting pointer to incomplete type %0 may cause undefined behavior
-Wdelete-non-virtual-dtor delete called on %0 that is abstract but has non-virtual destructor
-Wdelete-non-virtual-dtor delete called on %0 that has virtual functions but non-virtual destructor
-Wdeprecated access declarations are deprecated use using declarations instead
-Wdeprecated definition of implicit copy %select{constructor assignment operator}1 for %0 is deprecated because it has a user-declared %select{copy %select{assignment operator constructor}1 destructor}2
-Wdeprecated dynamic exception specifications are deprecated
-Wdeprecated-increment-bool incrementing expression of type bool is deprecated
-Wdeprecated-objc-isa-usage assignment to Objective-C's isa is deprecated in favor of object_setClass()
-Wdeprecated-objc-isa-usage direct access to Objective-C's isa is deprecated in favor of object_getClass()
-Wdeprecated-objc-pointer-introspection bitmasking for introspection of Objective-C object pointers is strongly discouraged
-Wdeprecated-objc-pointer-introspection-performSelector warn_objc_pointer_masking.Text
-Wdeprecated-writable-strings dummy warning to enable -fconst-strings
-Wdirect-ivar-access instance variable %0 is being directly accessed
-Wdistributed-object-modifiers conflicting distributed object modifiers on return type in implementation of %0
-Wdistributed-object-modifiers conflicting distributed object modifiers on parameter type in implementation of %0
-Wdivision-by-zero division by zero is undefined
-Wdivision-by-zero remainder by zero is undefined
-Wdocumentation parameter '%0' not found in the function declaration
-Wdocumentation not a Doxygen trailing comment
-Wduplicate-enum element %0 has been implicitly assigned %1 which another element has been assigned
-Wduplicate-method-match multiple declarations of method %0 found and ignored
-Wdynamic-class-memaccess %select{destination for source of first operand of second operand of}0 this %1 call is a pointer to dynamic class %2 vtable pointer will be %select{overwritten copied moved compared}3
-Wempty-body switch statement has empty body
-Wempty-body for loop has empty body
-Wempty-body if statement has empty body
-Wempty-body range-based for loop has empty body
-Wempty-body while loop has empty body
-Wenum-compare comparison of two values with different enumeration types%diff{ ($ and $) }0,1
-Wenum-conversion implicit conversion from enumeration type %0 to different enumeration type %1
-Wexit-time-destructors declaration requires an exit-time destructor
-Wexplicit-ownership-type method parameter of type %0 with no explicit ownership
-Wextern-c-compat %select{ empty }0%select{struct union}1 has size 0 in C, %select{size 1 non-zero size}2 in C++
-Wextern-initializer 'extern' variable has an initializer
-Wfloat-equal comparing floating point with == or != is unsafe
-Wformat "data argument position '%0' exceeds the number of data arguments (%1)
-Wformat position arguments in format strings start counting at 1 (not 0)
-Wformat invalid position specified for %select{field width field precision}0
-Wformat cannot mix positional and non-positional arguments in format string
-Wformat values of type '%0' should not be used as format arguments add an explicit cast to %1 instead
-Wformat format specifies type %0 but the argument has type %1
-Wformat zero field width in scanf format string is unused
-Wformat no closing ']' for '%%[' in scanf format string
-Wformat format string should not be a wide string
-Wformat format string contains '\0' within the string body
-Wformat '%select{ '\'.}0' specified field %select{width precision}0 is missing a matching 'int' argument
-Wformat field %select{width precision}0 should have type %1, but argument has type %2
-Wformat %select{field width precision}0 used with '%1' conversion specifier, resulting in undefined behavior
-Wformat format string missing
-Wformat incomplete format specifier
-Wformat flag '%0' results in undefined behavior with '%1' conversion specifier
-Wformat flag '%0' is ignored when flag '%1' is present
-Wformat more '%%' conversions than data arguments
-Wformat length modifier '%0' results in undefined behavior or no effect with '%1' conversion specifier
-Wformat-extra-args data argument not used by format string
-Wformat-invalid-specifier invalid conversion specifier '%0'
-Wformat-nonliteral format string is not a string literal
-Wformat-security format string is not a string literal (potentially insecure)
-Wformat-zero-length format string is empty
-Wgcc-compat GCC does not allow the 'cleanup' attribute argument to be anything other than a simple identifier
-Wglobal-constructors declaration requires a global constructor
-Wglobal-constructors declaration requires a global destructor
-Wgnu-conditional-omitted-operand use of GNU ?: conditional expression extension, omitting middle operand
-Wheader-hygiene using namespace directive in global context in header
-Widiomatic-parentheses using the result of an assignment as a condition without parentheses
-Wignored-attributes 'malloc' attribute only applies to functions returning a pointer type
-Wignored-attributes %0 attribute only applies to %select{functions unions variables and functions functions and methods parameters functions, methods and blocks functions, methods, and classes functions, methods, and parameters classes variables methods variables, functions and labels fields and global variables structs variables, functions and tag types thread-local variables variables and fields variables, data members and tag types types and namespaces Objective-C interfaces}1
-Wignored-attributes '%0' attribute cannot be specified on a definition
-Wignored-attributes __weak attribute cannot be specified on an automatic variable when ARC is not enabled
-Wignored-attributes Objective-C GC does not allow weak variables on the stack
-Wignored-attributes __weak attribute cannot be specified on a field declaration
-Wignored-attributes attribute %0 cannot be applied to %select{functions Objective-C method}1 without return value
-Wignored-attributes attribute declaration must precede definition
-Wignored-attributes attribute %0 is ignored, place it after \"%select{class struct union interface enum}1\" to apply attribute to type declaration
-Wignored-attributes __declspec attribute %0 is not supported
-Wignored-attributes attribute %0 ignored, because it cannot be applied to a type
-Wignored-attributes attribute %0 after definition is ignored
-Wignored-attributes %0 attribute ignored
-Wignored-attributes 'sentinel' attribute only supported for variadic %select{functions blocks}0
-Wignored-attributes 'sentinel' attribute requires named arguments
-Wignored-attributes '%0' only applies to %select{function pointer Objective-C object or block pointer}1 types type here is %2
-Wignored-attributes 'nonnull' attribute applied to function with no pointer arguments
-Wignored-attributes %0 attribute can only be applied to instance variables or properties
-Wignored-attributes unknown visibility %0
-Wignored-attributes %0 calling convention ignored on variadic function
-Wignored-attributes %0 only applies to variables with static storage duration and functions
-Wignored-attributes ibaction attribute can only be applied to Objective-C instance methods
-Wignored-attributes #pramga ms_struct can not be used with dynamic classes or structures
-Wignored-attributes transparent union definition must contain at least one field transparent_union attribute ignored
-Wignored-attributes first field of a transparent union cannot have %select{floating point vector}0 type %1 transparent_union attribute ignored
-Wignored-attributes 'gnu_inline' attribute requires function to be marked 'inline', attribute ignored
-Wignored-attributes calling convention %0 ignored for this target
-Wignored-attributes transparent_union attribute can only be applied to a union definition attribute ignored
-Wignored-attributes %select{alignment size}0 of field %1 (%2 bits) does not match the %select{alignment size}0 of the first field in transparent union transparent_union attribute ignored
-Wignored-attributes attribute %0 is already applied
-Wignored-attributes %0 attribute ignored for field of type %1
-Wignored-attributes %0 attribute ignored when parsing type
-Wignored-attributes %0 attribute only applies to %select{functions methods properties}1 that return %select{an Objective-C object a pointer a non-retainable pointer}2
-Wignored-attributes %0 attribute only applies to %select{Objective-C object pointer}1 parameters
-Wignored-attributes attribute %0 is already applied with different parameters
-Wignored-attributes %0 attribute argument not supported: %1
-Wignored-qualifiers "'%0' type qualifier%s1 on return type %plural{1:has :have}1 no effect
-Wignored-qualifiers ARC %select{unused unsafe_unretained strong weak autoreleasing}0 lifetime qualifier on return type is ignored
-Wimplicit-atomic-properties property is assumed atomic by default
-Wimplicit-atomic-properties property is assumed atomic when auto-synthesizing the property
-Wimplicit-fallthrough fallthrough annotation in unreachable code
-Wimplicit-fallthrough unannotated fall-through between switch labels
-Wimplicit-fallthrough fallthrough annotation does not directly precede switch label
-Wimplicit-function-declaration implicit declaration of function %0
-Wimplicit-function-declaration use of unknown builtin %0
-Wimplicit-retain-self "block implicitly retains 'self' explicitly mention 'self' to indicate this is intended behavior
-Wincompatible-library-redeclaration incompatible redeclaration of library function %0
-Wincomplete-implementation method definition for %0 not found
-Winherited-variadic-ctor inheriting constructor does not inherit ellipsis
-Winitializer-overrides subobject initialization overrides initialization of other fields within its enclosing subobject
-Winitializer-overrides initializer overrides prior initialization of this subobject
-Wint-to-pointer-cast cast to %1 from smaller integer type %0
-Wint-to-void-pointer-cast cast to %1 from smaller integer type %0
-Winvalid-iboutlet IBOutletCollection properties should be copy/strong and not assign
-Winvalid-iboutlet %select{instance variable property}2 with %0 attribute must be an object type (invalid %1)
-Winvalid-noreturn function %0 declared 'noreturn' should not return
-Winvalid-noreturn function declared 'noreturn' should not return
-Wlarge-by-value-copy return value of %0 is a large (%1 bytes) pass-by-value object pass it by reference instead ?
-Wlarge-by-value-copy %0 is a large (%1 bytes) pass-by-value argument pass it by reference instead ?
-Wliteral-conversion implicit conversion from %0 to %1 changes value from %2 to %3
-Wliteral-range magnitude of floating-point constant too large for type %0 maximum is %1
-Wliteral-range magnitude of floating-point constant too small for type %0 minimum is %1
-Wlogical-not-parentheses logical not is only applied to the left hand side of this comparison
-Wlogical-op-parentheses '&&' within '\'
-Wloop-analysis variable%select{s %1 s %1 and %2 s %1, %2, and %3 s %1, %2, %3, and %4}0 used in loop condition not modified in loop body
-Wloop-analysis variable %0 is %select{decremented incremented}1 both in the loop header and in the loop body
-Wmethod-signatures conflicting parameter types in implementation of %0: %1 vs %2
-Wmethod-signatures conflicting return type in implementation of %0: %1 vs %2
-Wmicrosoft extra qualification on member %0
-Wmismatched-method-attributes attributes on method implementation and its declaration must match
-Wmismatched-parameter-types conflicting parameter types in implementation of %0%diff{: $ vs $ }1,2
-Wmismatched-return-types conflicting return type in implementation of %0%diff{: $ vs $ }1,2
-Wmissing-braces suggest braces around initialization of subobject
-Wmissing-declarations '%0' ignored on this declaration
-Wmissing-field-initializers missing field '%0' initializer
-Wmissing-method-return-type method has no return type specified defaults to 'id'
-Wmissing-noreturn block could be declared with attribute 'noreturn'
-Wmissing-noreturn %select{function method}0 %1 could be declared with attribute 'noreturn'
-Wmissing-prototypes no previous prototype for function %0
-Wmissing-variable-declarations no previous extern declaration for non-static variable %0
-Wmultiple-move-vbase defaulted move assignment operator of %0 will move assign virtual base class %1 multiple times
-Wnested-anon-types anonymous types declared in an anonymous union/struct are an extension
-Wnon-literal-null-conversion "expression which evaluates to zero treated as a null pointer constant of " "type %0
-Wnon-pod-varargs cannot pass object of %select{non-POD non-trivial}0 type %1 through variadic %select{function block method constructor}2 call will abort at runtime
-Wnon-pod-varargs cannot pass %select{non-POD non-trivial}0 object of type %1 to variadic %select{function block method constructor}2 expected type from format string was %3
-Wnon-pod-varargs second argument to 'va_arg' is of ARC ownership-qualified type %0
-Wnon-pod-varargs second argument to 'va_arg' is of non-POD type %0
-Wnon-virtual-dtor %0 has virtual functions but non-virtual destructor
-Wnonnull null passed to a callee which requires a non-null argument
-Wnull-arithmetic comparison between NULL and non-pointer %select{(%1 and NULL) (NULL and %1)}0
-Wnull-arithmetic use of NULL in arithmetic operation
-Wnull-dereference indirection of non-volatile null pointer will be deleted, not trap
-Wobjc-autosynthesis-property-ivar-name-match autosynthesized property %0 will use %select{ synthesized}1 instance variable %2, not existing instance variable %3
-Wobjc-forward-class-redefinition redefinition of forward class %0 of a typedef name of an object type is ignored
-Wobjc-interface-ivars declaration of instance variables in the interface is deprecated
-Wobjc-literal-compare direct comparison of %select{an array literal a dictionary literal a numeric literal a boxed expression }0 has undefined behavior
-Wobjc-literal-missing-atsign string literal must be prefixed by '@'
-Wobjc-method-access class method %objcclass0 not found (return type defaults to 'id')
-Wobjc-method-access instance method %objcinstance0 not found (return type defaults to 'id')
-Wobjc-method-access instance method %0 is being used on 'Class' which is not in the root class
-Wobjc-method-access instance method %0 found instead of class method %1
-Wobjc-method-access class method %objcclass0 not found (return type defaults to 'id') did you mean %objcclass2?
-Wobjc-method-access instance method %objcinstance0 not found (return type defaults to 'id') did you mean %objcinstance2?
-Wobjc-missing-property-synthesis "auto property synthesis is synthesizing property not explicitly synthesized
-Wobjc-missing-super-calls method possibly missing a [super %0] call
-Wobjc-noncopy-retain-block-property "retain'ed block property does not copy the block " "- use copy attribute instead
-Wobjc-nonunified-exceptions can not catch an exception thrown with @throw in C++ in the non-unified exception model
-Wobjc-property-implementation property %0 requires method %1 to be defined - use @synthesize, @dynamic or provide a method implementation in this class implementation
-Wobjc-property-implementation property %0 requires method %1 to be defined - use @dynamic or provide a method implementation in this category
-Wobjc-property-implicit-mismatch "primary property declaration is implicitly strong while redeclaration in class extension is weak
-Wobjc-property-matches-cocoa-ownership-rule property's synthesized getter follows Cocoa naming convention for returning 'owned' objects
-Wobjc-property-no-attribute no 'assign', 'retain', or 'copy' attribute is specified - 'assign' is assumed
-Wobjc-property-no-attribute default property attribute 'assign' not appropriate for non-GC object
-Wobjc-property-synthesis "auto property synthesis will not synthesize property '%0' because it cannot share an ivar with another synthesized property
-Wobjc-property-synthesis auto property synthesis will not synthesize property '%0' because it is 'readwrite' but it will be synthesized 'readonly' via another property
-Wobjc-protocol-method-implementation category is implementing a method which will also be implemented by its primary class
-Wobjc-protocol-property-synthesis auto property synthesis will not synthesize property declared in a protocol
-Wobjc-redundant-literal-use using %0 with a literal is redundant
-Wobjc-root-class class %0 defined without specifying a base class
-Wobjc-string-compare direct comparison of a string literal has undefined behavior
-Wobjc-string-concatenation concatenated NSString literal for an NSArray expression - possibly missing a comma
-Wover-aligned type %0 requires %1 bytes of alignment and the default allocator only guarantees %2 bytes
-Woverloaded-shift-op-parentheses overloaded operator %select{'\'}0 has lower precedence than comparison operator
-Woverloaded-virtual %q0 hides overloaded virtual %select{function functions}1
-Woverriding-method-mismatch conflicting distributed object modifiers on parameter type in declaration of %0
-Woverriding-method-mismatch conflicting parameter types in declaration of %0: %1 vs %2
-Woverriding-method-mismatch conflicting variadic declaration of method and its implementation
-Woverriding-method-mismatch conflicting return type in declaration of %0: %1 vs %2
-Woverriding-method-mismatch conflicting distributed object modifiers on return type in declaration of %0
-Woverriding-method-mismatch conflicting return type in declaration of %0%diff{: $ vs $}1,2
-Woverriding-method-mismatch conflicting parameter types in declaration of %0%diff{: $ vs $}1,2
-Wpacked packed attribute is unnecessary for %0
-Wpadded padding size of %0 with %1 %select{bytebit}2%select{s}3 to alignment boundary
-Wpadded padding %select{struct interface class}0 %1 with %2 %select{byte bit}3%select{s}4 to align %5
-Wpadded padding %select{struct interface class}0 %1 with %2 %select{byte bit}3%select{s}4 to align anonymous bit-field
-Wparentheses %0 has lower precedence than %1 %1 will be evaluated first
-Wparentheses using the result of an assignment as a condition without parentheses
-Wparentheses operator '?:' has lower precedence than '%0' '%0' will be evaluated first
-Wparentheses-equality equality comparison with extraneous parentheses
-Wpointer-arith subtraction of pointers to type %0 of zero size has undefined behavior
-Wpredefined-identifier-outside-function predefined identifier is only valid inside function
-Wprivate-extern use of private_extern on a declaration may not produce external symbol private to the linkage unit and is deprecated
-Wprotocol method %0 in protocol not implemented
-Wprotocol-property-synthesis-ambiguity property of type %0 was selected for synthesis
-Wreadonly-iboutlet-property readonly IBOutlet property '%0' when auto-synthesized may not work correctly with 'nib' loader
-Wreadonly-setter-attrs property attributes '%0' and '%1' are mutually exclusive
-Wreceiver-expr receiver type %0 is not 'id' or interface pointer, consider casting it to 'id'
-Wreceiver-forward-class receiver type %0 for instance message is a forward declaration
-Wreceiver-is-weak "weak %select{receiver property implicit property}0 may be unpredictably set to nil
-Wreinterpret-base-class 'reinterpret_cast' %select{from to}3 class %0 %select{to from}3 its %select{virtual base base at non-zero offset}2 %1 behaves differently from 'static_cast'
-Wreorder %select{field base class}0 %1 will be initialized after %select{field base}2 %3
-Wrequires-super-attribute %0 attribute cannot be applied to %select{methods in protocols dealloc}1
-Wreturn-stack-address returning address of label, which is local
-Wreturn-stack-address returning reference to local temporary object
-Wreturn-stack-address address of stack memory associated with local variable %0 returned
-Wreturn-stack-address returning address of local temporary object
-Wreturn-stack-address reference to stack memory associated with local variable %0 returned
-Wreturn-type non-void %select{function method}1 %0 should return a value, DefaultError
-Wreturn-type control may reach end of non-void function
-Wreturn-type control reaches end of non-void function
-Wreturn-type-c-linkage %0 has C-linkage specified, but returns user-defined type %1 which is incompatible with C
-Wreturn-type-c-linkage %0 has C-linkage specified, but returns incomplete type %1 which could be incompatible with C
-Wsection section does not match previous declaration
-Wselector creating selector for nonexistent method %0
-Wselector-type-mismatch multiple selectors named %0 found
-Wself-assign explicitly assigning a variable of type %0 to itself
-Wself-assign-field assigning %select{field instance variable}0 to itself
-Wsentinel not enough variable arguments in %0 declaration to fit a sentinel
-Wsentinel "missing sentinel in %select{function call method dispatch block call}0
-Wshadow declaration shadows a %select{" "local variable" "variable in %2" "static data member of %2 " "field of %2}1
-Wshadow-ivar local declaration of %0 hides instance variable
-Wshift-count-negative shift count is negative
-Wshift-count-overflow shift count = width of type
-Wshift-op-parentheses operator '%0' has lower precedence than '%1' '%1' will be evaluated first
-Wshift-overflow signed shift result (%0) requires %1 bits to represent, but %2 only has %3 bits
-Wshift-sign-overflow signed shift result (%0) sets the sign bit of the shift expression's type (%1) and becomes negative
-Wshorten-64-to-32 implicit conversion loses integer precision: %0 to %1
-Wsign-compare comparison of integers of different signs: %0 and %1
-Wsign-conversion implicit conversion changes signedness: %0 to %1
-Wsign-conversion operand of ? changes signedness: %0 to %1
-Wsizeof-array-argument sizeof on array function parameter will return size of %0 instead of %1
-Wsizeof-array-decay sizeof on pointer operation will return size of %0 instead of %1
-Wsizeof-pointer-memaccess '%0' call operates on objects of type %1 while the size is based on a " "different type %2
-Wsizeof-pointer-memaccess argument to 'sizeof' in %0 call is the same pointer type %1 as the %select{destination source}2 expected %3 or an explicit length
-Wsometimes-uninitialized variable %0 is %select{used captured}1 uninitialized whenever %select{'%3' condition is %select{true false}4 '%3' loop %select{is entered exits because its condition is false}4 '%3' loop %select{condition is true exits because its condition is false}4 switch %3 is taken its declaration is reached %3 is called}2
-Wstatic-local-in-inline non-constant static local variable in inline function may be different in different files
-Wstatic-self-init static variable %0 is suspiciously used within its own initialization
-Wstrict-selector-match multiple methods named %0 found
-Wstring-compare result of comparison against %select{a string literal@encode}0 is unspecified (use strncmp instead)
-Wstring-conversion implicit conversion turns string literal into bool: %0 to %1
-Wstring-plus-char adding %0 to a string pointer does not append to the string
-Wstring-plus-int adding %0 to a string does not append to the string
-Wstrlcpy-strlcat-size size argument in %0 call appears to be size of the source expected the size of the destination
-Wstrncat-size the value of the size argument to 'strncat' is wrong
-Wstrncat-size the value of the size argument in 'strncat' is too large, might lead to a " "buffer overflow
-Wstrncat-size size argument in 'strncat' call appears " "to be size of the source
-Wsuper-class-method-mismatch method parameter type %diff{$ does not match super class method parameter type $does not match super class method parameter type}0,1
-Wswitch enumeration value %0 not handled in switch
-Wswitch overflow converting case value to switch condition type (%0 to %1)
-Wswitch enumeration values %0 and %1 not handled in switch
-Wswitch case value not in enumerated type %0
-Wswitch enumeration values %0, %1, and %2 not handled in switch
-Wswitch %0 enumeration values not handled in switch: %1, %2, %3...
-Wswitch-enum enumeration value %0 not explicitly handled in switch
-Wswitch-enum %0 enumeration values not explicitly handled in switch: %1, %2, %3...
-Wswitch-enum enumeration values %0 and %1 not explicitly handled in switch
-Wswitch-enum enumeration values %0, %1, and %2 not explicitly handled in switch
-Wtautological-compare %select{self-array }0comparison always evaluates to %select{false true a constant}1
-Wtautological-compare comparison of unsigned%select{ enum}2 expression %0 is always %1
-Wtautological-compare comparison of %0 unsigned%select{ enum}2 expression is always %1
-Wtautological-constant-out-of-range-compare comparison of constant %0 with expression of type %1 is always %select{false true}2
-Wthread-safety-analysis expecting mutex '%0' to be locked at the end of function
-Wthread-safety-analysis %select{reading writing}1 the value pointed to by '%0' requires locking %select{any mutex any mutex exclusively}1
-Wthread-safety-analysis unlocking '%0' that was not locked
-Wthread-safety-analysis mutex '%0' is locked exclusively and shared in the same scope
-Wthread-safety-analysis expecting mutex '%0' to be locked at start of each loop
-Wthread-safety-analysis %select{reading writing}2 variable '%0' requires locking %select{'%1'\'%1' exclusively}2
-Wthread-safety-analysis %select{reading writing}2 the value pointed to by '%0' requires locking %select{'%1'\'%1' exclusively}2
-Wthread-safety-analysis calling function '%0' requires %select{shared exclusive}2 lock on '%1'
-Wthread-safety-analysis locking '%0' that is already locked
-Wthread-safety-analysis cannot resolve lock expression
-Wthread-safety-analysis cannot call function '%0' while mutex '%1' is locked
-Wthread-safety-analysis mutex '%0' is still locked at the end of function
-Wthread-safety-analysis mutex '%0' is not locked on every path through here
-Wthread-safety-analysis %select{reading writing}1 variable '%0' requires locking %select{any mutex any mutex exclusively}1
-Wthread-safety-attributes %0 attribute only applies to %select{fields and global variables functions and methods classes and structs}1
-Wthread-safety-attributes '%0' only applies to pointer types type here is %1
-Wthread-safety-attributes %0 attribute can only be applied in a context annotated with 'lockable' attribute
-Wthread-safety-attributes ignoring %0 attribute because its argument is invalid
-Wthread-safety-attributes %0 attribute requires arguments whose type is annotated with 'lockable' attribute type here is '%1'
-Wthread-safety-attributes %0 attribute requires arguments that are class type or point to class type type here is '%1'
-Wthread-safety-beta Thread safety beta warning.
-Wthread-safety-precise calling function '%0' requires %select{shared exclusive}2 lock on '%1'
-Wthread-safety-precise %select{reading writing}2 the value pointed to by '%0' requires locking %select{'%1'\'%1' exclusively}2
-Wthread-safety-precise %select{reading writing}2 variable '%0' requires locking %select{'%1' \'%1' exclusively}2
-Wtype-safety argument type %0 doesn't match specified '%1' type tag %select{that requires %3 }2
-Wtype-safety specified %0 type tag requires a null pointer
-Wtype-safety this type tag was not designed to be used with this function
-Wundeclared-selector undeclared selector %0 did you mean %1?
-Wundeclared-selector undeclared selector %0
-Wundefined-inline inline function %q0 is not defined
-Wundefined-internal %select{function variable}0 %q1 has internal linkage but is not defined
-Wundefined-reinterpret-cast reinterpret_cast from %0 to %1 has undefined behavior
-Wundefined-reinterpret-cast dereference of type %1 that was reinterpret_cast from type %0 has undefined behavior
-Wuninitialized reference %0 is not yet bound to a value when used within its own initialization
-Wuninitialized block pointer variable %0 is uninitialized when captured by block
-Wuninitialized field %0 is uninitialized when used here
-Wuninitialized reference %0 is not yet bound to a value when used here
-Wuninitialized variable %0 is uninitialized when %select{used here captured by block}1
-Wuninitialized variable %0 is uninitialized when used within its own initialization
-Wunneeded-internal-declaration 'static' function %0 declared in header file should be declared 'static inline'
-Wunneeded-internal-declaration %select{function variable}0 %1 is not needed and will not be emitted
-Wunneeded-member-function member function %0 is not needed and will not be emitted
-Wunreachable-code will never be executed
-Wunsequenced multiple unsequenced modifications to %0
-Wunsequenced unsequenced modification and access to %0
-Wunsupported-friend dependent nested name specifier '%0' for friend class declaration is not supported turning off access control for %1
-Wunsupported-friend dependent nested name specifier '%0' for friend template declaration is not supported ignoring this friend declaration
-Wunsupported-visibility target does not support 'protected' visibility using 'default'
-Wunused-comparison %select{equality inequality}0 comparison result unused
-Wunused-const-variable unused variable %0
-Wunused-exception-parameter unused exception parameter %0
-Wunused-function unused function %0
-Wunused-label unused label %0
-Wunused-member-function unused member function %0
-Wunused-parameter unused parameter %0
-Wunused-private-field private field %0 is not used
-Wunused-property-ivar ivar %0 which backs the property is not referenced in this property's accessor
-Wunused-result ignoring return value of function declared with warn_unused_result attribute
-Wunused-value expression result unused should this cast be to 'void'?
-Wunused-value expression result unused
-Wunused-value ignoring return value of function declared with %0 attribute
-Wunused-variable unused variable %0
-Wunused-volatile-lvalue expression result unused assign into a variable to force a volatile load
-Wused-but-marked-unused %0 was marked unused but was used
-Wuser-defined-literals user-defined literal suffixes not starting with '_' are reserved%select{ no literal will invoke this operator}0
-Wvarargs second argument to 'va_arg' is of promotable type %0 this va_arg has undefined behavior because arguments will be promoted to %1
-Wvarargs 'va_start' has undefined behavior with reference types
-Wvarargs second parameter of 'va_start' not last named argument
-Wvector-conversion incompatible vector types %select{%diff{assigning to $ from $ assigning to different types}0,1 %diff{passing $ to parameter of type $ passing to parameter of different type}0,1%diff{returning $ from a function with result type $ returning from function with different return type}0,1 %diff{converting $ to type $ converting between types}0,1 %diff{initializing $ with an expression of type $ initializing with expression of different type}0,1 %diff{sending $ to parameter of type $ sending to parameter of different type}0,1 %diff{casting $ to type $ casting between types}0,1}2
-Wvexing-parse empty parentheses interpreted as a function declaration
-Wvexing-parse parentheses were disambiguated as a function declaration
-Wvisibility declaration of %0 will not be visible outside of this function
-Wvisibility redefinition of %0 will not be visible outside of this function
-Wvla variable length array used
-Wvla-extension variable length arrays are a C99 feature
-Wweak-template-vtables explicit template instantiation %0 will emit a vtable in every translation unit
-Wweak-vtables %0 has no out-of-line virtual method definitions; its vtable will be emitted in every translation unit

2. Parser Warnings(解析器警告)

Warning Message
-Warc-bridge-casts-disallowed-in-nonarc '%0' casts have no effect when not using ARC
-Wattributes unknown __declspec attribute %0 ignored
-Wavailability 'unavailable' availability overrides all other availability information
-Wc++11-compat use of right-shift operator ('') in template argument will require parentheses in C++11
-Wc++11-compat 'auto' storage class specifier is redundant and incompatible with C++11
-Wc++98-c++11-compat 'decltype(auto)' type specifier is incompatible with C++ standards before C++1y
-Wc++98-compat range-based for loop is incompatible with C++98
-Wc++98-compat alias declarations are incompatible with C++98
-Wc++98-compat in-class initialization of non-static data members is incompatible with C++98
-Wc++98-compat defaulted function definitions are incompatible with C++98
-Wc++98-compat rvalue references are incompatible with C++98
-Wc++98-compat reference qualifiers on functions are incompatible with C++98
-Wc++98-compat inline namespaces are incompatible with C++98
-Wc++98-compat generalized initializer lists are incompatible with C++98
-Wc++98-compat trailing return types are incompatible with C++98
-Wc++98-compat enumeration types with a fixed underlying type are incompatible with C++98
-Wc++98-compat alignof expressions are incompatible with C++98
-Wc++98-compat '%0' keyword is incompatible with C++98
-Wc++98-compat 'decltype' type specifier is incompatible with C++98
-Wc++98-compat deleted function definitions are incompatible with C++98
-Wc++98-compat consecutive right angle brackets are incompatible with C++98 (use '> >')
-Wc++98-compat static_assert declarations are incompatible with C++98
-Wc++98-compat scoped enumerations are incompatible with C++98
-Wc++98-compat lambda expressions are incompatible with C++98
-Wc++98-compat attributes are incompatible with C++98
-Wc++98-compat 'alignas' is incompatible with C++98
-Wc++98-compat noexcept specifications are incompatible with C++98
-Wc++98-compat literal operators are incompatible with C++98
-Wc++98-compat noexcept expressions are incompatible with C++98
-Wc++98-compat 'nullptr' is incompatible with C++98
-Wc++98-compat-pedantic extra '' outside of a function is incompatible with C++98
-Wc++98-compat-pedantic extern templates are incompatible with C++98
-Wc++98-compat-pedantic commas at the end of enumerator lists are incompatible with C++98
-Wdangling-else add explicit braces to avoid dangling else
-Wdeprecated Use of 'long' with '__vector' is deprecated
-Wdeprecated-declarations use of C-style parameters in Objective-C method declarations is deprecated
-Wdeprecated-register 'register' storage class specifier is deprecated
-Wduplicate-decl-specifier duplicate '%0' declaration specifier
-Wextra-semi extra ';' after member function definition
-Wextra-tokens "extra tokens at the end of '#pragma omp %0' are ignored
-Wgcc-compat GCC does not allow %0 attribute in this position on a function definition
-Wignored-attributes attribute %0 ignored, because it is not attached to a declaration
-Wmicrosoft-exists dependent %select{if_not_exists if_exists}0 declarations are ignored
-Wmissing-selector-name %0 used as the name of the previous parameter rather than as part of the selector
-Wsemicolon-before-method-body semicolon before method body is ignored
-Wsource-uses-openmp "unexpected '#pragma omp ...' in program
-Wstatic-inline-explicit-instantiation ignoring '%select{static inline}0' keyword on expli


文/i_蓝天(简书作者)
原文链接:http://www.jianshu.com/p/01659b6d9dc0

你可能感兴趣的:(iOS)