タグ

ブックマーク / quesera2.hatenablog.jp (3)

  • NSIntegerとかCGFloatとか - なるようになるかも

    NSInteger/ NSUInteger NSIntegerやNSUIntegerは32bit/64bit環境では異なる型として扱われる。NSIntegerの場合、32bit環境ではint、64bit環境ではlongとして扱われる。 なおarm64の処理系ではint型そのものは32bitの値として扱われる。それまでのarm7まではintもlongも同じ32bitの値として扱われていたので差がなかったのが(意外に知らない人が多い)、arm64にてlongが倍精度に変更された。 そのため、 NSInteger aValue = 100; NSLog(@"%d", aValue); 例えばこんなコードも、64bitアーキテクチャを対象に含めると警告が出てしまう(NSIntegerがlongのため、%ldを使う必要がある)。もっとも、aValueの値が32bitの範囲を超えない限り、実際に問題に

    NSIntegerとかCGFloatとか - なるようになるかも
  • 実行ループとdispatch_sourceの話。 - なるようになるかも

    いまやiOSのネットワーク処理といえばAFNetworkingな感じです。 しかし古いストリーミングAPIを使った経験があれば、ブロックベースのAPIでどうやってネットワーク通信を行っているのか疑問に思うはずです。なぜかというと、 GCDは実行ループを持てない からです。 そもそも実行ループとは何なのでしょう。 実行ループとは NSRunLoop Class Referenceより The NSRunLoop class declares the programmatic interface to objects that manage input sources. An NSRunLoop object processes input for sources such as mouse and keyboard events from the window system, NSPort

    実行ループとdispatch_sourceの話。 - なるようになるかも
  • クラス拡張とカテゴリの違いの話。 - なるようになるかも

    常々「クラス拡張をカテゴリってゆーな」って思ってるんだけど、「無名カテゴリ」自体は公式の呼称なんだよね。 [Objective-C] クラス拡張と無名カテゴリ - Qiita Objective-Cのクラス・カテゴリ・クラス拡張の整理 - $ cat /var/log/shin クラス拡張は、無名のカテゴリに似ています。が、別物です。一番の違いは、インスタンス変数を宣言できることと、宣言したメソッドはクラス体の(=カテゴリ無しの)@implementationで実装しなければならない点です。 クラス拡張とカテゴリの一番の違いは、「クラス拡張はクラス実装と共にランタイムにロードされることが保証される」ことだと思います。 文脈として、もともとobj-c 2.0以前にはクラス拡張がなく、またメソッドのプロトタイプ宣言が必須だったこともあり、「外部に公開したくないメソッド宣言はプライベートなカテ

    クラス拡張とカテゴリの違いの話。 - なるようになるかも
    pochisato
    pochisato 2015/04/05
    カテゴリをもう少し理解してから精読したい
  • 1