ラベル Swift の投稿を表示しています。 すべての投稿を表示
ラベル Swift の投稿を表示しています。 すべての投稿を表示

2023年6月2日金曜日

NSObjectとは

  •  Objective-Cの基本的なルートクラスで、Swiftでも使用される。
  • 他のクラスが継承することで、多くのメソッドやプロパティを利用可能。
    • メモリの管理
    • オブジェクトの等価性の比較
    • クラス情報の取得
    • メソッドの動的な呼び出し
  • ObjectiveーCのプロトコルに準拠しており、相互運用性が向上する。
  • ObjectiveーC特定の機能やAPIを利用する必要がある場合に有効。

AnyObjectとは

  •  Swiftの型システムにおける、プロトコルの一つ。
  • 参照型であるクラスのインスタンスを表すための型。
    • 参照型(class):参照を介して共有
    • 値型(struct, enum):値そのものをコピーして扱う。
  • クラスのインスタンスをAnyObject型の変数やプロパティに代入できる。
  • どのクラスのインスタンスでも受け入れられる。
  • 値型には使用できない。
  • AnyObject型の変数やプロパティには任意のクラスのインスタンスを代入できるが、メソッドの呼び出しなど、クラスのインスタンス特有の操作はできない。

weak 修飾子について

プロパティにweak修飾子をつける理由
  • 循環参照(retain cycle)を避けるため
    • 循環参照とは?
      • メモリリークの一種でオブジェクト間の相互参照によって発生。
        • メモリリーク(Memory Leak)とは?
          • プログラムやアプリにおけるメモリの不適切な使用状態。
          • 不要なメモリの確保や解放漏れにより、メモリ使用量が増加し続ける状態。
      • 2つ以上のオブジェクトがお互いに強参照(strong reference)を持ち、相互に解放されなくなる状態を指す。
        • 強参照とは?
          • オブジェクトが他のオブジェクトを所有することを意味する。
          • 参照カウントが増加し、オブジェクトが解放されない限り、メモリ上に保持され続ける。
          • 強参照がデフォルト。
      • 循環参照が発生すると?
        • オブジェクトが互いに解放されなくなり、メモリの解放が行われない。
        • アプリのメモリ使用量が増加し続け、最終的にメモリリークが発生。
        • メモリリークが継続すると?
          • アプリのパフォーマンス低下やクラッシュの原因となる。
      • 循環参照は相互に強参照を持つ場合に発生する。
    • 弱参照(weak reference)とは?
      • 参照カウントを増加させず、参照先オブジェクトが解放されると、自動的にnilになり、循環参照を解消するのに役立つ。

2023年1月8日日曜日

2個目の個人開発アプリ、リリースしました!

この年末年始で個人開発アプリ、2個目を無事にリリースしました!

開発環境

  • Xcode 14.2
  • SwiftUI
  • MacBook Air M1 メモリ8G

開発期間

 約6日間、合計40時間程度
 (リジェクト対応含む)

アプリコンセプト

 アプリ起動後簡単に、一定時間毎に通知するタイマーを設定できる

アプリ開発背

 つい最近、こたつを朝からつけっぱなしで外出して夕方に気がつき、妻に叱られたので「スマホのアラーム機能をわざわざ設定するのも面倒だよなぁ・・・」と思い、「じゃあアプリ起動するだけで通知できるようなアプリを作ればいいじゃん!」ってことで開発しました!
他の学習で行き詰まっており、息抜きも兼ねてです笑

想定するユーザー

 こたつやストーブを消し忘れやすい人たち(私)

実装した機能

  • UserNotificationを用いた通知機能(アプリ起動中でもバックグラウンドでも通知)
  • UserDefaulsを用いた内部データ保存機能
  • Timer.scheduledTimerを用いたカウントダウン機能
  • NavigationStackを用いた画面遷移(かなり特殊に感じました・・・)
  • 通知が許可されていない場合に表示する、アラート機能(設定画面への遷移含む)
  • GoogleAdmobを用いたインタースティシャル(全画面)広告表示機能

アプリ画像





アプリURL

 もしよかったら、ダウンロードしてみてください!

このアプリの今後について

 特にありませんが、機能改修希望や不具合ありましたら、ご連絡いただければ対応考てます!

flutterについて、学んだことなど

Swiftについて学んできたため、つい比較してしまいがちです。 SwiftUIと比較して、書いてみました。 似ているようで似ていない flutterには、SwiftUIにおける「View」という概念が、「Widget」と呼ばれるものになる SwiftUIのようにWidgetの中に...