Swift転職なら=>【LevTech】
↑クリックして拡大
↑クリックして拡大
↑クリックして拡大
↑クリックして拡大

頭痛が減ったので共有です!

rebuild.fmを応援しています!

HOME > メモリの動きとポインタ

メモリの動きとポインタ

Swiftとポインターはあまり縁がないのかなと思っていたのですが、開発を進めていると 時々このUnsafePointerの名前を見ることがあります。本日はこのPointerが何を表しているかを調査してみます。

参考:SwiftでUnsafePointerなどのポインタを扱う
参考:Swift - UnsafePointerと上手に付き合う
参考:SwiftコードとC関数との間でのデータ変換について
参考:Swiftでポインタが指している値にアクセス

やってみた

資料をみているとUnsafePointerやCOpaquePointerはC言語等との連携時に必要(?)なようです。メモリ管理が必須なC言語なので、 Swiftで利用した場合Swift側でC言語と同じようにメモリを扱わないといけない、そういう流れなのかと理解しています。

さて、Pointerですが、 クラスのポインタを別クラスで保存して、その又別クラスで読み込むような場合はどうしたらよいかと調べていたのですがCMutableVoidPointerえるのかな?少し調査してみます。


let test = "swift-salaryman";
var p = &test;

こんな感じに&をつければよいのかな、と思ったけどエラー。

サンプル画像

よくわからなくなってきました、普通に変数にいれると元のクラスのメモリをそのまま渡すのでしょうか。基本のところですよね、、、


import UIKit

class ViewController: UIViewController {
    
    var test1:UIViewController = UIViewController();
    var test2:UIViewController = UIViewController();
    var test3:UIViewController = UIViewController();
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        test1 = self;
        test2 = self;
        test3 = self;
        println(test1);
        println(test2);
        println(test3);
    }    
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}

こんな感じにtest1,2,3の変数にselfを直接いれてそれぞれのメモリ参照のアドレスを比較してみました。

サンプル画像

メモリの場所は違うのかなぁ〜とか思っていましたが、一緒なんですね。特にポインタを意識しなくても参照を渡している、無意識に利用していましたがあらためて確認すると納得できました。

まとめ

タイトルのUnsafePointerを調べる予定が方向が変わってしまいましたが、改めてメモリの動きを少し感じました。 C言語開発のプログラマーの方からは批判されるかと思うのですが、VBからプログラムを始めた私はずっとメモリからは目を 背けていましたので、SwiftはそんなVB開発者でも簡単に利用できてしまうとっかかり易い言語であると同時に、 C言語との連携もあるので、一歩進んだSwift開発者になるにはメモリやポインタも改めて勉強しないといけないなぁ、 と思った記事になりました。未熟な内容失礼しました。。。

↓こんな記事もありますよ!

Facebook SDK のAppEventを検証する

さて、AppEventですが、FacebookのAppを利用したログシステムなのかな。ログをカスタマイズして保存して、 それを解析できる、そんな感じなのかなと思っています。 広告利用の為に、インストールされた数やログの解析によってユーザの動作を確認できるようですので細かく設定できるのではと思います。 まずは上記のようにログを保存する、ログを読み込む、ができるのかを検証してみます

LawsonのWifiが6月1日からPCでも利用可能?+Wifi通信状態確認

店員さんに 聞くと「いままではアプリ経由でスマホだけだったんですが、パソコンでもいけるみたいですね〜」とあまり興味がない感じで 答えをいただいたのですが、僕の中ではショッキング。嬉しさで内心ソワソワしておりました。

AppleWatchアプリの申請

AppleWatchアプリの申請が4月1日から始まりましたので、少しトライしてみました。ハマった箇所を共有です。 アプリをArchiveしてValidateしてから2パターンの不具合、あとはアップロードには成功したのですが、Itunesに反映されなかった 現象を共有です
このエントリーをはてなブックマークに追加
右側のFacebookのLikeをクリック頂けると記事更新の際に通知されますので宜しければご利用下さい!