タグ

Objective-Cに関するyamashiro0110のブックマーク (311)

  • NullabilityとObjective−C | 人生と仕事を楽しむブログ

    Xcode6.3ではSwiftとObjective-Cの連携を強化するために、Objective-Cの新機能としてnullabilityアノテーションが導入されました。 In previous Xcode releases, some Apple frameworks had been specially audited so that their API would show up with proper Swift optionals. Xcode 6.3 supports this for your own code with a new Objective-C language feature: nullability annotations.Swift blog NullabilityとObjective-C Swiftの特徴の一つとして、Objective-Cのコードと透過的に

    NullabilityとObjective−C | 人生と仕事を楽しむブログ
  • NSNotificationの実践的な使い方 | Cyber Passion for iOS

    Notificationの使い方に関してはググればいくらでも出てくると思いますが、ここでは実戦向けに少しだけ掘り下げて説明出来ればと思います。 アプリケーション独自のNotification関連を定義するファイル アプリケーションのプレフィックス(大文字2文字)+Notificationという名前のファイルにNotification関連の定義をまとめておくと良いでしょう。 今回はSTNotification.hとSTNotification.mというファイルにまとめることにします。 Notification名の定義 SDKや他のライブラリの名前と重複しないようにNotification名をつける必要があります。アプリケーションのプレフィックス+Notification名+Notificationという命名規則にすると良いでしょう。 今回は以下のようなNotificationを定義します。

    NSNotificationの実践的な使い方 | Cyber Passion for iOS
  • [XCODE] Objective-Cでアーカイブとアンアーカイブを行う - YoheiM .NET

    こんにちは、@yoheiMuneです。 今日は、Objective-Cの色々な型(UIViewやNSArrayなど)をアーカイブして、状態をバイナリーデータとして 保存する方法と、そのデータをアンアーカイブして元の形に戻す方法をブログに書きたいと思います。 アーカイブ(シリアライズ)するとは? アーカイブ処理とは、UIViewやNSArrayなどの型で保持するメモリ上の状態を、 バイナリーデータに変換して、データベースやファイルシステムに保存する事を言います。 これを行うことで、現在の変数の状態をそのまま(型によっては一部情報が削除されますが)に、 次のアプリ起動時などに使うことが出来るようになります。 「変数の内容を永続化する」といっても良いのでしょうか。そんな内容がアーカイブ(シリアライズ)です。 またアンアーカイブ(デシリアライズ)は、アーカイブされた変数の内容(バイナリーデータ)を

    [XCODE] Objective-Cでアーカイブとアンアーカイブを行う - YoheiM .NET
  • Objective-CでJavaのstartsWithとendsWithを行うメソッド - スーパーソフトウエア 世界最強のホットテクノロジー - アプリ開発

    JavaのstartsWithには第二引数にオフセットを設定することができますが、 Objective-CはhasPrefixでは設定することができません。 オフセットがわかっている場合は以下のコードで比較することも出来ます。 if([str rangeOfString(@"hoge")].location == offset)

  • Xcode7時代のObjective-C - Qiita

    Swift2の発表で活気付く中、Objective-Cもひっそり進化しています。 iOSアプリは何個か作ってきたけど、急にSwiftに移行するのは……という方! Xcode7で使えるようになったモダンな文法をちょっとだけ採用してみませんか? きっと手元のコードが美しく、保守しやすくなりますよ! 新しく使えるようになった文法 新しく使えるようになった……と、いっても2つだけです(´・ω・`) Generics Nullability Annotation Generics (1)  ArrayやDictionaryに追加するオブジェクトの制限 特定クラスのインスタンスだけをArrayやDictionaryに追加したいケースで有益です。 今までのObjective-Cでは、こんなコードを書いてインスタンスの型チェックを行う必要がありました。 if ([[hoge class] isSubcla

    Xcode7時代のObjective-C - Qiita
  • Obj-C → Swift コンバータをオープンソースで公開しました!

    ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog どうも、ヤフーの佐野( @taketo1024 )です。先日引っ越しをしまして、張り切って自分でタンスを運んだりして今とても筋肉痛です。 皆さんは Objective-C から Swift への移行は進んでいますか?弊社ではまだ Obj-C で書かれているプロジェクトは多くあります。世に出ている iOS アプリも多くはまだ Obj-C で作られているんじゃないかと思います。 Swift もオープンソース化され、この先その進化のスピードはさらに増してくるはずです。そこでチーム内で開発を進めていた Obj-C → Swift コンバータ を大幅に改良しオープンソースで公開することにしました!この記事ではその導入と活用の方法を説明します

    Obj-C → Swift コンバータをオープンソースで公開しました!
  • [iOS] iOSのDelegateをしっかりと理解する | DevelopersIO

    iOS の通知を知る こんにちは、iPhone アプリ開発担当の荒川です。 この記事では iOS アプリでの「通知」について紹介します。 今回扱う「通知」とは、「プッシュ通知(Push Notification)」や「ローカル通知(Local Notification)」のことではなく、特定のインスタンスから別のインスタンスへ処理を委譲することを指します。 「委譲(いじょう)」と言われると何やら難しいことのように思えますが、あるクラスに書かれた何かの処理を他のクラスで処理する事だと思って下さい。 iOS アプリケーションでは以下の通知方法がよく使われます。 Delegate(処理の委譲) Key Value Observe(キー値監視) Notification Center(情報のブロードキャスト) この中の Delegate について、Objective-C での実装方法を交えて紹介し

    [iOS] iOSのDelegateをしっかりと理解する | DevelopersIO
  • (いまさら)Objective-C 型変換まとめ - Qiita

    NSDateFormatter * fmt = [NSDateFormatter new]; fmt.dateFormat = @"yyyy-MM-dd 'at' HH:mm"; NSDate *date = [NSDate date]; NSString *str = [fmt stringFromDate:date];

    (いまさら)Objective-C 型変換まとめ - Qiita
  • NSIntegerのフォーマット指定はlongで - おっさんプログラマの戯れ言

    iPhone, iPadアプリを32bit, 64bit両対応でコーディングするには、intやfloatの代わりに、NSInteger, CGFloatなどを使うことが多い。NSIntegerやCGFloatは、コンパイル時のプラットフォーム指定によって切り替えられる単なるtypedefなので、printf形式の書式指定を使うときには注意が必要だ。 以下は64bitでコンパイルするとWarningになる。 NSInteger i; NSLog(@"%d", i); 以下は32bitでコンパイルするとWarningになる。 NSInteger i; NSLog(@"%ld", i); 公式サイトによると、以下が正しい指定だそうだ。 NSInteger i; NSLog(@"%ld", (long)i); 少々面倒くさい。 【引用元】 https://developer.apple.com/l

    NSIntegerのフォーマット指定はlongで - おっさんプログラマの戯れ言
  • Objective-Cのコードを削れるだけ削る7のTips | TOKOROM BLOG

    既存記事のまとめのため新しい要素があるわけではないのですが、Appleから発表されたXcode 5が正式にリリースされる前の復習ということで。 Tipsを適用する前のコード #pragma mark - Private Category @interface Sample () @property (strong) NSNumber* i; @property (strong) NSNumber* c; @property (strong) NSNumber* f; @property (strong) NSArray* array; @property (strong) NSDictionary* dictionary; @property (strong) Sample* child; @property (strong) UIColor* color; @property (assi

  • なぜNSStringをプロパティにする際にcopyオプションを選択すべきなのか - Qiita

    さて、NSStringをプロパティとして保持すること、たくさんありますよね。Googleのコーディング規約にもcopyにするよう書いてあります。 自分もそうしていたのですが、なぜそうしなければいけないのかというところまで考えないエンジニア失格状態だったのでちゃんと考えてみました。 さて、そもそもcopyメソッドとは何なのか? copyメソッド copyメソッドはNSObjectで定義されているのですが、copyメソッドを呼ぶとcopyWithZone:メソッドが内部的に呼ばれるようになっています。 APIリファレンスを見るとしっかりと書かれています。 Return Value The object returned by the NSCopying protocol method copyWithZone:,. copyWithZone:メソッドはNSCopyingプロトコルのメソッドです

    なぜNSStringをプロパティにする際にcopyオプションを選択すべきなのか - Qiita
  • Objective-Cのメモリ管理おさらいと解放tips|技術ブログ|北海道札幌市・宮城県仙台市のVR・ゲーム・システム開発 インフィニットループ

    Objective-Cのメモリ管理おさらいと解放tips こんにちは。 iOS/Objective-Cによるアプリ開発では参照カウントによるメモリ管理が必要になります。 今回はiOS/Objective-Cでのメモリ管理の基礎からメモリリークの検知まで解説したいと思います。 参照カウント Objective-Cの全てのオブジェクトはNSObjectを継承しています。 全てのオブジェクトはこのNSObjectのメソッドを通じて参照カウントを扱います。 この参照カウントが、オブジェクトがいくつのオブジェクトから強参照されているかを表し、 0になったオブジェクトは誰からも参照されていないため解放される、という仕組みになっています。 C++に詳しい方はshared_ptrをイメージすると良いでしょう。 より詳細な解説はWikipediaなどが参考になります。 Objective-Cの参照カウント

    Objective-Cのメモリ管理おさらいと解放tips|技術ブログ|北海道札幌市・宮城県仙台市のVR・ゲーム・システム開発 インフィニットループ
  • Objective-C ARC下での強参照、弱参照、循環参照について学ぼう - Qiita

    objcにARCが導入されてから久しいですが、開発者がメモリ管理から解放されたかというと、そうでもないです。strongとweakの導入によって、少し抽象化がなされましたが、オブジェクトのallocate/releaseは意識してプログラムする必要があります。この記事は、ARC環境下での強参照/弱参照/循環参照についてイマイチ理解が及ばないという人のための記事であると同時に、私の個人的なまとめでもあります。 循環参照とは? 循環参照という現象は、私も最初はなかなか理解できませんでした。まず、文字的な定義から言うと、循環参照(retain cycle)とは 「オブジェクト同士がお互いに強い参照を持っているからどちらも解放されない」という現象のことです。 iOSにはObjective-C 2.0のランタイムが実装されていますが、ガベージコレクションは存在しません。理由はよく知らないですがシステ

    Objective-C ARC下での強参照、弱参照、循環参照について学ぼう - Qiita
  • ARC のメモリ解放タイミングを調べた - Qiita

    一つの関数内で容量の大きなファイルを読み込み加工する処理を連続して行っていたらメモリが足りなくなった。 ARC ではスコープを外れ(て参照カウンタがゼロになっ)たオブジェクトは、すぐに破棄されると思っていたのでしばらくハマった。 問題のソース(ARC使用) ローカルでもWebでも何でもいいけど、ファイルから無視できない程度の容量のデータの読み込みを繰り返す処理。 - (IBAction)buttonDownWithArc:(id)sender { NSString* path = @".../bigdata.img"; for (int i = 0; i < 10000; i++) { NSData* data = [NSData dataWithContentsOfFile:path]; [NSThread sleepForTimeInterval:0.5]; data = nil; }

    ARC のメモリ解放タイミングを調べた - Qiita
  • Objective-Cのクラス・カテゴリ・クラス拡張の整理 - $ cat /var/log/shin

    以前こんな記事を書きました。 Objective-Cのプロトコルとデリゲートのまとめ - $ cat /var/log/shin 現時点で、こんな場末のブログで唯一ブクマが多い記事なのですが、その文末で、 次は、カテゴリについて勉強したいと思います。 Objective-Cのプロトコルとデリゲートのまとめ - $ cat /var/log/shin なーんて書いてから、はや9ヶ月超。ようやくカテゴリについて調べる機会が来たので、まとめてみます。 座学編 クラスの基 まず初めにクラスの基を整理しておきます。 // ex1.h #import <Foundation/Foundation.h> @interface MyClass1 : NSObject - (void)publicMethod; @end // ex1.m #import "ex1.h" @implementation

    Objective-Cのクラス・カテゴリ・クラス拡張の整理 - $ cat /var/log/shin
  • [Objective-C] クラス拡張と無名カテゴリ - Qiita

    この記事にリンクして、詳細に書いてくれている記事があったので紹介。 クラス拡張とカテゴリの違いの話。 Objective-Cの内部実装にも触れて分かりやすく書いてくれているので、より どういう違いがあるかが分かるかと思います。 AppleのiOS View Controllerプログラミングガイドを読んでいて気づいた。 なんで実装ファイルの方で@interfaceを宣言しているんだろうと思っていたのだけど、これはどうやら クラス拡張 というものらしい。 似たような仕組みに、 カテゴリ がある。 カテゴリは@interface Hoge(anyCategory)で宣言するやつ。 これを無名にしている(つまり@interface Hoge())のが、実装ファイルでよく書かれているやつだ。 なるほど、無名カテゴリだから()なのか。 と腑に落ちたことをTwitterでつぶやいたら、「いや

    [Objective-C] クラス拡張と無名カテゴリ - Qiita
  • クラス拡張とカテゴリの違いの話。 - なるようになるかも

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

    クラス拡張とカテゴリの違いの話。 - なるようになるかも
  • [iOS5] ARC : Outletにはweakプロパティを使おう | Natsu note

    [iOS5] ARC : Outletにはweakプロパティを使おう 2011/11/21/|iOS|メモリ管理, iOS5, ARC 今回は、ARCを用いた場合のプロパティ利用に関するTipsです。 ARCって何?と言う方は、まずはこちらからどうぞ。 [iOS5] ARC (Automatic Reference Counting) : Overview [iOS5] ARC : プロパティ属性と使い方 一般的なOutletにはweakプロパティを使う Interface Builderなどを用いて作成したOutletは、一般的に別のview(例えばUIViewControllerのviewなど)のsubviewであることがほとんどです。したがって、これらのOutletのオーナーとなるのはsuperviewのみで十分だと言えます。 ViewControllerは、自身がOutletのオー

    [iOS5] ARC : Outletにはweakプロパティを使おう | Natsu note
  • Objctive-Cにおけるプロパティ属性まとめ。正直、weakとかって使いどころが分かりづらいですよねー - Nao Minami's Blog

    どうもこんばんは、south37です。今日はObjective-Cネタです。 プロパティ属性って何よ!? さて、皆さん、そもそも プロパティ属性 って分かりますか?Objective-Cでコーディングしてる人ならstongやweakやcopyなどを目にしていると思いますが、それがいわゆる プロパティ属性 です。 [参考: Objective-Cにおけるプロパティの定義] http://www.objectivec-iphone.com/introduction/property/property.html ざっくりと言えば、 @interface SomeClass : NSObject @property (nonatomic, copy) NSString *name; @end という風にクラスのプロパティを宣言する時に、プロパティの性質を宣言する為に指定するものですね。 プロパティ

    Objctive-Cにおけるプロパティ属性まとめ。正直、weakとかって使いどころが分かりづらいですよねー - Nao Minami's Blog
  • Objective-C の atomicity について調べてみる

    Objective-C のプロパティには、属性として atomic や nonatomic というキーワードが指定できるようになっています。 これらを省略した場合は atomic が指定されたのと同じで、この "atomic" という単語を直訳すると "原子性" とか "不可分" とか、そういった意味合いになります。 このキーワードを知った当初には、次のような意味合いがあると認識していたのですけど、どうやらちょっと思っていたのと違うようです。 atomic は、マルチスレッド環境でスレッドセーフを実現する、らしい。 atomic プロパティを @synthesize で実装すると、setter や getter を @synchronized (self) で括ったのと同じになる、らしい。 それならつまり、単一スレッドでの使用を前提としないクラスを作成するときは、プロパティは atomic