警告達

incomplete implementation

.hで宣言したメソッドが.mにないと出てくる。
Storyboardから始めるiPhoneアプリ開発 Incomplete implementation

expression result unused

返り値使ってない行に出てくる。

戻り値を使っていない行に対して "Expression result unused" という警告が表示される。
(例)[[NSObject alloc]init];
(回避策) 行頭に (void) を付ける

(void) [[NSObject alloc]init];
objective-c - memo

ただ、この使い方で間違いない場合、コンパイル時に警告が表示されるのは間際しいので、この時に限って "Expression result unused" を表示させないようにしてみます。

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wunused-value"
 
[[_EzFlashStatusBarWhenMemoryWarning alloc] init];
 
#pragma clang diagnostic pop
EZ-NET: Expression result unused 警告を表示しないようにする

Capturing 'xxx' strongly in this block is likely to lead to a retain cycle

block構文でselfやインスタンス変数を参照すると出てくる。

@implementation Hoge
-(void)hogeMethod{
  hogeHandler = ^(Fuga *fuga){
    [self someMethod:fuga];
  };
}
@end

これ,selfがずっと存在するからhogeHandlerの参照が減らないのね.だから__blockつけてやると,Reference Count使わない指定ができるそうな.


訂正版

@implementation Hoge
-(void)hogeMethod{
  // ここでselfを別にコピー(こいつはブロック専用だから参照カウントを減らせてGCできる)
  __block Hoge *blockself = self;
  hogeHandler = ^(Fuga *fuga){
    [blockself someMethod:fuga];
  };
}
@end
= ARC retain cycle - ぺっくブログミラー@peccul

Local Declaration of "xxx" Hides Instance Variable

ローカル変数とインスタンス変数の名前が被ってると出てくる。
Objective-Cと戦うブログ: 「Local Declaration of "xxx" Hides Instance Variable」というエラーについて