タグ

Objective-Cに関するkwryのブックマーク (29)

  • Setting Property is Case Insensitive

    lower case で始まる名前の property に値を代入するところで、 property name を upper case にしていた。 あーはいはいタイポタイポ、と思いながら、あれ? でもこれコンパイル通ってたじゃないの。それは奇妙だ。 ちゃんと動いているのか% clang --version Apple clang version 4.1 (tags/Apple/clang-421.11.66) (based on LLVM 3.1svn) Target: x86_64-apple-darwin12.2.0 Thread model: posix ふつうの clang さん。 % clang -Wall -pedantic -Wextra -c case.m a.m:28:8: warning: unused variable 'a' [-Wunused-variable]

    Setting Property is Case Insensitive
  • Objective-Cで少しでも疎結合なプログラムを書くためのチェックポイント | TOKOROM BLOG

    チェック1. なんでもかんでもヘッダーファイルでimportしていませんか? 例えば、こんなコードを書いていませんか? #import "OtherLibrary1.h" #import "OtherLibrary2.h" @interface Library @property (strong) OtherLibrary1* otherLibrary1; @property (strong) OtherLibrary2* otherLibrary2; @property (assign) BOOL flag; @end Libraryというクラスを作り、そこでOtherLibrary1とOtherLibrary2をpublicなpropertyとする場合、当然のごとくOtherLibrary1とOtherLibrary2のimportが必要なわけですが、なにも考えずにヘッダーファイルでO

  • iPhone版LINEのデータ構造 : Core data in LINE « NAVER Engineers' Blog

    こんにちは。検索サービス開発4チームでメッセージアプリのLINEiPhoneアプリ開発を 担当している金泰敬(キム テギョン)です。 今回説明させて頂きたい主題はLINEのモデル側を支えているCore Dataです。 Core Dataは、MacOS XのベースFrameworkであるCocoaのMVC構造のうち、 Model側を担当しているFrameworkです。 Core Dataを利用するとデータモデルの設計、オブジェクトのデータの読み取り、書き込み、管理などを簡単に行うことができます。 現在、LINEではCore Dataを利用してメッセージ、トーク、グループ、ユーザーなどを管理しています。 例えば、相手のメッセージが到着するとまずコアのデータからSqliteDBに格納します。 そして保存されたメッセージに関連しているトークでも更新が行われます。 もしそのメッセージが

  • 便利なマクロ・カテゴリ・ライブラリまとめ - Qiita

    お断り 情報が古いです。更新の予定はありません 未だにストックされる方がいらっしゃいますが、古い情報です。ご自身で最新情報を確認してください。 一部はPopperToolsとしてライブラリを公開しています 以下古い内容 iOSアプリの開発にはjavascript/HTML5/CSSRubyなど様々な言語が利用可能ですが、漢ならやっぱりObjective-Cネイティブでしょ! Objective-CはCの完全上位互換なので、Cで使える技の数々はもちろん利用可能です。 加えて動的にメソッドを追加できるカテゴリや、プロトコルorデリゲートなど便利な機能がたくさんあるので、ガンガン使って行きましょう! 以下私が普段使っているマクロ・カテゴリ・ライブラリをまとめます。 一部過去の投稿を焼き直したものですがどうかご容赦を>< /* デバッグログ用マクロ。 NSLog()の使いすぎは明らかなパフォーマ

    便利なマクロ・カテゴリ・ライブラリまとめ - Qiita
  • iOS下位互換のための動的メソッド追加 - mixi engineer blog

    どうも、佐野です。先日のWWDCでは大々的にiOS6が発表され、AppleのDev Centerからβ版のSDKもダウンロードできるようになっており、開発者の皆さんは新機能の利用に胸を踊らせていることかと思います。mixiのiPhoneアプリはiOS4ユーザも多いため旧環境もサポートしなければならず、一方で新環境のユーザには新機能を提供したいですしコードも UP TO DATE に保っておきたいものです。そこで今回はできるだけ新環境向けのコードに下位互換性を持たせられるように、クラスに対して動的にメソッドを追加する方法をご紹介します。 Objective-Cのメソッドコールは、Cのようにコンパイル時にリンクされるのではなく、アプリケーションの実行時にメソッドが検索されて実行されます。実はObjective-Cのメソッドは単なるC言語の関数ポインタであり、それを呼び出すためのセレクタも単なる

    iOS下位互換のための動的メソッド追加 - mixi engineer blog
  • UIView拡張カテゴリによるUIコーディングの簡略化 - mixi engineer blog

    はじめまして、佐野です。僕は2006年10月にメンバー4人でネイキッドテクノロジー社を創業し、5年間ガラケーからスマホに渡るまでモバイル関連の技術・サービス開発に携わり、去年の10月にミクシィ社にジョインし、現在はmixiのiPhoneアプリの開発に携わっております。このブログではiOSプログラミングの初級者~中級者向けに、さらなる上達の助けになるようなことを書いていきたいと思います。 Apple 製の iOS/Mac アプリの統合開発環境であるXCodeは、ver4 から GUI ベースの UI 開発ツールである Interface Builder が組み込まれ、非常に快適にUI開発ができるようになりました。mixi の iPhone/iPad アプリも基的には各画面が IB ファイルで構成されています。静的な画面であればこれだけで済むのですが、アニメーションを多用したインタラクティブ

    UIView拡張カテゴリによるUIコーディングの簡略化 - mixi engineer blog
  • プロパティに対応するインスタンス変数の命名規則について - Awaresoft

    最近になって変わったObjective-Cのインスタンス変数の命名規則について。 プロパティに対応するインスタンス変数の変数名をプロパティ名と別にすべきか、また、インスタンス変数名をアンダースコア(_)で始めるべきかどうか、さまざまな場所で議論になっているのを見てきて、自分も長い間悩んだ結果、結論が出たのでその経過をまとめておきます。 背景をとばして結論だけ見たい人はこちらへ。 iTunes Uのスタンフォード大学の"CS193p: iPad and iPhone Application Development"の講義は、iPhoneアプリをこれから作ろうという人にはもちろん、既に作っている中級者の方にとっても、見る価値があると思います。 特に、Paul Hegartyによる2011年秋の講義はiOS5に完全に対応していて、説明も非常に分かりやすく、必見です。何と言っても、こんな白髪白髭の

  • こたつつきみかん » Objective-Cのメモリ管理

    Objective-C のメモリ管理の話をします。Objective-C ではどのようなルールに基づいてコーディングすればよいかを説明します。 alloc, copy, new を送信したオブジェクトは、それによって生成されたオブジェクトを所有します。また、retain を送信したオブジェクトは、その受信側のオブジェクトを所有します。 所有しているオブジェクトが不要になったら、そのオブジェクトに release メッセージを送信して、所有を放棄しなければなりません。 所有してないオブジェクトに release メッセージを送信して、そのオブジェクトを放棄しようとしてはいけません。 補足して、次のようなことも頭に入れておきましょう。 誰もオブジェクトを所有しなくなったとき、そのオブジェクトには dealloc メッセージが送信され、そのあとメモリから解放されます。 あるオブジェクトを複数のオ

  • NSDictionaryを使う時に気になったこと:定数定義とクラスキャスト - webとかmacとかやってみようか

    iOSフレームワークには、NSDictionary といういわゆるハッシュマップのようなキー/バリューストアとして使えるものがある。これを使っていて気になったことをメモ。 予め決まったキーを使う場合、普通それを定数としておきたいと思う。定数を定義するのには define ではなく const を使う、というのは以前の通り。しかし、以下のような書き方では警告がでる。 const NSString *key = @"someone"; ・・・ id *value = [dictionary valueForKey:key] (ここで警告:warning: passing argument 1 of 'valueForKey:' discards qualifiers from pointer target type) これは、const を書く順番に問題がある。 const NSString

    NSDictionaryを使う時に気になったこと:定数定義とクラスキャスト - webとかmacとかやってみようか
  • 特定のUITableViewCellだけ再描画 - nkmrshn’s diary

    方位を取得(startUpdatingHeading)し、didUpdateHeadingが呼ばれたら、UITableViewCellのdetailTextLabel.textを書き換えようと思い、次のように書きました。 - (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading { NSString *heading = [NSString stringWithFormat:@"%.0f", newHeading.trueHeading]; UITableView *tableView = (UITableView *)self.view; UITableViewCell *headingCell = [tableView cellForRowAtIndexPa

    特定のUITableViewCellだけ再描画 - nkmrshn’s diary
  • GitHub - johnezang/JSONKit: Objective-C JSON

    JSONKit uses Core Foundation internally, and it is assumed that Core Foundation ≡ Foundation for every equivalent base type, i.e. CFString ≡ NSString. The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119. JSON To Objective-C Primitive Mapping Details The JSON

    GitHub - johnezang/JSONKit: Objective-C JSON
  • NSArray のサブクラスでコードをシンプルに

    Cocoa / Objective-C プログラミングをしていると、NSArray や NSSet、NSDictionary あたりはよくお世話になりますよね。これらオブジェクトの集合を扱うクラスは一般に「コレクション」と呼ばれています。Cocoa / Objective-C に限らず、コレクションをうまく扱うとコーディングのスピードもプログラムの実行スピードも大きく改善できます。 今回は、既存のコレクションクラスを使うのではなく、独自のコレクションクラスを作る方法とそのメリットを、NSArray のサブクラスを例として紹介します。 NSArray のサブクラス Objective-C はカテゴリによって既存のクラスに機能を追加できるので、サブクラスを作る場面は限られています。カテゴリがあるにも関わらず、サブクラスを作る理由。それはまさに「独自のコレクションクラス」を作るためです。どこにど

    NSArray のサブクラスでコードをシンプルに
  • 林檎な日々

    林檎な日々

  • inessential: On switching away from Core Data

    A lot of the work I’ve been doing the last several months is optimizing performance for NetNewsWire for iPhone. The changes haven’t shipped yet, because I’m not quite finished. But one part of this might be interesting to other developers, so I figured I’d write it up. I optimized as much as I could, spent tons of time in Shark, went all multi-threaded with Core Data, switched away from my own que

  • GitHub - ccgus/fmdb: A Cocoa / Objective-C wrapper around SQLite

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - ccgus/fmdb: A Cocoa / Objective-C wrapper around SQLite
  • Cocoaの日々: [Mac][iOS] Frameworkとは?

    iOS/iPhone/iPad/MacOSX プログラミング, Objective-C, Cocoaなど Mac OS X / iOS における Frameworkの作成や利用方法について調べてみた。Framework に関しては Mac OS X 向けに下記のリファレンスが用意されている。 Framework Programming Guide: Introduction to Framework Programming Guide この内容を読みつつ調べたことを加味して Frameworkについてまとめた。 なお iOS においては Framework の仕組みはシステムでサポートされているものの、ユーザが独自の Framework を作成することは推奨されていない(ドキュメントが存在しない)。また iOSでは開発時にユーザが独自の Frameworkを作成できるものの実機への配置はで

    Cocoaの日々: [Mac][iOS] Frameworkとは?
  • Objective-Cの @property と @synthesize の組み合わせが何をやっているのかを解説 - 強火で進め

    改めて説明するまでも無いかと思ってたけど意外と知らない人は知らないみたいので解説を書いておきます。 @property と @synthesize の組み合わせは端的に言うと「setterとgetter(アクセッサメソッド)をコンパイルの前に生成させる」以上。 ※Objective-Cの場合、 @ で始まるものはプログラムでは無く、コンパイラへの指示となります。この様な指示をObjective-Cではコンパイラディレクティブ(Compiler directive)と呼びます。 詳細説明 setterやgetterはメンバ変数を直接扱わずにメソッド経由で代入やデータの取得をする為に定義するメソッドです。setterがデータを代入する時のメソッド、getterがデータを取得する時のメソッドとなります。 メンバ変数をメソッド経由にすることにより代入前にチェックを行って有効な値のときのみメンバ変数

  • ニコニコ動画っぽくテキストをデスクトップに流すCocoaアプリを作ってみた - すぎゃーんメモ

    YAPC::Asia 2010 で、JesseがプレゼンにTwitterのタイムラインをニコ動っぽく流していて、同じようなことやってみたいなーと思ったものの、JS使ってやってるとそのブラウザ上でしかできないし、どうせならMacCocoaアプリとしてどのアプリが起動していても関係なく最前面にテキストながせるようになったらいいんじゃね?と思って作ってみた。 http://github.com/sugyan/NicoNicoDesktop 25250番ポートでTCP接続を待ち受け、クライアントから受け取った文字列をそのまま透明Window上でNSTextで表示させ、それを右から左へアニメーションさせる、というだけのもの。 クライアント次第で何でも流せるようにしたので、例えば以下のようなスクリプトを動かしておくと、自分のhome timelineの発言が次々流れてくる。 #!/usr/bin/p

    ニコニコ動画っぽくテキストをデスクトップに流すCocoaアプリを作ってみた - すぎゃーんメモ
  • (iOS 4) バックグラウンド動作するラジオアプリを作ってみる - Radium Software

    プログラム関係の仕事をするときはたいてい、ネットラジオを使って部屋の中にBGMを流している。最近のお気に入りはSomaFMのチルアウト/アンビエント系専門チャンネル"Groove Salad"だ。いい感じで生活の邪魔にならない音楽を絶え間なく提供してくれる。 つい先日ようやくiPhone 4を導入したので、できればバックグランドで動作するネットラジオアプリを入れてGroove Saladを垂れ流しにしたい。ただ、「バックグラウンドで動作するネットラジオアプリ」で無料かつ使いやすいものというのは、なかなか存在しないようだ。 まあ、無いなら自分で作ってしまおう。 ストリーミング再生 iOS 4を使ってネットラジオ的なものを作るのは難しくない。AV Foundation FrameworkのAVPlayerクラスを使えば簡単に実現できる。例えばGroove Saladを再生するのだったら、以下の

    (iOS 4) バックグラウンド動作するラジオアプリを作ってみる - Radium Software
  • iPhone アプリ開発で使える Framework の作り方

    もりやまです。前回は iPhone / iPad アプリ開発で使える Objective-C のライブラリをいくつか使ってみました。 今回は、自分で作ったライブラリを Framework として使う方法をご紹介します。 ライブラリ用にプロジェクトを準備する 新規プロジェクトで、iPhone OS の Library から「Cocoa Touch Static Library」を選択します。 プロジェクトを作ると以下のような状態で生成されます。ここでは「KrayKit」という名前で作りました。 まずは不要なファイルの削除と、ファイルシステム上のプロジェクトのディレクトリ構成を整備します。 Classes を削除 Include, Resources, Sources を作成 次に、Xcode 上でプロジェクトの構成を整備します。 Classes を削除 Foundation.framewor

    iPhone アプリ開発で使える Framework の作り方